All functions:
  Elements:
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: ARRAY_SIZE
    functionSourceFile: /src/cryptsetup/tests/unit-utils-crypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_SIZE(arr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:51,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:52,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:54,1
    - Dst: memset
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:56,1
    - Dst: memset
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:57,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:58,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:59,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:60,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:61,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:63,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:67,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 70
    functionName: test_parse_mode
    functionSourceFile: /src/cryptsetup/tests/unit-utils-crypt.c
    functionUses: 0
    functionsReached:
    - memset
    - ARRAY_SIZE
    - printf
    - crypt_parse_name_and_mode
    - strcmp
    linkageType: ''
    returnType: int
    signature: int test_parse_mode(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:99,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:100,1
    - Dst: memset
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:101,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:102,1
    - Dst: crypt_parse_hash_integrity_mode
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:103,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:104,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:105,1
    - Dst: memset
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:109,1
    - Dst: crypt_parse_integrity_mode
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:111,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:112,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:114,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:118,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 121
    functionName: test_parse_integrity_mode
    functionSourceFile: /src/cryptsetup/tests/unit-utils-crypt.c
    functionUses: 0
    functionsReached:
    - memset
    - ARRAY_SIZE
    - printf
    - crypt_parse_hash_integrity_mode
    - crypt_parse_integrity_mode
    - strcmp
    linkageType: ''
    returnType: int
    signature: int test_parse_integrity_mode(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:143,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:144,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:145,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:146,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:148,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 155
    functionName: test_cipher_null
    functionSourceFile: /src/cryptsetup/tests/unit-utils-crypt.c
    functionUses: 0
    functionsReached:
    - crypt_is_cipher_null
    - ARRAY_SIZE
    - printf
    linkageType: ''
    returnType: int
    signature: int test_cipher_null(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:186,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:187,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:191,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:193,1
    - Dst: crypt_hex_to_bytes
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:194,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:197,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:198,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:201,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:202,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:203,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:205,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:206,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:209,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:211,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 214
    functionName: test_hex_conversion
    functionSourceFile: /src/cryptsetup/tests/unit-utils-crypt.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - crypt_bytes_to_hex
    - ARRAY_SIZE
    - crypt_safe_free
    - crypt_hex_to_bytes
    - printf
    linkageType: ''
    returnType: int
    signature: int test_hex_conversion(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:219,1
    - Dst: exit
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - msg
    - r
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 221
    functionName: exit_test
    functionSourceFile: /src/cryptsetup/tests/unit-utils-crypt.c
    functionUses: 0
    functionsReached:
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void exit_test(const char *msg, int r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setvbuf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:225,1
    - Dst: getenv
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:228,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:229,1
    - Dst: exit
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:230,1
    - Dst: test_parse_mode
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:233,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:234,1
    - Dst: test_parse_integrity_mode
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:236,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:237,1
    - Dst: test_cipher_null
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:239,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:240,1
    - Dst: test_hex_conversion
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:242,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:243,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/unit-utils-crypt.c:245,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 246
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/unit-utils-crypt.c
    functionUses: 0
    functionsReached:
    - exit
    - setvbuf
    - getenv
    - test_parse_mode
    - test_parse_integrity_mode
    - printf
    - test_hex_conversion
    - test_cipher_null
    - exit_test
    linkageType: ''
    returnType: int
    signature: int main(__attribute__ ((unused)) int argc, __attribute__ ((unused))char
      *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: register_cleanup
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void register_cleanup(void (*cleanup)(void))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:63,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/test_utils.c:64,1
    - Dst: exit
      Src: /src/cryptsetup/tests/test_utils.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - status
    - line
    - func
    argTypes:
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 67
    functionName: check_ok
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _cleanup
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void check_ok(int status, int line, const char *func)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:72,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/test_utils.c:73,1
    - Dst: exit
      Src: /src/cryptsetup/tests/test_utils.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - status
    - line
    - func
    argTypes:
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 76
    functionName: check_ok_return
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _cleanup
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void check_ok_return(int status, int line, const char *func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:81,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/test_utils.c:82,1
    - Dst: exit
      Src: /src/cryptsetup/tests/test_utils.c:83,1
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - status
    - line
    - func
    argTypes:
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: check_ko
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _cleanup
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void check_ko(int status, int line, const char *func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:90,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/test_utils.c:92,1
    - Dst: exit
      Src: /src/cryptsetup/tests/test_utils.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - line
    - func
    - x
    - y
    argTypes:
    - int
    - char*
    - int64_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 94
    functionName: check_equal
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _cleanup
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void check_equal(int line, const char *func, int64_t x, int64_t y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:98,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/test_utils.c:100,1
    - Dst: exit
      Src: /src/cryptsetup/tests/test_utils.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - line
    - func
    - x
    - y
    argTypes:
    - int
    - char*
    - int64_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: check_ge_equal
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _cleanup
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void check_ge_equal(int line, const char *func, int64_t x, int64_t
      y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:107,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/test_utils.c:108,1
    - Dst: exit
      Src: /src/cryptsetup/tests/test_utils.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - line
    - func
    - x
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 111
    functionName: check_null
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _cleanup
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void check_null(int line, const char *func, const void *x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:116,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/test_utils.c:117,1
    - Dst: exit
      Src: /src/cryptsetup/tests/test_utils.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - line
    - func
    - x
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: check_notnull
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _cleanup
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void check_notnull(int line, const char *func, const void *x)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:126,1
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:128,1
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:132,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/test_utils.c:133,1
    - Dst: exit
      Src: /src/cryptsetup/tests/test_utils.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - msg
    - tst
    - func
    - line
    - txt
    argTypes:
    - char*
    - char*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 136
    functionName: xlog
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _cleanup
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void xlog(const char *msg, const char *tst, const char *func, int line,
      const char *txt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:142,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:146,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - device
    - size
    argTypes:
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: t_device_size
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - open
    - ioctl
    - close
    linkageType: ''
    returnType: int
    signature: int t_device_size(const char *device, uint64_t *size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:156,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:160,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - device
    - value
    argTypes:
    - char*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 164
    functionName: t_set_readahead
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - open
    - ioctl
    - close
    linkageType: ''
    returnType: int
    signature: int t_set_readahead(const char *device, unsigned value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _system
      Src: /src/cryptsetup/tests/test_utils.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 169
    functionName: fips_mode
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _system
    linkageType: ''
    returnType: int
    signature: int fips_mode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _system
      Src: /src/cryptsetup/tests/test_utils.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 174
    functionName: fips_mode_kernel
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _system
    linkageType: ''
    returnType: int
    signature: int fips_mode_kernel(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: create_dmdevice_over_device
      Src: /src/cryptsetup/tests/test_utils.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dm_name
    - size
    argTypes:
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 192
    functionName: create_dmdevice_over_loop
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - create_dmdevice_over_device
    linkageType: ''
    returnType: int
    signature: int create_dmdevice_over_loop(const char *dm_name, const uint64_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/test_utils.c:203,1
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:206,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/test_utils.c:209,1
    - Dst: _system
      Src: /src/cryptsetup/tests/test_utils.c:215,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 4
    argNames:
    - dm_name
    - device
    - size
    - offset
    argTypes:
    - char*
    - char*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 216
    functionName: create_dmdevice_over_device
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 1
    functionsReached:
    - snprintf
    - _system
    - t_device_size
    - printf
    linkageType: ''
    returnType: int
    signature: int create_dmdevice_over_device(const char *dm_name, const char *device,
      uint64_t size, uint64_t offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: format
      Src: /src/cryptsetup/tests/test_utils.c:218,1
    - Dst: assert
      Src: /src/cryptsetup/tests/test_utils.c:224,1
    - Dst: assert
      Src: /src/cryptsetup/tests/test_utils.c:225,1
    - Dst: va_start
      Src: /src/cryptsetup/tests/test_utils.c:227,1
    - Dst: vsnprintf
      Src: /src/cryptsetup/tests/test_utils.c:229,1
    - Dst: va_end
      Src: /src/cryptsetup/tests/test_utils.c:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - r_ptr
    - r_remains
    - format
    argTypes:
    - char**
    - size_t*
    - char*
    assertStmts:
    - condition: (r_ptr)
      pos:
        line_end: 224
        line_start: 224
        source_file: /src/cryptsetup/tests/test_utils.c
    - condition: (r_remains)
      pos:
        line_end: 223
        line_start: 223
        source_file: /src/cryptsetup/tests/test_utils.c
    constantsTouched: []
    func_position:
      end: 240
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 240
    functionName: _snprintf
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - format
    - vsnprintf
    - assert
    - va_end
    - va_start
    linkageType: ''
    returnType: int
    signature: int _snprintf(char **r_ptr, size_t *r_remains, const char *format,
      ...)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/test_utils.c:256,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/test_utils.c:265,1
    - Dst: _system
      Src: /src/cryptsetup/tests/test_utils.c:271,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/test_utils.c:274,1
    - Dst: _system
      Src: /src/cryptsetup/tests/test_utils.c:278,1
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:282,1
    - Dst: _snprintf
      Src: /src/cryptsetup/tests/test_utils.c:290,1
    - Dst: _snprintf
      Src: /src/cryptsetup/tests/test_utils.c:296,1
    - Dst: _snprintf
      Src: /src/cryptsetup/tests/test_utils.c:302,1
    - Dst: _snprintf
      Src: /src/cryptsetup/tests/test_utils.c:307,1
    - Dst: _snprintf
      Src: /src/cryptsetup/tests/test_utils.c:313,1
    - Dst: _snprintf
      Src: /src/cryptsetup/tests/test_utils.c:320,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/test_utils.c:335,1
    - Dst: _system
      Src: /src/cryptsetup/tests/test_utils.c:339,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/test_utils.c:342,1
    - Dst: _system
      Src: /src/cryptsetup/tests/test_utils.c:346,1
    - Dst: t_set_readahead
      Src: /src/cryptsetup/tests/test_utils.c:349,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 62
    argCount: 7
    argNames:
    - dm_name
    - dm_device
    - error_device
    - data_offset
    - offset
    - length
    - ei
    argTypes:
    - char*
    - char*
    - char*
    - uint64_t
    - uint64_t
    - uint64_t
    - error_io_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 350
    functionName: dmdevice_error_io
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - t_device_size
    - snprintf
    - _system
    - printf
    - t_set_readahead
    - _snprintf
    linkageType: ''
    returnType: int
    signature: "int dmdevice_error_io(const char *dm_name,\n\tconst char *dm_device,\n\tconst
      char *error_device,\n\tuint64_t data_offset,\n\tuint64_t offset,\n\tuint64_t
      length,\n\terror_io_info ei)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/tests/test_utils.c:361,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/tests/test_utils.c:363,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/tests/test_utils.c:365,1
    - Dst: dm_task_get_info
      Src: /src/cryptsetup/tests/test_utils.c:367,1
    - Dst: dm_get_next_target
      Src: /src/cryptsetup/tests/test_utils.c:372,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/test_utils.c:373,1
    - Dst: strsep
      Src: /src/cryptsetup/tests/test_utils.c:376,1
    - Dst: strsep
      Src: /src/cryptsetup/tests/test_utils.c:377,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/test_utils.c:379,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/test_utils.c:382,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/tests/test_utils.c:386,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 3
    argNames:
    - name
    - buffer
    - buffer_size
    argTypes:
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 389
    functionName: get_key_dm
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - dm_get_next_target
    - dm_task_get_info
    - dm_task_set_name
    - dm_task_run
    - strncpy
    - dm_task_destroy
    - dm_task_create
    - strsep
    - strlen
    - strcmp
    linkageType: ''
    returnType: int
    signature: int get_key_dm(const char *name, char *buffer, unsigned int buffer_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:395,1
    - Dst: write
      Src: /src/cryptsetup/tests/test_utils.c:397,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - name
    - passphrase
    - size
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 403
    functionName: prepare_keyfile
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - open
    - close
    - write
    linkageType: ''
    returnType: int
    signature: int prepare_keyfile(const char *name, const char *passphrase, int size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/cryptsetup/tests/test_utils.c:418,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - key
    - hex
    - size
    argTypes:
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 428
    functionName: crypt_decode_key
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: int
    signature: int crypt_decode_key(char *key, const char *hex, unsigned int size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/cryptsetup/tests/test_utils.c:436,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/test_utils.c:438,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/test_utils.c:444,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/test_utils.c:446,1
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:447,1
    - Dst: strncat
      Src: /src/cryptsetup/tests/test_utils.c:451,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/test_utils.c:454,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/test_utils.c:457,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - level
    - msg
    - usrptr
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 460
    functionName: global_log_callback
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - strncpy
    - strncat
    - printf
    - strlen
    - fprintf
    linkageType: ''
    returnType: void
    signature: void global_log_callback(int level, const char *msg, void *usrptr __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/tests/test_utils.c:464,1
    - Dst: memset
      Src: /src/cryptsetup/tests/test_utils.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 467
    functionName: reset_log
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset_log(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:473,1
    - Dst: system
      Src: /src/cryptsetup/tests/test_utils.c:474,1
    - Dst: printf
      Src: /src/cryptsetup/tests/test_utils.c:475,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - command
    - warn
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 477
    functionName: _system
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 4
    functionsReached:
    - printf
    - system
    linkageType: ''
    returnType: int
    signature: int _system(const char *command, int warn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/tests/test_utils.c:482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 486
    functionName: _keyring_check
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: int _keyring_check(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 6
    argNames:
    - target_maj
    - target_min
    - target_patch
    - actual_maj
    - actual_min
    - actual_patch
    argTypes:
    - unsigned
    - unsigned
    - unsigned
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 498
    functionName: t_dm_satisfies_version
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int t_dm_satisfies_version(unsigned target_maj, unsigned target_min,
      unsigned target_patch,\n\t\t\t\t unsigned actual_maj, unsigned actual_min, unsigned
      actual_patch)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/cryptsetup/tests/test_utils.c:505,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:511,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:514,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:517,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:520,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:523,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:526,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:529,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:534,1
    - Dst: _keyring_check
      Src: /src/cryptsetup/tests/test_utils.c:534,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:537,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:542,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:545,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:548,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:551,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:554,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 38
    argCount: 4
    argNames:
    - dm_version
    - crypt_maj
    - crypt_min
    - crypt_patch
    argTypes:
    - char*
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 556
    functionName: t_dm_set_crypt_compat
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - t_dm_satisfies_version
    - _keyring_check
    - sscanf
    linkageType: ''
    returnType: void
    signature: "void t_dm_set_crypt_compat(const char *dm_version, unsigned crypt_maj,\n\t\t\t\t
      unsigned crypt_min, unsigned crypt_patch)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:573,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:578,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:581,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:584,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:588,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - dm_version
    - verity_maj
    - verity_min
    - verity_patch
    argTypes:
    - char*
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 590
    functionName: t_dm_set_verity_compat
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - t_dm_satisfies_version
    linkageType: ''
    returnType: void
    signature: "void t_dm_set_verity_compat(const char *dm_version __attribute__((unused)),\n\tunsigned
      verity_maj,\n\tunsigned verity_min,\n\tunsigned verity_patch __attribute__((unused)))"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:600,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:603,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:606,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:609,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:612,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:615,1
    - Dst: t_dm_satisfies_version
      Src: /src/cryptsetup/tests/test_utils.c:618,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 4
    argNames:
    - dm_version
    - integrity_maj
    - integrity_min
    - integrity_patch
    argTypes:
    - char*
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 620
    functionName: t_dm_set_integrity_compat
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - t_dm_satisfies_version
    linkageType: ''
    returnType: void
    signature: "void t_dm_set_integrity_compat(const char *dm_version __attribute__((unused)),\n\tunsigned
      integrity_maj __attribute__((unused)),\n\tunsigned integrity_min __attribute__((unused)),\n\tunsigned
      integrity_patch __attribute__((unused)))"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/tests/test_utils.c:629,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/tests/test_utils.c:632,1
    - Dst: dm_task_get_driver_version
      Src: /src/cryptsetup/tests/test_utils.c:635,1
    - Dst: dm_task_get_versions
      Src: /src/cryptsetup/tests/test_utils.c:638,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/test_utils.c:641,1
    - Dst: t_dm_set_crypt_compat
      Src: /src/cryptsetup/tests/test_utils.c:642,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/test_utils.c:646,1
    - Dst: t_dm_set_verity_compat
      Src: /src/cryptsetup/tests/test_utils.c:647,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/test_utils.c:651,1
    - Dst: t_dm_set_integrity_compat
      Src: /src/cryptsetup/tests/test_utils.c:652,1
    - Dst: VOIDP_CAST
      Src: /src/cryptsetup/tests/test_utils.c:657,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/tests/test_utils.c:663,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 622
    functionDepth: 2
    functionLinenumber: 622
    functionLinenumberEnd: 666
    functionName: t_dm_check_versions
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - dm_task_get_driver_version
    - dm_task_run
    - VOIDP_CAST
    - t_dm_set_integrity_compat
    - dm_task_destroy
    - dm_task_create
    - t_dm_set_crypt_compat
    - dm_task_get_versions
    - strcmp
    - t_dm_set_verity_compat
    linkageType: ''
    returnType: int
    signature: int t_dm_check_versions(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 668
    functionDepth: 0
    functionLinenumber: 668
    functionLinenumberEnd: 671
    functionName: t_dm_crypt_keyring_support
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int t_dm_crypt_keyring_support(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 677
    functionName: t_dm_crypt_cpu_switch_support
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int t_dm_crypt_cpu_switch_support(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 682
    functionName: t_dm_crypt_discard_support
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int t_dm_crypt_discard_support(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 687
    functionName: t_dm_integrity_resize_support
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int t_dm_integrity_resize_support(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 692
    functionName: t_dm_integrity_recalculate_support
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int t_dm_integrity_recalculate_support(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 697
    functionName: t_dm_capi_string_supported
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int t_dm_capi_string_supported(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/tests/test_utils.c:722,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/tests/test_utils.c:722,1
    - Dst: major
      Src: /src/cryptsetup/tests/test_utils.c:723,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - loop
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 727
    functionName: loop_device
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - S_ISBLK
    - major
    - stat
    linkageType: ''
    returnType: int
    signature: int loop_device(const char *loop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/cryptsetup/tests/test_utils.c:736,1
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:738,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:742,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:744,1
    - Dst: strdup
      Src: /src/cryptsetup/tests/test_utils.c:745,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:747,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 729
    functionDepth: 0
    functionLinenumber: 729
    functionLinenumberEnd: 751
    functionName: crypt_loop_get_device_old
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - ioctl
    - close
    - strdup
    - open
    - sprintf
    linkageType: ''
    returnType: char
    signature: char *crypt_loop_get_device_old(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:759,1
    - Dst: crypt_loop_get_device_old
      Src: /src/cryptsetup/tests/test_utils.c:761,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:763,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:765,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:768,1
    - Dst: sprintf
      Src: /src/cryptsetup/tests/test_utils.c:770,1
    - Dst: stat
      Src: /src/cryptsetup/tests/test_utils.c:773,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/tests/test_utils.c:773,1
    - Dst: strdup
      Src: /src/cryptsetup/tests/test_utils.c:776,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 753
    functionDepth: 0
    functionLinenumber: 753
    functionLinenumberEnd: 777
    functionName: crypt_loop_get_device
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - ioctl
    - close
    - strdup
    - crypt_loop_get_device_old
    - stat
    - open
    - S_ISBLK
    - sprintf
    linkageType: ''
    returnType: char
    signature: char *crypt_loop_get_device(void)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:789,1
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:792,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/test_utils.c:801,1
    - Dst: crypt_loop_get_device
      Src: /src/cryptsetup/tests/test_utils.c:807,1
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:811,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:814,1
    - Dst: free
      Src: /src/cryptsetup/tests/test_utils.c:816,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:819,1
    - Dst: free
      Src: /src/cryptsetup/tests/test_utils.c:828,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:831,1
    - Dst: crypt_loop_get_device
      Src: /src/cryptsetup/tests/test_utils.c:839,1
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:843,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:846,1
    - Dst: free
      Src: /src/cryptsetup/tests/test_utils.c:849,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:852,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:857,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:858,1
    - Dst: memset
      Src: /src/cryptsetup/tests/test_utils.c:865,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:866,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:868,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:876,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:878,1
    - Dst: free
      Src: /src/cryptsetup/tests/test_utils.c:880,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 90
    argCount: 5
    argNames:
    - loop
    - file
    - offset
    - autoclear
    - readonly
    argTypes:
    - char**
    - char*
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 779
    functionDepth: 0
    functionLinenumber: 779
    functionLinenumberEnd: 884
    functionName: loop_attach
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - memset
    - free
    - ioctl
    - close
    - crypt_loop_get_device
    - strncpy
    - open
    linkageType: ''
    returnType: int
    signature: "int loop_attach(char **loop, const char *file, int offset,\n\t\t      int
      autoclear, int *readonly)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:890,1
    - Dst: ioctl
      Src: /src/cryptsetup/tests/test_utils.c:894,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:897,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - loop
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 899
    functionName: loop_detach
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - open
    - ioctl
    - close
    linkageType: ''
    returnType: int
    signature: int loop_detach(const char *loop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/tests/test_utils.c:907,1
    - Dst: stat
      Src: /src/cryptsetup/tests/test_utils.c:911,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/tests/test_utils.c:911,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - name
    - devno
    argTypes:
    - char*
    - dev_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 917
    functionName: t_get_devno
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - S_ISBLK
    - snprintf
    - stat
    linkageType: ''
    returnType: int
    signature: int t_get_devno(const char *name, dev_t *devno)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/test_utils.c:924,1
    - Dst: read
      Src: /src/cryptsetup/tests/test_utils.c:926,1
    - Dst: close
      Src: /src/cryptsetup/tests/test_utils.c:927,1
    - Dst: sscanf
      Src: /src/cryptsetup/tests/test_utils.c:932,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - sysfs_path
    - value
    argTypes:
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 919
    functionDepth: 0
    functionLinenumber: 919
    functionLinenumberEnd: 936
    functionName: _read_uint64
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - open
    - sscanf
    - close
    - read
    linkageType: ''
    returnType: int
    signature: int _read_uint64(const char *sysfs_path, uint64_t *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/tests/test_utils.c:942,1
    - Dst: _read_uint64
      Src: /src/cryptsetup/tests/test_utils.c:945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - major
    - minor
    - value
    - attr
    argTypes:
    - int
    - int
    - uint64_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 946
    functionName: _sysfs_get_uint64
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - _read_uint64
    - snprintf
    linkageType: ''
    returnType: int
    signature: int _sysfs_get_uint64(int major, int minor, uint64_t *value, const
      char *attr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _sysfs_get_uint64
      Src: /src/cryptsetup/tests/test_utils.c:950,1
    - Dst: major
      Src: /src/cryptsetup/tests/test_utils.c:950,1
    - Dst: minor
      Src: /src/cryptsetup/tests/test_utils.c:950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - devno
    - retval
    argTypes:
    - dev_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 948
    functionDepth: 0
    functionLinenumber: 948
    functionLinenumberEnd: 955
    functionName: t_device_size_by_devno
    functionSourceFile: /src/cryptsetup/tests/test_utils.c
    functionUses: 0
    functionsReached:
    - major
    - minor
    - _sysfs_get_uint64
    linkageType: ''
    returnType: int
    signature: int t_device_size_by_devno(dev_t devno, uint64_t *retval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/cryptsetup/tests/fake_systemd_tpm_path.c:11,1
    - Dst: strdup
      Src: /src/cryptsetup/tests/fake_systemd_tpm_path.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ret
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 19
    functionName: tpm2_find_device_auto
    functionSourceFile: /src/cryptsetup/tests/fake_systemd_tpm_path.c
    functionUses: 0
    functionsReached:
    - getenv
    - strdup
    linkageType: ''
    returnType: int
    signature: int tpm2_find_device_auto(char **ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-wipe.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: usage
    functionSourceFile: /src/cryptsetup/tests/unit-wipe.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtoull
      Src: /src/cryptsetup/tests/unit-wipe.c:32,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - arg
    - u64
    argTypes:
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 41
    functionName: parse_u64
    functionSourceFile: /src/cryptsetup/tests/unit-wipe.c
    functionUses: 0
    functionsReached:
    - strtoull
    linkageType: ''
    returnType: bool
    signature: bool parse_u64(const char *arg, uint64_t *u64)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/cryptsetup/tests/unit-wipe.c:48,1
    - Dst: stat
      Src: /src/cryptsetup/tests/unit-wipe.c:52,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-wipe.c:53,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-wipe.c:58,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-wipe.c:60,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-wipe.c:62,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-wipe.c:65,1
    - Dst: parse_u64
      Src: /src/cryptsetup/tests/unit-wipe.c:69,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-wipe.c:70,1
    - Dst: parse_u64
      Src: /src/cryptsetup/tests/unit-wipe.c:74,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-wipe.c:75,1
    - Dst: parse_u64
      Src: /src/cryptsetup/tests/unit-wipe.c:79,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-wipe.c:80,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-wipe.c:85,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-wipe.c:88,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 94
    functionName: parse_input_params
    functionSourceFile: /src/cryptsetup/tests/unit-wipe.c
    functionUses: 0
    functionsReached:
    - parse_u64
    - usage
    - stat
    - strcmp
    - fprintf
    linkageType: ''
    returnType: bool
    signature: bool parse_input_params(int argc, char **argv)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/cryptsetup/tests/unit-wipe.c:102,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-wipe.c:103,1
    - Dst: exit
      Src: /src/cryptsetup/tests/unit-wipe.c:104,1
    - Dst: parse_input_params
      Src: /src/cryptsetup/tests/unit-wipe.c:108,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/unit-wipe.c:111,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-wipe.c:113,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/unit-wipe.c:117,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tests/unit-wipe.c:119,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-wipe.c:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 125
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/unit-wipe.c
    functionUses: 0
    functionsReached:
    - exit
    - parse_input_params
    - crypt_free
    - getenv
    - printf
    - crypt_wipe
    - crypt_init
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/cryptsetup/tests/api-test-2.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 175
    functionName: cpus_online
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: unsigned
    signature: unsigned cpus_online(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/cryptsetup/tests/api-test-2.c:179,1
    - Dst: sysconf
      Src: /src/cryptsetup/tests/api-test-2.c:180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 192
    functionName: adjusted_pbkdf_memory
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t adjusted_pbkdf_memory(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: _min
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned _min(unsigned a, unsigned b)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:214,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:216,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tests/api-test-2.c:217,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:221,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tests/api-test-2.c:223,1
    - Dst: DIV_ROUND_UP_MODULO
      Src: /src/cryptsetup/tests/api-test-2.c:236,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 5
    argNames:
    - metadata_device
    - alignpayload_sec
    - sector_size
    - r_header_size
    - r_payload_offset
    argTypes:
    - int
    - unsigned int
    - unsigned int
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 245
    functionName: get_luks2_offsets
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_free
    - DIV_ROUND_UP_MODULO
    - crypt_init
    - crypt_get_data_offset
    - crypt_format
    linkageType: ''
    returnType: int
    signature: "int get_luks2_offsets(int metadata_device,\n\t\t\t    unsigned int
      alignpayload_sec,\n\t\t\t    unsigned int sector_size,\n\t\t\t    uint64_t *r_header_size,\n\t\t\t
      \   uint64_t *r_payload_offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_pbkdf_default
      Src: /src/cryptsetup/tests/api-test-2.c:249,1
    - Dst: crypt_get_pbkdf_default
      Src: /src/cryptsetup/tests/api-test-2.c:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 267
    functionName: get_luks_pbkdf_defaults
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_get_pbkdf_default
    linkageType: ''
    returnType: bool
    signature: bool get_luks_pbkdf_defaults(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:271,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: _remove_keyfiles
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - remove
    linkageType: ''
    returnType: void
    signature: void _remove_keyfiles(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:287,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:288,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:290,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:291,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:293,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:294,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:296,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:297,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:299,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:300,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:302,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:303,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:305,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:306,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 309
    functionName: _cleanup_dmdevices
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - _system
    - stat
    linkageType: ''
    returnType: void
    signature: void _cleanup_dmdevices(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/cryptsetup/tests/api-test-2.c:316,1
    - Dst: mkstemp
      Src: /src/cryptsetup/tests/api-test-2.c:320,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:321,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test-2.c:324,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test-2.c:325,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:328,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test-2.c:331,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test-2.c:332,1
    - Dst: strdup
      Src: /src/cryptsetup/tests/api-test-2.c:334,1
    - Dst: mkstemp
      Src: /src/cryptsetup/tests/api-test-2.c:338,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:339,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test-2.c:342,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test-2.c:343,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:346,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:349,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:350,1
    - Dst: t_set_readahead
      Src: /src/cryptsetup/tests/api-test-2.c:352,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:353,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:355,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test-2.c:356,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test-2.c:357,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:359,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test-2.c:360,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test-2.c:361,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:363,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:365,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:367,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:369,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test-2.c:370,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test-2.c:371,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:373,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test-2.c:374,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test-2.c:375,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:377,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:378,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test-2.c:379,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test-2.c:380,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:382,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:384,1
    - Dst: t_dm_check_versions
      Src: /src/cryptsetup/tests/api-test-2.c:387,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:390,1
    - Dst: fips_mode
      Src: /src/cryptsetup/tests/api-test-2.c:392,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:394,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/tests/api-test-2.c:397,1
    - Dst: get_luks_pbkdf_defaults
      Src: /src/cryptsetup/tests/api-test-2.c:399,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 405
    functionName: _setup
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - mkstemp
    - snprintf
    - _system
    - crypt_set_log_callback
    - t_dm_check_versions
    - strdup
    - printf
    - fips_mode
    - get_luks_pbkdf_defaults
    - close
    - t_set_readahead
    - loop_attach
    linkageType: ''
    returnType: int
    signature: int _setup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 416
    functionName: set_fast_pbkdf
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_set_pbkdf_type
    linkageType: ''
    returnType: int
    signature: int set_fast_pbkdf(struct crypt_device *_cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - type
    - description
    - payload
    - plen
    - keyring
    argTypes:
    - char*
    - char*
    - void*
    - size_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 422
    functionName: add_key
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t add_key(const char *type, const char *description, const
      void *payload, size_t plen, key_serial_t keyring)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - keyring
    argTypes:
    - key_serial_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 427
    functionName: keyctl_unlink
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t keyctl_unlink(key_serial_t key, key_serial_t keyring)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - keyring
    argTypes:
    - key_serial_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 432
    functionName: keyctl_link
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t keyctl_link(key_serial_t key, key_serial_t keyring)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - id
    - payload
    - plen
    argTypes:
    - key_serial_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: keyctl_update
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: long
    signature: long keyctl_update(key_serial_t id, const void *payload, size_t plen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - id
    - buffer
    - buflen
    argTypes:
    - key_serial_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 442
    functionName: keyctl_read
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: long
    signature: long keyctl_read(key_serial_t id, char *buffer, size_t buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - type
    - description
    - callout_info
    - keyring
    argTypes:
    - char*
    - char*
    - char*
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 450
    functionName: request_key
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t request_key(const char *type,\n\tconst char *description,\n\tconst
      char *callout_info,\n\tkey_serial_t keyring)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:460,1
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:465,1
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:467,1
    - Dst: syscall
      Src: /src/cryptsetup/tests/api-test-2.c:469,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 6
    argNames:
    - type
    - description
    - payload
    - plen
    - keyring
    - perm
    argTypes:
    - char*
    - char*
    - void*
    - size_t
    - key_serial_t
    - key_perm_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 472
    functionName: add_key_set_perm
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t add_key_set_perm(const char *type, const char *description,
      const void *payload, size_t plen, key_serial_t keyring, key_perm_t perm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test-2.c:479,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:479,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _cd
    - segment
    - type
    argTypes:
    - struct crypt_device*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 483
    functionName: _kernel_key_by_segment_and_type
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - request_key
    - snprintf
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t _kernel_key_by_segment_and_type(struct crypt_device *_cd,
      int segment,\n\t\t\t\t\t\t    const char* type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _cd
    - segment
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: _kernel_key_by_segment
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - _kernel_key_by_segment_and_type
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t _kernel_key_by_segment(struct crypt_device *_cd, int segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _kernel_key_by_segment
      Src: /src/cryptsetup/tests/api-test-2.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _cd
    - segment
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 490
    functionDepth: 3
    functionLinenumber: 490
    functionLinenumberEnd: 493
    functionName: _volume_key_in_keyring
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - _kernel_key_by_segment
    linkageType: ''
    returnType: int
    signature: int _volume_key_in_keyring(struct crypt_device *_cd, int segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:498,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - key_description
    - keyring
    - type
    argTypes:
    - char*
    - key_serial_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 504
    functionName: _drop_keyring_key_from_keyring_name
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - request_key
    - keyctl_unlink
    linkageType: ''
    returnType: int
    signature: int _drop_keyring_key_from_keyring_name(const char *key_description,
      key_serial_t keyring, const char* type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:509,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - _cd
    - segment
    - keyring
    - type
    argTypes:
    - struct crypt_device*
    - int
    - key_serial_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 506
    functionDepth: 2
    functionLinenumber: 506
    functionLinenumberEnd: 515
    functionName: _drop_keyring_key_from_keyring_type
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - keyctl_unlink
    - _kernel_key_by_segment_and_type
    linkageType: ''
    returnType: int
    signature: "int _drop_keyring_key_from_keyring_type(struct crypt_device *_cd,
      int segment,\n\t\t\t\t\t       key_serial_t keyring, const char* type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _drop_keyring_key_from_keyring_type
      Src: /src/cryptsetup/tests/api-test-2.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _cd
    - segment
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 517
    functionDepth: 3
    functionLinenumber: 517
    functionLinenumberEnd: 520
    functionName: _drop_keyring_key
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - _drop_keyring_key_from_keyring_type
    linkageType: ''
    returnType: int
    signature: int _drop_keyring_key(struct crypt_device *_cd, int segment)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:527,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:528,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:532,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:533,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:535,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:536,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:538,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:539,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test-2.c:541,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:542,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:544,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test-2.c:546,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test-2.c:547,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test-2.c:549,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test-2.c:550,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test-2.c:552,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test-2.c:553,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test-2.c:555,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test-2.c:556,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test-2.c:558,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test-2.c:559,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test-2.c:561,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test-2.c:562,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test-2.c:564,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test-2.c:565,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:567,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:568,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:569,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:570,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:573,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:575,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:577,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:578,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:579,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:580,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:581,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:582,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:583,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test-2.c:585,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test-2.c:587,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test-2.c:588,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test-2.c:589,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test-2.c:590,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test-2.c:591,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test-2.c:592,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test-2.c:593,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test-2.c:594,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test-2.c:595,1
    - Dst: strtoul
      Src: /src/cryptsetup/tests/api-test-2.c:602,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:604,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:607,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:609,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 611
    functionName: _cleanup
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 8
    functionsReached:
    - free
    - keyctl_unlink
    - request_key
    - _system
    - _remove_keyfiles
    - _cleanup_dmdevices
    - strtoul
    - remove
    - stat
    - loop_device
    - loop_detach
    - CRYPT_FREE
    linkageType: ''
    returnType: void
    signature: void _cleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/cryptsetup/tests/api-test-2.c:621,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:624,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - _cd
    - token
    - buffer
    - buffer_len
    - usrptr
    argTypes:
    - struct crypt_device*
    - int
    - char**
    - size_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 627
    functionName: test_open
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - strlen
    - strdup
    linkageType: ''
    returnType: int
    signature: "int test_open(struct crypt_device *_cd __attribute__((unused)),\n\tint
      token __attribute__((unused)),\n\tchar **buffer,\n\tsize_t *buffer_len,\n\tvoid
      *usrptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/cryptsetup/tests/api-test-2.c:635,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:638,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - _cd
    - token
    - buffer
    - buffer_len
    - usrptr
    argTypes:
    - struct crypt_device*
    - int
    - char**
    - size_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 641
    functionName: test_open_pass
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - strlen
    - strdup
    linkageType: ''
    returnType: int
    signature: "int test_open_pass(struct crypt_device *_cd __attribute__((unused)),\n\tint
      token __attribute__((unused)),\n\tchar **buffer,\n\tsize_t *buffer_len,\n\tvoid
      *usrptr __attribute__((unused)))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/cryptsetup/tests/api-test-2.c:649,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:652,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - _cd
    - token
    - buffer
    - buffer_len
    - usrptr
    argTypes:
    - struct crypt_device*
    - int
    - char**
    - size_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 655
    functionName: test_open_pass1
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - strlen
    - strdup
    linkageType: ''
    returnType: int
    signature: "int test_open_pass1(struct crypt_device *_cd __attribute__((unused)),\n\tint
      token __attribute__((unused)),\n\tchar **buffer,\n\tsize_t *buffer_len,\n\tvoid
      *usrptr __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/cryptsetup/tests/api-test-2.c:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _cd
    - json
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 660
    functionName: test_validate
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: int
    signature: int test_validate(struct crypt_device *_cd __attribute__((unused)),
      const char *json)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:667,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:667,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:668,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:668,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:669,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:669,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:670,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:670,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:670,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:671,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:671,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:671,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:672,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:672,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:672,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:673,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:673,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:674,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:674,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:675,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:675,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:679,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:679,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:679,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:680,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:680,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:680,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:681,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:681,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:681,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:682,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:682,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:682,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:683,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:683,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:684,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:684,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:685,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:685,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:690,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:691,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:691,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:691,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:692,1
    - Dst: _drop_keyring_key
      Src: /src/cryptsetup/tests/api-test-2.c:692,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:693,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:693,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:693,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:694,1
    - Dst: _drop_keyring_key
      Src: /src/cryptsetup/tests/api-test-2.c:694,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:695,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:695,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:695,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:696,1
    - Dst: _drop_keyring_key
      Src: /src/cryptsetup/tests/api-test-2.c:696,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:697,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:697,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:697,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:698,1
    - Dst: _volume_key_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:698,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:699,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:699,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:699,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:700,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:700,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:701,1
    - Dst: _volume_key_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:701,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:705,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:705,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:705,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:706,1
    - Dst: _drop_keyring_key
      Src: /src/cryptsetup/tests/api-test-2.c:706,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:707,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:707,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:707,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:708,1
    - Dst: _drop_keyring_key
      Src: /src/cryptsetup/tests/api-test-2.c:708,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:709,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:709,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:709,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:710,1
    - Dst: _drop_keyring_key
      Src: /src/cryptsetup/tests/api-test-2.c:710,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:711,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:711,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:711,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:712,1
    - Dst: _volume_key_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:712,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:713,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:713,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:713,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:714,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:714,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:715,1
    - Dst: _volume_key_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:715,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:721,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:721,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test-2.c:721,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:722,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:722,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test-2.c:722,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:723,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:723,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:723,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:724,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:724,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:725,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:725,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:727,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:727,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:727,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:728,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test-2.c:728,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:729,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:729,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:730,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:730,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:731,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:731,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:732,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:732,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:735,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test-2.c:735,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:736,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:736,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:738,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 662
    functionDepth: 4
    functionLinenumber: 662
    functionLinenumberEnd: 739
    functionName: UseLuks2Device
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - t_dm_crypt_keyring_support
    - crypt_load
    - _volume_key_in_keyring
    - _drop_keyring_key
    - GE_
    - crypt_volume_key_verify
    - crypt_get_volume_key_size
    - crypt_status
    - strlen
    - strcmp
    - FAIL_
    - crypt_volume_key_get
    - EQ_
    - crypt_get_data_offset
    - OK_
    - CRYPT_FREE
    - crypt_get_uuid
    - crypt_deactivate
    - crypt_get_cipher
    - crypt_get_cipher_mode
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void UseLuks2Device(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:749,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:749,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:750,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:750,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:751,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:751,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:751,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:753,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:755,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:756,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:756,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:757,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:761,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:762,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:762,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:763,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:765,1
    - Dst: _volume_key_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:765,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:767,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:767,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:769,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:769,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:769,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:770,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:770,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:770,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:771,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:771,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:771,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:773,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:773,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:774,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:776,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:776,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:776,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:777,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:777,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:778,1
    - Dst: crypt_resume_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:778,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:779,1
    - Dst: crypt_resume_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:779,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:780,1
    - Dst: crypt_resume_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:780,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:781,1
    - Dst: crypt_resume_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:781,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:782,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:782,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:783,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:786,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:786,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:787,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:787,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:788,1
    - Dst: crypt_set_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:788,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:789,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:789,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:789,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:790,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:793,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:793,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:794,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:794,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:795,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:795,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:796,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:796,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:796,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:797,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:799,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test-2.c:799,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:800,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:800,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:800,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:803,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:803,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test-2.c:805,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:806,1
    - Dst: crypt_resume_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:806,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:807,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:807,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:807,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:808,1
    - Dst: crypt_resume_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:808,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:809,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:809,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:810,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:812,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:812,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:813,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:813,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:816,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:816,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:817,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:817,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:818,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:818,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:819,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:819,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:819,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:820,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:820,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:821,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:821,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:822,1
    - Dst: crypt_resume_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:822,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:823,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:823,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:824,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:825,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:825,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:826,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:826,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:826,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:827,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:827,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:828,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:829,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:829,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:830,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test-2.c:832,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:833,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 741
    functionDepth: 4
    functionLinenumber: 741
    functionLinenumberEnd: 834
    functionName: SuspendDevice
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - memset
    - crypt_load
    - _volume_key_in_keyring
    - crypt_keyslot_add_by_volume_key
    - crypt_resume_by_volume_key
    - crypt_init_by_name_and_header
    - crypt_set_data_device
    - crypt_resume_by_keyfile
    - _cleanup_dmdevices
    - crypt_suspend
    - strlen
    - set_fast_pbkdf
    - crypt_resume_by_keyfile_offset
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - FAIL_
    - crypt_resume_by_passphrase
    - crypt_init_by_name
    - EQ_
    - crypt_volume_key_get
    - OK_
    - CRYPT_FREE
    - crypt_deactivate
    - _remove_keyfiles
    - crypt_activate_by_passphrase
    - printf
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void SuspendDevice(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:856,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:868,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:868,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:869,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:869,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:872,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:872,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:873,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:873,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:874,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:874,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:878,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:878,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:880,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:880,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:881,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:884,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:884,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:885,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:885,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:886,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:886,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:887,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:887,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:888,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:894,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:894,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:895,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:895,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:896,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:896,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:897,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:897,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:898,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:902,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:902,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:903,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:903,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:904,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:904,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:905,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:905,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:906,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:906,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:907,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:910,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:910,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:911,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:911,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:912,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:912,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:913,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:913,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:914,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:917,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:917,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:918,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:918,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:919,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:919,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:920,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:920,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:921,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:921,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:922,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:922,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:923,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:923,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:924,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:924,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:925,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:931,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:931,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:932,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:932,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:933,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:933,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:934,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:934,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:937,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:937,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:938,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:938,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:939,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:939,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:940,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:943,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:943,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:944,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:944,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:945,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:945,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:946,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:946,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:947,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:950,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:950,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:951,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:951,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:952,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:952,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:953,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:953,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:954,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:954,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:955,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:955,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:957,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:958,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:958,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:959,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:959,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:961,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:961,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:962,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:962,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:965,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:965,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:967,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:967,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:968,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:968,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:969,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:975,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:975,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:976,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:976,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:977,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:977,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:978,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:978,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:979,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:979,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:979,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:980,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:980,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:980,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:982,1
    - Dst: crypt_keyslot_get_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:982,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:983,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:983,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:985,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:986,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:987,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:989,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:989,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:990,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:991,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:993,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:994,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test-2.c:994,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:995,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:995,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:996,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:996,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:997,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:997,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:998,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1000,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test-2.c:1000,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1001,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1001,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:1002,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:1002,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1003,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:1003,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test-2.c:1003,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1004,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:1004,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test-2.c:1004,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1005,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:1005,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1006,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1006,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1007,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1013,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1013,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1014,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1014,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1015,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1015,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1016,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1016,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1017,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test-2.c:1017,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1018,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1021,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1021,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1022,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1022,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1023,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1023,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1024,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1026,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test-2.c:1026,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1027,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1027,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:1028,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:1028,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1029,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1029,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1030,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1030,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1031,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1031,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1032,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1032,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1033,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test-2.c:1033,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1034,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1038,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1038,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1039,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1039,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1040,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1040,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1043,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test-2.c:1043,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1044,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1044,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1045,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1045,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1046,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1046,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1049,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1049,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1049,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1050,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:1050,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1051,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1051,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1051,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1052,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1052,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1053,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1053,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1055,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1055,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1055,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1056,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:1056,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1056,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1057,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:1057,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1057,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1058,1
    - Dst: crypt_keyslot_add_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:1058,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1059,1
    - Dst: crypt_keyslot_add_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1059,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1060,1
    - Dst: crypt_keyslot_add_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1060,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1061,1
    - Dst: crypt_keyslot_add_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1061,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1062,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:1062,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1062,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1063,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:1063,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1064,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1064,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1065,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1065,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1066,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1066,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1066,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1067,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1067,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1067,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1068,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1068,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1069,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:1069,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1070,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:1070,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1071,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:1071,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1072,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:1072,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1073,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:1073,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1074,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1074,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test-2.c:1075,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1077,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1077,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1077,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1079,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1079,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1079,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1081,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1081,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1081,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1082,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:1082,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1084,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:1084,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1085,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:1085,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1086,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:1086,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1087,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:1087,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1088,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:1088,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1089,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:1089,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1091,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1091,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1091,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1091,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1092,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:1092,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1093,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1093,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1093,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1093,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1094,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:1094,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1095,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1095,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1095,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1096,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1096,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1096,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1096,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1098,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:1098,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1098,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1099,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test-2.c:1099,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1100,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test-2.c:1100,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1102,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:1102,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test-2.c:1102,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1103,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:1103,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test-2.c:1103,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1104,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:1104,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1105,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1105,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1106,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:1106,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/tests/api-test-2.c:1106,1
    - Dst: reset_log
      Src: /src/cryptsetup/tests/api-test-2.c:1108,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1109,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/tests/api-test-2.c:1109,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1110,1
    - Dst: reset_log
      Src: /src/cryptsetup/tests/api-test-2.c:1111,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1113,1
    - Dst: crypt_dump_json
      Src: /src/cryptsetup/tests/api-test-2.c:1113,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1114,1
    - Dst: crypt_dump_json
      Src: /src/cryptsetup/tests/api-test-2.c:1114,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1115,1
    - Dst: reset_log
      Src: /src/cryptsetup/tests/api-test-2.c:1116,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1117,1
    - Dst: crypt_dump_json
      Src: /src/cryptsetup/tests/api-test-2.c:1117,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1118,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1118,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1120,1
    - Dst: crypt_set_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:1120,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1121,1
    - Dst: crypt_set_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:1121,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1122,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:1122,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:1122,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1124,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1124,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1125,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:1126,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1131,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1131,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:1132,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1133,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1133,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1134,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1134,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1135,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1137,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1137,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:1138,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1139,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1139,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1140,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1141,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1141,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1142,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1142,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1143,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1143,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1144,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1144,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1144,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1145,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1147,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1147,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1148,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1148,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1149,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1149,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1150,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1150,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1150,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1151,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1151,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1151,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1152,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1154,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1154,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1155,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1155,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1156,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1156,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1157,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1157,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1158,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1158,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1158,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1159,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1159,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1160,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1166,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1166,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1167,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1167,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1168,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1168,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1169,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1169,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1169,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1171,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1172,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1172,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1173,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1173,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1174,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:1174,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1174,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1175,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:1175,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1176,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1176,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1177,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1177,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1177,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1178,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:1180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 249
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 836
    functionDepth: 2
    functionLinenumber: 836
    functionLinenumberEnd: 1181
    functionName: AddDeviceLuks2
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_load
    - crypt_keyslot_add_by_volume_key
    - crypt_header_is_detached
    - crypt_decode_key
    - GE_
    - reset_log
    - crypt_volume_key_verify
    - crypt_keyslot_status
    - crypt_keyslot_get_pbkdf
    - crypt_init_by_name_and_header
    - crypt_set_data_offset
    - crypt_activate_by_keyfile_offset
    - _cleanup_dmdevices
    - crypt_keyslot_destroy
    - crypt_get_volume_key_size
    - crypt_status
    - crypt_get_device_name
    - strlen
    - set_fast_pbkdf
    - strcmp
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - FAIL_
    - crypt_keyslot_change_by_passphrase
    - crypt_volume_key_get
    - EQ_
    - crypt_keyslot_add_by_keyfile_offset
    - memcmp
    - crypt_get_data_offset
    - OK_
    - CRYPT_FREE
    - crypt_activate_by_keyfile
    - crypt_dump_json
    - crypt_get_uuid
    - crypt_deactivate
    - crypt_get_cipher
    - NULL_
    - crypt_dump
    - crypt_get_cipher_mode
    - _remove_keyfiles
    - crypt_set_uuid
    - crypt_set_iteration_time
    - crypt_keyslot_add_by_keyfile
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_type
    linkageType: ''
    returnType: void
    signature: void AddDeviceLuks2(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1201,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1215,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:1215,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1218,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:1218,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1219,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1219,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1220,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1220,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1222,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1222,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1223,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1223,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1224,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1225,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1226,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1226,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1227,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1227,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1228,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1229,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1230,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1230,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1231,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1231,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1232,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1233,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1234,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1234,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1235,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1235,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1236,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1237,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1238,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1238,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1239,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1239,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1240,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1243,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1243,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1244,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1244,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1245,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1245,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1246,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1246,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1246,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1247,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1248,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1248,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1249,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1249,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1250,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1250,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1251,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1252,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1253,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1255,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1255,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1256,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1256,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1257,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1257,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1258,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1259,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1260,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1262,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1262,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1263,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1263,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1264,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1264,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1265,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1265,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1266,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1267,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1268,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1271,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1271,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1272,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1272,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1273,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1273,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1274,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1274,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1275,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1275,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1276,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1278,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1278,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1279,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1279,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1280,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1280,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1281,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1281,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1282,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1285,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1285,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1286,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1286,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1287,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1287,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1288,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1289,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1290,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1292,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1292,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1293,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1293,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1294,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1294,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1295,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1298,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1298,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1299,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1299,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1300,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1300,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1301,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1302,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1303,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1303,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1304,1
    - Dst: sprintf
      Src: /src/cryptsetup/tests/api-test-2.c:1306,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:1307,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1310,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1310,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1311,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1311,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1312,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1312,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1313,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1313,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1314,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test-2.c:1314,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1315,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1316,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1317,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:1317,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1318,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:1320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 94
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1183
    functionDepth: 2
    functionLinenumber: 1183
    functionLinenumberEnd: 1321
    functionName: Luks2MetadataSize
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_keyslot_add_by_volume_key
    - crypt_load
    - crypt_decode_key
    - crypt_set_metadata_size
    - _system
    - sprintf
    - crypt_set_data_offset
    - _cleanup_dmdevices
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - EQ_
    - crypt_get_metadata_size
    - crypt_get_data_offset
    - OK_
    - CRYPT_FREE
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void Luks2MetadataSize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1328,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1328,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1329,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1329,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1330,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1330,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1331,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1331,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1332,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1332,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1333,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1335,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:1335,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1336,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1336,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1337,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1341,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test-2.c:1341,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:1344,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1345,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:1345,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1346,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1346,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1347,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1347,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1348,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1351,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test-2.c:1351,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:1355,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1356,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:1356,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1357,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1357,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1358,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1358,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1359,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1362,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1362,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1363,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1363,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1364,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1364,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1366
    functionName: UseTempVolumes
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_init_by_name
    - FAIL_
    - snprintf
    - crypt_load
    - crypt_deactivate
    - _system
    - crypt_activate_by_volume_key
    - GE_
    - crypt_status
    - crypt_init
    - OK_
    - CRYPT_FREE
    - crypt_format
    linkageType: ''
    returnType: void
    signature: void UseTempVolumes(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1395,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1407,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:1407,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1409,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:1409,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1410,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1410,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1413,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1413,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1414,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1414,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1415,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1415,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1416,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:1416,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1417,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:1417,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1418,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1418,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1419,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1419,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1420,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1432,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1432,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1433,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1433,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1434,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:1434,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1435,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1437,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1437,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1438,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1438,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1442,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1445,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1445,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1446,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:1446,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1447,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1447,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1448,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1449,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1449,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1450,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1450,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1451,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:1451,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1452,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1455,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1455,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1456,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test-2.c:1456,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1457,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:1457,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1459,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:1459,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1460,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1462,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test-2.c:1462,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1463,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:1463,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1465,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:1465,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1466,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1468,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:1470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1368
    functionDepth: 2
    functionLinenumber: 1368
    functionLinenumberEnd: 1471
    functionName: Luks2HeaderRestore
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_load
    - crypt_decode_key
    - crypt_persistent_flags_get
    - GE_
    - crypt_set_pbkdf_type
    - _cleanup_dmdevices
    - crypt_wipe
    - crypt_status
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - EQ_
    - OK_
    - CRYPT_FREE
    - crypt_deactivate
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_header_restore
    linkageType: ''
    returnType: void
    signature: void Luks2HeaderRestore(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1497,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1509,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:1509,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1514,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:1514,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1516,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1516,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1519,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1519,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1520,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test-2.c:1520,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1522,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:1522,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1524,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1524,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1526,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1526,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1528,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1528,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1533,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1533,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1534,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1534,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1535,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1536,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1536,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1537,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1537,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1539,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1539,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1540,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1540,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1541,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/tests/api-test-2.c:1541,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1544,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test-2.c:1544,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1545,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1548,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:1548,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1549,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1549,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1550,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1551,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:1551,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1552,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1552,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1553,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/tests/api-test-2.c:1553,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1556,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1559,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1559,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1560,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1560,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:1561,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:1561,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1562,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1567,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1567,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1568,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1568,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1569,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1571,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1571,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1572,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1572,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1573,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1573,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1574,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1574,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1575,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1578,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:1578,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1579,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:1579,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1580,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1580,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1581,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1581,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1582,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1585,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1585,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1586,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1586,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1587,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1588,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1588,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1589,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1589,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1590,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1590,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1591,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1594,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1594,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1595,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1595,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1596,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1597,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1597,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:1598,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1599,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1599,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1600,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1603,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1603,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1604,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1604,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1605,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:1605,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:1605,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1606,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:1608,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 75
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1609
      start: 1473
    functionDepth: 2
    functionLinenumber: 1473
    functionLinenumberEnd: 1609
    functionName: Luks2HeaderLoad
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_load
    - crypt_header_is_detached
    - crypt_decode_key
    - _system
    - GE_
    - crypt_init_data_device
    - _cleanup_dmdevices
    - crypt_status
    - strlen
    - strcmp
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - EQ_
    - OK_
    - CRYPT_FREE
    - snprintf
    - NULL_
    - crypt_set_iteration_time
    - crypt_get_metadata_device_name
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_type
    linkageType: ''
    returnType: void
    signature: void Luks2HeaderLoad(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1630,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1644,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:1644,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1646,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:1646,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1647,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1647,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1650,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1650,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1651,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1651,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1652,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1652,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1653,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1653,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1653,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1654,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1654,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1654,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1655,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/tests/api-test-2.c:1655,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1656,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1656,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1657,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1660,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1660,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1661,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:1661,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1662,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1662,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1663,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1663,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1664,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1664,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1665,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1665,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1666,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test-2.c:1666,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1667,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1670,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1670,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1671,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1671,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1673,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1673,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1673,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1674,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1674,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1675,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1675,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1676,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test-2.c:1676,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1677,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1679,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1679,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1680,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1680,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1682,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1682,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1682,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1683,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1683,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1684,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1684,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1685,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test-2.c:1688,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1689,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test-2.c:1690,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1691,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1691,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1692,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1692,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1694,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1694,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1694,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1695,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1695,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1696,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1696,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1697,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1699,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1699,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1700,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1700,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1702,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1702,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1702,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1703,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1703,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1704,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1704,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1705,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:1707,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1611
    functionDepth: 2
    functionLinenumber: 1611
    functionLinenumberEnd: 1708
    functionName: Luks2HeaderBackup
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_keyslot_add_by_volume_key
    - crypt_load
    - crypt_header_is_detached
    - crypt_decode_key
    - crypt_header_backup
    - GE_
    - NOTFAIL_
    - _cleanup_dmdevices
    - crypt_status
    - close
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - EQ_
    - OK_
    - CRYPT_FREE
    - loop_attach
    - crypt_deactivate
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_header_restore
    linkageType: ''
    returnType: void
    signature: void Luks2HeaderBackup(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1727,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1739,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:1739,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1742,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:1742,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1743,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:1743,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1744,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1744,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1745,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1745,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1746,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1746,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1747,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1747,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1750,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1750,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1752,1
    - Dst: crypt_volume_key_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:1752,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1753,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1753,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1754,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1754,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1755,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1755,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1756,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1756,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test-2.c:1757,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1758,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1759,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1759,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1761,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1761,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test-2.c:1762,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1763,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1764,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1764,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test-2.c:1765,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1766,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1767,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1767,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1768,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1768,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1769,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1774,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1774,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1775,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1775,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1776,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1776,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1777,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1777,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test-2.c:1778,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1779,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1781,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1781,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test-2.c:1782,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1783,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1784,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1784,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test-2.c:1785,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1786,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:1787,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:1787,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1788,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1788,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1789,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1792,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1792,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1793,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1793,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1795,1
    - Dst: crypt_volume_key_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:1795,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1796,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1796,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:1798,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1799,1
    - Dst: _drop_keyring_key
      Src: /src/cryptsetup/tests/api-test-2.c:1799,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1801,1
    - Dst: _drop_keyring_key
      Src: /src/cryptsetup/tests/api-test-2.c:1801,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1803,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1803,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:1805,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1806,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1806,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1808,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1808,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1810,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1810,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:1811,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1812,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1812,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1814,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1814,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1816,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1816,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:1816,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1817,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1817,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test-2.c:1818,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1819,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1820,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1822,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1822,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1823,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1823,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:1825,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1826,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1826,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1828,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1828,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1829,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1832,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:1832,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:1833,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1834,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1834,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1836,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1836,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1837,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1837,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1838,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1840,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1840,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1841,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1841,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1842,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1842,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1845,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1845,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1846,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1846,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:1846,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1847,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1847,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1849,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1849,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1850,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1850,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1851,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1853,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1853,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1854,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:1854,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1855,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1855,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:1855,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1856,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1856,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1857,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1857,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1858,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1858,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1859,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1861,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1861,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1862,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1862,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1863,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1863,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1864,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1864,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1865,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1865,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1866,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1868,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1868,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1869,1
    - Dst: t_dm_capi_string_supported
      Src: /src/cryptsetup/tests/api-test-2.c:1871,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1872,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1872,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1873,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:1873,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1874,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1874,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1875,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1875,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1876,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:1876,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test-2.c:1877,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1878,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1879,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1879,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1880,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:1883,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 116
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1884
      start: 1710
    functionDepth: 4
    functionLinenumber: 1710
    functionLinenumberEnd: 1884
    functionName: ResizeDeviceLuks2
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - t_dm_crypt_keyring_support
    - crypt_load
    - crypt_decode_key
    - _drop_keyring_key
    - GE_
    - crypt_volume_key_keyring
    - t_device_size
    - crypt_set_pbkdf_type
    - _cleanup_dmdevices
    - crypt_status
    - crypt_resize
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - crypt_init_by_name
    - FAIL_
    - EQ_
    - OK_
    - CRYPT_FREE
    - crypt_get_uuid
    - crypt_deactivate
    - t_dm_capi_string_supported
    - crypt_activate_by_volume_key
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void ResizeDeviceLuks2(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:1902,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:1903,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:1907,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1907,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1908,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1910,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:1910,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1911,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:1911,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1914,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1914,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1915,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1915,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1916,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:1916,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1917,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:1917,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1917,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1918,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:1918,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1919,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:1919,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1920,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:1920,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1921,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1924,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1924,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1925,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1925,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1926,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:1926,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1927,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:1927,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1928,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1928,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1929,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1931,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:1931,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:1933,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1933,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1934,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1937,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1937,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1938,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1938,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1939,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:1939,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1940,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:1940,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1941,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:1941,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1942,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1945,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1945,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1946,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1946,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1947,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:1947,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1948,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:1948,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1949,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1949,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1950,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1952,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:1952,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:1955,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1955,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1956,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:1958,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1958,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1959,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1961,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1961,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1962,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1962,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1963,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:1963,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1964,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:1964,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1965,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:1965,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1966,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:1966,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1967,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:1967,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1968,1
    - Dst: crypt_keyslot_add_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:1968,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1968,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1968,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1969,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:1969,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1970,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1973,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1973,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1974,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1974,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1975,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:1975,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:1976,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1977,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:1977,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1978,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1980,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1980,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1981,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:1981,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1982,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1982,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1983,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1985,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:1985,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1988,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:1988,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1989,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:1989,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1990,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:1990,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:1991,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1992,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:1992,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:1993,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:1995,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:1995,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:1996,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:1998,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:1998,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:1999,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2002,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2002,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2003,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2003,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2004,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:2004,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2005,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:2005,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2006,1
    - Dst: crypt_keyslot_add_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2006,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2006,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2006,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2007,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2010,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2010,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2011,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2011,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2012,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2012,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2013,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2013,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2014,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2019,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2019,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2020,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:2020,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2021,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2021,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2022,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2022,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2022,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2023,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2023,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2023,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2024,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:2024,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2025,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2025,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2026,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:2026,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2027,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2027,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2028,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2030,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:2030,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:2032,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2032,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2033,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2035,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2035,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2036,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2036,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2037,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2037,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2038,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2038,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2039,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:2040,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:2042,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 107
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 1886
    functionDepth: 2
    functionLinenumber: 1886
    functionLinenumberEnd: 2044
    functionName: TokenActivationByKeyring
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - t_dm_crypt_keyring_support
    - crypt_keyslot_add_by_volume_key
    - crypt_load
    - NOTFAIL_
    - _cleanup_dmdevices
    - crypt_keyslot_add_by_passphrase
    - crypt_keyslot_destroy
    - crypt_token_assign_keyslot
    - strlen
    - set_fast_pbkdf
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - crypt_activate_by_token
    - EQ_
    - crypt_token_json_set
    - OK_
    - CRYPT_FREE
    - keyctl_unlink
    - crypt_deactivate
    - crypt_token_luks2_keyring_set
    - add_key
    - printf
    - crypt_init
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void TokenActivationByKeyring(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2110,1
    - Dst: crypt_token_register
      Src: /src/cryptsetup/tests/api-test-2.c:2110,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2111,1
    - Dst: crypt_token_register
      Src: /src/cryptsetup/tests/api-test-2.c:2111,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2113,1
    - Dst: crypt_token_register
      Src: /src/cryptsetup/tests/api-test-2.c:2113,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2115,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:2115,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2116,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:2116,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2119,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2119,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2120,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2120,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2121,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2121,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2122,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2122,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2123,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2123,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2124,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2124,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2125,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2125,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2126,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2126,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2126,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2127,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2127,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2127,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2128,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2128,1
    - Dst: TEST_TOKEN_JSON_INVALID
      Src: /src/cryptsetup/tests/api-test-2.c:2128,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2129,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2129,1
    - Dst: TEST_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2129,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2130,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2130,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2131,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2131,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2132,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2132,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2133,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2133,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2136,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2136,1
    - Dst: TEST_TOKEN1_JSON_INVALID
      Src: /src/cryptsetup/tests/api-test-2.c:2136,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2137,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2137,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2138,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2138,1
    - Dst: TEST_TOKEN1_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2138,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2139,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2139,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2140,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2140,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2141,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2141,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2142,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2142,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2143,1
    - Dst: crypt_token_register
      Src: /src/cryptsetup/tests/api-test-2.c:2143,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2144,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2144,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2145,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2145,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2146,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2146,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2149,1
    - Dst: crypt_token_json_get
      Src: /src/cryptsetup/tests/api-test-2.c:2149,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2152,1
    - Dst: crypt_token_unassign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2152,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2153,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2153,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2154,1
    - Dst: crypt_token_unassign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2154,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2155,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2155,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2156,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2156,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2157,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2157,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2158,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2158,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2159,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2159,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2160,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2160,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2161,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2161,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2162,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2162,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2163,1
    - Dst: crypt_token_json_get
      Src: /src/cryptsetup/tests/api-test-2.c:2163,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2164,1
    - Dst: crypt_token_unassign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2164,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2165,1
    - Dst: crypt_token_unassign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2165,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2168,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:2168,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2168,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2169,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2169,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2170,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2170,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2172,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2172,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2173,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2173,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2175,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2175,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2176,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2176,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2177,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2177,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2178,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2178,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2179,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2179,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2180,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2180,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2181,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2181,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2183,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:2183,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2184,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2184,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2185,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2185,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2186,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2186,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2187,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2187,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:2190,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2191,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2191,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2192,1
    - Dst: _volume_key_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:2192,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2194,1
    - Dst: crypt_volume_key_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:2194,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2196,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2196,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2197,1
    - Dst: crypt_volume_key_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:2197,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2199,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:2199,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2200,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2200,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2201,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2201,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2203,1
    - Dst: crypt_token_luks2_keyring_get
      Src: /src/cryptsetup/tests/api-test-2.c:2203,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2205,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2205,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2206,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2206,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2209,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2209,1
    - Dst: LUKS2_KEYRING_TOKEN_JSON_BAD
      Src: /src/cryptsetup/tests/api-test-2.c:2209,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2210,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2210,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2211,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2211,1
    - Dst: LUKS2_KEYRING_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2211,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2212,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2212,1
    - Dst: LUKS2_KEYRING_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2212,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2213,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:2213,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2214,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2214,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2216,1
    - Dst: crypt_token_luks2_keyring_get
      Src: /src/cryptsetup/tests/api-test-2.c:2216,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2217,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2217,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2219,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2219,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2221,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2221,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2222,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2222,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2224,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2224,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2225,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2225,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2226,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2226,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2227,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2227,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2228,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2228,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2229,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2229,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2232,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2232,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2232,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2232,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2233,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2233,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2234,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2234,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2234,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2235,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2236,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:2236,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2237,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2240,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2240,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2241,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:2241,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2242,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2242,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2243,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2243,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2243,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2244,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:2244,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2244,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2245,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2245,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2245,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2246,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2246,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2246,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2247,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2247,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2247,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2248,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2248,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2248,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2249,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2249,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2249,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2251,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2251,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2252,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2252,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2253,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2253,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2254,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2254,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2257,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2257,1
    - Dst: TEST_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2257,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2260,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2260,1
    - Dst: TEST_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2260,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2263,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2263,1
    - Dst: TEST_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2263,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2266,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2266,1
    - Dst: TEST_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2266,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2269,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2269,1
    - Dst: TEST_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2269,1
    - Dst: crypt_token_max
      Src: /src/cryptsetup/tests/api-test-2.c:2271,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:2272,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2275,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2275,1
    - Dst: TEST_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2275,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2278,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2278,1
    - Dst: TEST_TOKEN_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2278,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2281,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2281,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2282,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2282,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2283,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2283,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2286,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2286,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2287,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2287,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2288,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2288,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2290,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2290,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2292,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2292,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2294,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2294,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2295,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2295,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2297,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2297,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2298,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2298,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2300,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2300,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2301,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2301,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2304,1
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2304,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2305,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:2305,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2306,1
    - Dst: crypt_resume_by_token_pin
      Src: /src/cryptsetup/tests/api-test-2.c:2306,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2307,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:2307,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2308,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2309,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2309,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2310,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2313,1
    - Dst: crypt_token_register
      Src: /src/cryptsetup/tests/api-test-2.c:2313,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2314,1
    - Dst: crypt_token_register
      Src: /src/cryptsetup/tests/api-test-2.c:2314,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2315,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2315,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2316,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:2316,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2317,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2317,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2318,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2318,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2318,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2319,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2319,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2319,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2320,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2320,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2320,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2322,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2322,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2322,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2323,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2323,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2323,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2324,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2324,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2324,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2326,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2326,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2327,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2327,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2329,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2329,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2330,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2330,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2332,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:2332,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2332,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2333,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:2333,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2333,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2335,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2335,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2336,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:2336,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2338,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2338,1
    - Dst: TEST_TOKEN2_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2338,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2339,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2339,1
    - Dst: TEST_TOKEN3_JSON
      Src: /src/cryptsetup/tests/api-test-2.c:2339,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2353,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2353,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2354,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:2354,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2355,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:2355,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2356,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:2356,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2357,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:2357,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:2358,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2360,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:2360,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2361,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:2361,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:2362,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2364,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2366,1
    - Dst: crypt_token_max
      Src: /src/cryptsetup/tests/api-test-2.c:2366,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2367,1
    - Dst: crypt_token_max
      Src: /src/cryptsetup/tests/api-test-2.c:2367,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2368,1
    - Dst: crypt_token_max
      Src: /src/cryptsetup/tests/api-test-2.c:2368,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:2369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 180
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2370
      start: 2046
    functionDepth: 4
    functionLinenumber: 2046
    functionLinenumberEnd: 2370
    functionName: Tokens
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - t_dm_crypt_keyring_support
    - crypt_keyslot_add_by_volume_key
    - _volume_key_in_keyring
    - crypt_token_json_get
    - crypt_activate_by_token_pin
    - NOTFAIL_
    - crypt_token_unassign_keyslot
    - crypt_volume_key_keyring
    - GE_
    - crypt_keyslot_add_by_key
    - crypt_keyslot_context_init_by_token
    - crypt_set_pbkdf_type
    - crypt_token_luks2_keyring_get
    - _cleanup_dmdevices
    - crypt_keyslot_set_priority
    - crypt_token_is_assigned
    - strlen
    - strcmp
    - crypt_token_assign_keyslot
    - set_fast_pbkdf
    - crypt_suspend
    - create_dmdevice_over_loop
    - crypt_format
    - LUKS2_KEYRING_TOKEN_JSON_BAD
    - LUKS2_KEYRING_TOKEN_JSON
    - FAIL_
    - crypt_keyslot_change_by_passphrase
    - crypt_activate_by_token
    - EQ_
    - TEST_TOKEN1_JSON_INVALID
    - TEST_TOKEN1_JSON
    - crypt_token_status
    - crypt_token_json_set
    - crypt_resume_by_token_pin
    - crypt_activate_by_keyslot_context
    - OK_
    - crypt_token_register
    - TEST_TOKEN_JSON
    - CRYPT_FREE
    - crypt_token_max
    - TEST_TOKEN2_JSON
    - TEST_TOKEN_JSON_INVALID
    - crypt_deactivate
    - crypt_token_luks2_keyring_set
    - crypt_keyslot_context_free
    - crypt_init
    - TEST_TOKEN3_JSON
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void Tokens(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2050
      start: 2048
    functionDepth: 0
    functionLinenumber: 2048
    functionLinenumberEnd: 2050
    functionName: TEST_TOKEN_JSON
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_TOKEN_JSON(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 2051
    functionDepth: 0
    functionLinenumber: 2051
    functionLinenumberEnd: 2053
    functionName: TEST_TOKEN_JSON_INVALID
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_TOKEN_JSON_INVALID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 2054
    functionDepth: 0
    functionLinenumber: 2054
    functionLinenumberEnd: 2056
    functionName: TEST_TOKEN1_JSON
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_TOKEN1_JSON(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2057
    functionDepth: 0
    functionLinenumber: 2057
    functionLinenumberEnd: 2059
    functionName: TEST_TOKEN1_JSON_INVALID
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_TOKEN1_JSON_INVALID(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: 2065
      start: 2063
    functionDepth: 0
    functionLinenumber: 2063
    functionLinenumberEnd: 2065
    functionName: LUKS2_KEYRING_TOKEN_JSON
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUKS2_KEYRING_TOKEN_JSON(x, y)
  - 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: 2068
      start: 2066
    functionDepth: 0
    functionLinenumber: 2066
    functionLinenumberEnd: 2068
    functionName: LUKS2_KEYRING_TOKEN_JSON_BAD
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUKS2_KEYRING_TOKEN_JSON_BAD(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: 2070
      start: 2069
    functionDepth: 0
    functionLinenumber: 2069
    functionLinenumberEnd: 2070
    functionName: TEST_TOKEN2_JSON
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_TOKEN2_JSON(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2072
      start: 2071
    functionDepth: 0
    functionLinenumber: 2071
    functionLinenumberEnd: 2072
    functionName: TEST_TOKEN3_JSON
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_TOKEN3_JSON(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2403,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2403,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2404,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2404,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2405,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2405,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2406,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2407,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2407,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2407,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2408,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2408,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2408,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2409,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2412,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2412,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2413,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2413,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2414,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2414,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2415,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2415,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2415,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2416,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2416,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2417,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2417,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2417,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2418,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2418,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2419,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2419,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2420,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2420,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2420,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2421,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2424,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2424,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2425,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2425,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2426,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2426,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2427,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2427,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2428,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2428,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2428,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2429,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2429,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2429,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2430,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2430,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2431,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2431,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2431,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2432,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2432,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2433,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2433,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2434,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2434,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2434,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2435,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2438,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2438,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2439,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2439,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2440,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2440,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2441,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2441,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2441,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2442,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2442,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2443,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2443,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2443,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2444,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2444,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2445,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2445,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2446,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2446,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2446,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2447,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2450,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2450,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2451,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2451,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2452,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2452,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2453,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2453,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2453,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2454,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2454,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2455,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2455,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2455,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2456,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2456,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2457,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2457,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2457,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2458,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:2458,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2459,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2459,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2460,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2460,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2460,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2461,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2465,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2465,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2466,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2466,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2467,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2467,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2468,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2468,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2469,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2469,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2469,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2470,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2470,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2471,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2475,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2475,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2476,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2476,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2477,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2477,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2478,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2478,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2478,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2479,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:2479,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2479,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2481,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2481,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2482,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2485,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2485,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2486,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2486,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2487,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2487,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2488,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2488,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2489,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2490,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2490,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2490,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2492,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2492,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2493,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2493,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2493,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2494,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2494,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2495,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:2495,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2497,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2497,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2498,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2498,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2499,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2500,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2500,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2501,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2501,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2502,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2502,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2503,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2503,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2503,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2504,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2507,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2507,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2508,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2508,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2509,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2509,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2510,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2510,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2510,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2511,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2511,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2511,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2512,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2512,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2513,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2516,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2516,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2517,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2517,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2518,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2518,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2519,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:2519,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2520,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2520,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2521,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2524,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:2524,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2525,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:2525,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2528,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2528,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2529,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2529,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2530,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2530,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2531,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2531,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2532,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2539,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2539,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2540,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2540,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2541,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2541,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2542,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2542,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2543,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2549,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2549,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2551,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2551,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2552,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2552,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2553,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2554,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2554,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2555,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2555,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2556,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2556,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2556,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2557,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2557,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2557,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2558,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2558,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2558,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2559,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2560,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2560,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2561,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2561,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2562,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2562,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2563,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2563,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2563,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2564,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2564,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2564,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2565,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2568,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2568,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2570,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2570,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2571,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2571,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2572,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2573,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2573,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2574,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2574,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2575,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2575,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2575,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2576,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2576,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2576,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2577,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2577,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2577,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2578,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2579,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2579,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2580,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2580,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2581,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2581,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2582,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2582,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2582,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2583,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2583,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2583,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2584,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2587,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2587,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2589,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2589,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2590,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2590,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2591,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2592,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2592,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2593,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2593,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2594,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2594,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2594,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2595,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2595,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2595,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2596,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2596,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2596,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2597,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2598,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2598,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2599,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2599,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2600,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2600,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2601,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2601,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2601,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2602,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2602,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2602,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2603,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2606,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2606,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2607,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2607,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2608,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2609,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2609,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2610,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2610,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2611,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2611,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2611,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2612,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2612,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2612,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2613,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2613,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2613,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2614,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2615,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2615,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2616,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2616,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2617,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2617,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2618,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2618,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2618,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2619,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2619,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2619,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2620,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2623,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2623,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2624,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2624,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2625,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2626,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2626,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2627,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2627,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2628,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2628,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2628,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2629,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2629,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2629,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2630,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2630,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2630,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2631,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2632,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2632,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2633,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2633,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2634,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2634,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2635,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2635,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2635,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2636,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2636,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2636,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2637,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2640,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2640,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2641,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2641,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2642,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2643,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2643,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2644,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2644,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2645,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2645,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2645,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2646,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2646,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2646,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2647,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2647,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2647,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2648,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2649,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2649,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2650,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2650,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2651,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2651,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2652,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2652,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2652,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2653,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2653,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2653,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2654,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2658,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2658,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2660,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2660,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2661,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2661,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2662,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2663,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2663,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2664,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2664,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2665,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2665,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2665,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2666,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2666,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2666,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2667,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2667,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2667,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2668,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2669,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2669,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2670,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2670,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2671,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2671,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2672,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2672,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2672,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2673,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2673,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2673,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2674,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2677,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2677,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2678,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2678,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2679,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2679,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2680,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2680,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2681,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2681,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2681,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2682,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2683,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2683,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2684,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2684,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2685,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2685,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2685,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2686,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2686,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2686,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2687,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2687,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2687,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2688,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2688,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2688,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2689,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2689,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2689,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2690,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2690,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2690,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2691,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2691,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2691,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2692,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2692,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2692,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2693,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2696,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2696,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2698,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2698,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2699,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2699,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2700,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2701,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2701,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2702,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2702,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2703,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2703,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2703,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2704,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2704,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2704,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2705,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2705,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2705,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2706,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2707,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2707,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2708,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2708,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2709,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2709,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2710,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2710,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2710,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2711,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2711,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2711,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2712,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2715,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2715,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2716,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2716,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2717,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2717,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2718,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2718,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2719,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2719,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2719,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2720,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2721,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2721,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2722,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2722,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2723,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2723,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2723,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2724,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2724,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2724,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2725,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2725,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2725,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2726,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2726,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2726,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2727,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2727,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2727,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2728,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2728,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2728,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2729,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2729,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2729,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2730,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2730,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2730,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2731,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2734,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2734,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2736,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2736,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2737,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2737,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2738,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2739,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2739,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2740,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2740,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2741,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2741,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2741,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2742,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2742,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2742,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2743,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2743,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2743,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2744,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2745,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2745,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2746,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2746,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2747,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2747,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2748,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2748,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2748,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2749,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2749,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2749,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2750,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2753,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:2753,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2754,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2754,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2755,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2755,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2756,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2756,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2757,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2757,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2757,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2758,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2759,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2759,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2760,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2760,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2761,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2761,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2761,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2762,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2762,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2762,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2763,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2763,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2763,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2764,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2764,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2764,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2765,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2765,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2765,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2766,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2766,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2766,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2767,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2767,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2767,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2768,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2768,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2768,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2769,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2773,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2773,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2774,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2774,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2775,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2776,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2776,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2777,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2777,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2778,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2778,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2778,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2779,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2779,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2779,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2780,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2780,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2780,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2781,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2782,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2782,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2783,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2783,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2784,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2784,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2785,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2785,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2785,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2786,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2786,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2786,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2787,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2790,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2790,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2791,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2791,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2792,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2792,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2793,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2793,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2793,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2794,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2795,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2795,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2796,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2796,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2797,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2797,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2797,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2798,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2798,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2798,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2799,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2799,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2799,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2800,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2800,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2800,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2801,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2801,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2801,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2802,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2802,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2802,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2803,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2803,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2803,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2804,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2804,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2804,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2805,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2808,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2808,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2809,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2809,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2810,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2811,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2811,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2812,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2812,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2813,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2813,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2813,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2814,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2814,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2814,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2815,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2815,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2815,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2816,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2817,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2817,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2818,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2818,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2819,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2819,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2820,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2820,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2820,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2821,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2821,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2821,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2822,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2825,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2825,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2826,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2826,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2827,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2827,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2828,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2828,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2828,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2829,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2830,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2830,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2831,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2831,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2832,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2832,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2832,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2833,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2833,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2833,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2834,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2834,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2834,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2835,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2835,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2835,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2836,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2836,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2836,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2837,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2837,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2837,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2838,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2838,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2838,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2839,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2839,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2839,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2840,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2843,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2843,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2844,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2844,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2845,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2846,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2846,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2847,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2847,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2848,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2848,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2848,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2849,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2849,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2849,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2850,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2850,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2850,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2851,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2852,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2852,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2853,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2853,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2854,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2854,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2855,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2855,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2855,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2856,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2856,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2856,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2857,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2860,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2860,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2861,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2861,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2862,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2862,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2863,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2863,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test-2.c:2863,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2864,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2865,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2865,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2866,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2866,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2867,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2867,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2867,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2868,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2868,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2868,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2869,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2869,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2869,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2870,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2870,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2870,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2871,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2871,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2871,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2872,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2872,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2872,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2873,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2873,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2873,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2874,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:2874,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2874,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2875,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2878,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:2878,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2879,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2879,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2880,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2880,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2881,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2881,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2882,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2882,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2882,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2883,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2883,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2884,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2887,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2887,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2888,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2888,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2889,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2889,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2890,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:2890,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2891,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:2891,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:2891,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2892,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:2892,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2893,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:2895,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 413
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2896
      start: 2372
    functionDepth: 2
    functionLinenumber: 2372
    functionLinenumberEnd: 2896
    functionName: LuksConvert
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_keyslot_add_by_volume_key
    - crypt_load
    - crypt_convert
    - _system
    - crypt_keyslot_add_by_key
    - crypt_set_pbkdf_type
    - crypt_set_data_offset
    - _cleanup_dmdevices
    - crypt_keyslot_destroy
    - strlen
    - strcmp
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - EQ_
    - crypt_token_json_set
    - crypt_get_data_offset
    - OK_
    - CRYPT_FREE
    - crypt_deactivate
    - crypt_activate_by_passphrase
    - crypt_init
    - crypt_get_type
    linkageType: ''
    returnType: void
    signature: void LuksConvert(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2934,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:2934,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2935,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:2935,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2937,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/tests/api-test-2.c:2937,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2938,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/tests/api-test-2.c:2938,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2939,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/tests/api-test-2.c:2939,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2940,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2940,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2941,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/tests/api-test-2.c:2941,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2942,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2942,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2943,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/tests/api-test-2.c:2943,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2944,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2944,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2947,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2947,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2948,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2948,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2949,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2949,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2950,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2950,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2951,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2951,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2952,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2952,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2953,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2953,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2954,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2954,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2957,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2957,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2958,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2958,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2959,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2959,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2960,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2960,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2961,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2961,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2962,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2965,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2965,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2966,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2966,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:2967,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2967,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2968,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2968,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2969,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2969,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2970,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2970,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2971,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2972,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2974,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2974,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:2975,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2976,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2976,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2977,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2977,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2978,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2980,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2980,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2981,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:2981,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2982,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2983,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:2984,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2985,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2985,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2986,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2987,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2989,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2989,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2990,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2990,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:2991,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2992,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:2992,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:2993,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:2993,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:2994,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:2995,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2997,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:2997,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:2998,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:2999,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:2999,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3000,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3000,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3001,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3001,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3002,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3002,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3003,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3003,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3004,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3004,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3005,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3009,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3009,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3010,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3010,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3011,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3011,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3012,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3012,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3013,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3013,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3014,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3015,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3016,1
    - Dst: adjusted_pbkdf_memory
      Src: /src/cryptsetup/tests/api-test-2.c:3016,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3017,1
    - Dst: _min
      Src: /src/cryptsetup/tests/api-test-2.c:3017,1
    - Dst: cpus_online
      Src: /src/cryptsetup/tests/api-test-2.c:3017,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3019,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3019,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3020,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3020,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3021,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3021,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3022,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3022,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3023,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3024,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3025,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3027,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3027,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3028,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3028,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3029,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3029,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3030,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3030,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3031,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3032,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3033,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:3035,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3036,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3036,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3037,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3037,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3038,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3038,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3039,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3039,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3040,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3041,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3042,1
    - Dst: adjusted_pbkdf_memory
      Src: /src/cryptsetup/tests/api-test-2.c:3042,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3043,1
    - Dst: _min
      Src: /src/cryptsetup/tests/api-test-2.c:3043,1
    - Dst: cpus_online
      Src: /src/cryptsetup/tests/api-test-2.c:3043,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3046,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3046,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3048,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3048,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3051,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3051,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3054,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3054,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3057,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3057,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3058,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3058,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3061,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3061,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3064,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3064,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3066,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3066,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3067,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3069,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3069,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3070,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3070,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3071,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3071,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3072,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3072,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3073,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3073,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3074,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3075,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3076,1
    - Dst: adjusted_pbkdf_memory
      Src: /src/cryptsetup/tests/api-test-2.c:3076,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3077,1
    - Dst: _min
      Src: /src/cryptsetup/tests/api-test-2.c:3077,1
    - Dst: cpus_online
      Src: /src/cryptsetup/tests/api-test-2.c:3077,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:3078,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3079,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3079,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3080,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3080,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3081,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3081,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3082,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3083,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3084,1
    - Dst: adjusted_pbkdf_memory
      Src: /src/cryptsetup/tests/api-test-2.c:3084,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3085,1
    - Dst: _min
      Src: /src/cryptsetup/tests/api-test-2.c:3085,1
    - Dst: cpus_online
      Src: /src/cryptsetup/tests/api-test-2.c:3085,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3086,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3089,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3089,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:3090,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3091,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3091,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3092,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3092,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3093,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3093,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3094,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3099,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3099,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3100,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3100,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3101,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3102,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3106,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3106,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3108,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3108,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3115,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3115,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3117,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3117,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3122,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3122,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3124,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3124,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3128,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3128,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3130,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3130,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3136,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3136,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3137,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3137,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3138,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3139,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3140,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3141,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3143,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3145,1
    - Dst: crypt_get_pbkdf_default
      Src: /src/cryptsetup/tests/api-test-2.c:3145,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3146,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3146,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3147,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3148,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3148,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3149,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3150,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3152,1
    - Dst: crypt_get_pbkdf_default
      Src: /src/cryptsetup/tests/api-test-2.c:3152,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3153,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3153,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3154,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3155,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3155,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3156,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3157,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3159,1
    - Dst: crypt_get_pbkdf_default
      Src: /src/cryptsetup/tests/api-test-2.c:3159,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:3161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 196
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3162
      start: 2898
    functionDepth: 2
    functionLinenumber: 2898
    functionLinenumberEnd: 3162
    functionName: Pbkdf
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_load
    - adjusted_pbkdf_memory
    - GE_
    - crypt_get_pbkdf_default
    - crypt_set_pbkdf_type
    - _cleanup_dmdevices
    - strcmp
    - cpus_online
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - EQ_
    - crypt_get_pbkdf_type
    - OK_
    - CRYPT_FREE
    - _min
    - crypt_get_pbkdf_type_params
    - NOTNULL_
    - NULL_
    - crypt_set_iteration_time
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void Pbkdf(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3170,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3185,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:3185,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3186,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:3186,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3196,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:3196,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3197,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:3197,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3200,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3200,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3201,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3201,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3202,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3202,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3202,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3203,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3203,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3203,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3204,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3204,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3205,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3205,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3207,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3208,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3208,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3209,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3209,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3211,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3211,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3212,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3212,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3212,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3213,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3213,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3213,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3215,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3215,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3217,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3217,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3217,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3218,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3218,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3218,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3221,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3221,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3221,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3223,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3223,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3223,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3225,1
    - Dst: crypt_keyslot_get_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:3225,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3226,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:3226,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3227,1
    - Dst: crypt_keyslot_get_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:3227,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3228,1
    - Dst: crypt_keyslot_get_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:3228,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3229,1
    - Dst: crypt_keyslot_get_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:3229,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3230,1
    - Dst: crypt_keyslot_get_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:3230,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3233,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:3233,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3233,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3236,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:3236,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3236,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3237,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:3237,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3237,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3238,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3238,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3240,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:3240,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3240,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3243,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3243,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3243,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3244,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3244,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3245,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3245,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3246,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3246,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3247,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3247,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3248,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3248,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3248,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3249,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3249,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3249,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3251,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:3251,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3252,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3252,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3252,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3253,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3253,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3255,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3255,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3256,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3256,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3257,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3257,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3257,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3258,1
    - Dst: crypt_keyslot_add_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3258,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3258,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3258,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3259,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3259,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3259,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3261,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3261,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3261,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3262,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3262,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3263,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3263,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3263,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3264,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3264,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3266,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3268,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3268,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3269,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3269,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3271,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3271,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3271,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3273,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3273,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3273,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3275,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3275,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3275,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3277,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3277,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3277,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3279,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3279,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3279,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3280,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3280,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3280,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3281,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3281,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3281,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3283,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3283,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3283,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3285,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3285,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3285,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3287,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3287,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3288,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3288,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3288,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3289,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3289,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3290,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3290,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3291,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3291,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3291,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3292,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3292,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3293,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3293,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3293,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3294,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3294,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3295,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3295,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3295,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3300,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3300,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3300,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3301,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3301,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3302,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3302,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3302,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3303,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3303,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3305,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:3307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 88
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3308
      start: 3164
    functionDepth: 2
    functionLinenumber: 3164
    functionLinenumberEnd: 3308
    functionName: Luks2KeyslotAdd
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_keyslot_add_by_volume_key
    - crypt_load
    - crypt_decode_key
    - crypt_keyslot_add_by_key
    - crypt_keyslot_status
    - _cleanup_dmdevices
    - crypt_keyslot_add_by_passphrase
    - crypt_get_volume_key_size
    - strlen
    - crypt_suspend
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - crypt_resume_by_passphrase
    - crypt_volume_key_get
    - EQ_
    - OK_
    - CRYPT_FREE
    - crypt_deactivate
    - crypt_keyslot_get_key_size
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void Luks2KeyslotAdd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3317,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3320,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:3320,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3321,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:3321,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3323,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3323,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3323,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3324,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3324,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3324,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3326,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:3326,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3327,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:3327,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3329,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3331,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3331,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3332,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3332,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3333,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3333,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3334,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3334,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3335,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3335,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3335,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3336,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3339,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3339,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3339,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3340,1
    - Dst: crypt_keyslot_add_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3340,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3340,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3340,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3341,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3341,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3341,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3342,1
    - Dst: crypt_keyslot_add_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3342,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3345,1
    - Dst: crypt_keyslot_set_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3345,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3346,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3346,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3346,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3347,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3349,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3349,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3349,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3350,1
    - Dst: crypt_keyslot_add_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3350,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3350,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3350,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3351,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3351,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3351,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3352,1
    - Dst: crypt_keyslot_add_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3352,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3354,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3356,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3356,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3357,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3357,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3359,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3359,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3360,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3360,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3360,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3361,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3363,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3363,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3364,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3364,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3364,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3365,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3367,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3367,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3368,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3368,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3368,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3369,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3371,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3371,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3372,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3372,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3372,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3373,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3375,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3375,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3376,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3376,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3376,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3377,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3379,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3379,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3380,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3380,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3380,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3381,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3383,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3383,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3384,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3384,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3384,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3385,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3387,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3387,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3388,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3388,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3388,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3389,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3391,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3391,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3392,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3392,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3392,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3392,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3393,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3393,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3393,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3394,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3397,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3397,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3397,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3397,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3398,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3398,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3398,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3399,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3402,1
    - Dst: crypt_keyslot_set_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3402,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3404,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3404,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3404,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3404,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3405,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3405,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3405,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3406,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3408,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3408,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3408,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3408,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3409,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3409,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3409,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3410,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3412,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3412,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3412,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3412,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3413,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3413,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3413,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3414,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3416,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3419,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3419,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3420,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3420,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3421,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3421,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3422,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3422,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3423,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3423,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3423,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3424,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3425,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3425,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3425,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3426,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3426,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3426,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3427,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3428,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3431,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3431,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3432,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3432,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3433,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3433,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3434,1
    - Dst: crypt_keyslot_set_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3434,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3435,1
    - Dst: crypt_keyslot_set_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3435,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3436,1
    - Dst: crypt_keyslot_set_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3436,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3437,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3437,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3437,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3438,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3438,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3439,1
    - Dst: strstr
      Src: /src/cryptsetup/tests/api-test-2.c:3439,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/tests/api-test-2.c:3439,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3440,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:3442,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test-2.c:3443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3444
      start: 3310
    functionDepth: 2
    functionLinenumber: 3310
    functionLinenumberEnd: 3444
    functionName: Luks2KeyslotParams
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_keyslot_get_encryption
    - crypt_keyslot_add_by_volume_key
    - crypt_load
    - crypt_decode_key
    - crypt_keyslot_set_encryption
    - strstr
    - crypt_keyslot_add_by_key
    - crypt_keyslot_status
    - crypt_set_pbkdf_type
    - _cleanup_dmdevices
    - crypt_keyslot_add_by_passphrase
    - strlen
    - strcmp
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - crypt_keyslot_change_by_passphrase
    - FAIL_
    - EQ_
    - OK_
    - CRYPT_FREE
    - NOTNULL_
    - NULL_
    - _remove_keyfiles
    - crypt_keyslot_add_by_keyfile
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void Luks2KeyslotParams(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3456,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:3457,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:3461,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3461,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3462,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:3463,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3463,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3464,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3466,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:3466,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3467,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:3467,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3470,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3470,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3471,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:3471,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3472,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3472,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3473,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3473,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3473,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3474,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3474,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3474,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3475,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3475,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3475,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3476,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3480,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3480,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3481,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3481,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3482,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3482,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3483,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3483,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3484,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:3484,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3485,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3485,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3486,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3486,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3487,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:3487,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3488,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3488,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3489,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3489,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3490,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3490,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3491,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3491,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3492,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:3492,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3493,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3493,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3494,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3494,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3495,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3495,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3496,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3496,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3497,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3497,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3498,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3500,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:3500,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3501,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:3501,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3503,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3503,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3504,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3504,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3505,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3505,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3506,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3506,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3507,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3507,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3508,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3508,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3509,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:3510,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:3512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3514
      start: 3446
    functionDepth: 2
    functionLinenumber: 3446
    functionLinenumberEnd: 3514
    functionName: Luks2ActivateByKeyring
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - t_dm_crypt_keyring_support
    - crypt_keyslot_add_by_volume_key
    - crypt_load
    - NOTFAIL_
    - GE_
    - crypt_keyslot_add_by_key
    - _cleanup_dmdevices
    - crypt_status
    - strlen
    - set_fast_pbkdf
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - EQ_
    - OK_
    - CRYPT_FREE
    - crypt_activate_by_keyring
    - keyctl_unlink
    - crypt_deactivate
    - add_key
    - printf
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void Luks2ActivateByKeyring(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3545,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3545,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3545,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3546,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3546,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3546,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3549,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3549,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3550,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3550,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3551,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3553,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3553,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3554,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3554,1
    - Dst: reset_log
      Src: /src/cryptsetup/tests/api-test-2.c:3557,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3558,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/tests/api-test-2.c:3558,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3559,1
    - Dst: reset_log
      Src: /src/cryptsetup/tests/api-test-2.c:3560,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3564,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3564,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3565,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3565,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3568,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3568,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3569,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3569,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test-2.c:3572,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:3573,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3574,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3575,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3578,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/tests/api-test-2.c:3578,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3579,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3582,1
    - Dst: crypt_set_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:3582,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3583,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3586,1
    - Dst: crypt_set_label
      Src: /src/cryptsetup/tests/api-test-2.c:3586,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3587,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3590,1
    - Dst: crypt_get_label
      Src: /src/cryptsetup/tests/api-test-2.c:3590,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3591,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3591,1
    - Dst: crypt_get_label
      Src: /src/cryptsetup/tests/api-test-2.c:3591,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3593,1
    - Dst: crypt_get_subsystem
      Src: /src/cryptsetup/tests/api-test-2.c:3593,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3594,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3594,1
    - Dst: crypt_get_subsystem
      Src: /src/cryptsetup/tests/api-test-2.c:3594,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3597,1
    - Dst: crypt_repair
      Src: /src/cryptsetup/tests/api-test-2.c:3597,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3600,1
    - Dst: crypt_keyslot_add_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3600,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3600,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3601,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3604,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3604,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3604,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3605,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3608,1
    - Dst: crypt_keyslot_add_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3608,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3609,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3612,1
    - Dst: crypt_keyslot_add_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:3612,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3613,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3616,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:3616,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3616,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3619,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3619,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3619,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3620,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3623,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3623,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3623,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3624,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3627,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:3627,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3627,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3628,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3631,1
    - Dst: crypt_persistent_flags_set
      Src: /src/cryptsetup/tests/api-test-2.c:3631,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3632,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3635,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:3635,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3636,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3639,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3639,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3639,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3640,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3641,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3641,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3641,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3642,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3642,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3642,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3642,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3643,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:3643,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3646,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3646,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3647,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3648,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3648,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3649,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3649,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3649,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3652,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3652,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3653,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3654,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3654,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3655,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3655,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3655,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3658,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:3659,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3659,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3660,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3663,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3663,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3664,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3664,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3665,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3665,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3666,1
    - Dst: crypt_activate_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3666,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3668,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:3668,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3673,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test-2.c:3673,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3676,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3676,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test-2.c:3676,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3679,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3679,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test-2.c:3679,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3682,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:3682,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3685,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/tests/api-test-2.c:3685,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3688,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:3688,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3693,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:3693,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3696,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3696,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3697,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:3697,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3700,1
    - Dst: crypt_keyslot_get_priority
      Src: /src/cryptsetup/tests/api-test-2.c:3700,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3703,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/tests/api-test-2.c:3703,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3704,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3707,1
    - Dst: crypt_keyslot_area
      Src: /src/cryptsetup/tests/api-test-2.c:3707,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3708,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:3711,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3712,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/tests/api-test-2.c:3712,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3715,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:3715,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3716,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:3717,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3720,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tests/api-test-2.c:3720,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3721,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3724,1
    - Dst: crypt_token_json_get
      Src: /src/cryptsetup/tests/api-test-2.c:3724,1
    - Dst: NOTNULL_
      Src: /src/cryptsetup/tests/api-test-2.c:3725,1
    - Dst: strstr
      Src: /src/cryptsetup/tests/api-test-2.c:3725,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3728,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:3728,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3729,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3729,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3730,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:3730,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3731,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3731,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3732,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:3732,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3733,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/tests/api-test-2.c:3733,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3736,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:3736,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3737,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3740,1
    - Dst: crypt_token_luks2_keyring_get
      Src: /src/cryptsetup/tests/api-test-2.c:3740,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3741,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3741,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3744,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:3744,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3745,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3748,1
    - Dst: crypt_token_unassign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:3748,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3749,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3753,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:3754,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3754,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3755,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3757,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:3757,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3758,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3759,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:3759,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3760,1
    - Dst: crypt_activate_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:3760,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3762,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:3762,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3765,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:3765,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3766,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:3766,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3768,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:3768,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3771,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3772,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3772,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3773,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:3773,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3774,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3774,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3774,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3775,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/tests/api-test-2.c:3775,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3777,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:3777,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3778,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3780,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test-2.c:3780,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3781,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3782,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:3782,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3786,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:3786,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:3787,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3788,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:3788,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3789,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/tests/api-test-2.c:3789,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3792,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:3792,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3793,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3794,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3797,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:3797,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3798,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:3798,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3799,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:3799,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3803,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:3803,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3804,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3806,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3808,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:3808,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3809,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:3809,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3812,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3812,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3812,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3813,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3816,1
    - Dst: crypt_resume_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:3816,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3817,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3820,1
    - Dst: crypt_resume_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test-2.c:3820,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3821,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3822,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3824,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:3824,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3825,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:3825,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3826,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3826,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3826,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3827,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3828,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:3828,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3830,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:3830,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3832,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3832,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3832,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3832,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3834,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:3834,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3835,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3836,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:3836,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3839,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:3839,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3841,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3842,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3846,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3846,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3849,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:3849,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3850,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:3850,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3851,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:3851,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3854,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:3854,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3856,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:3857,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 175
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3858
      start: 3516
    functionDepth: 2
    functionLinenumber: 3516
    functionLinenumberEnd: 3858
    functionName: Luks2Requirements
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_token_json_get
    - _system
    - crypt_keyslot_area
    - strstr
    - crypt_get_subsystem
    - GE_
    - crypt_token_unassign_keyslot
    - crypt_volume_key_verify
    - crypt_keyslot_status
    - _cleanup_dmdevices
    - crypt_keyslot_set_priority
    - crypt_status
    - crypt_token_assign_keyslot
    - crypt_persistent_flags_set
    - crypt_resume_by_keyfile_offset
    - FAIL_
    - crypt_volume_key_get
    - EQ_
    - crypt_token_status
    - crypt_get_data_offset
    - NOTNULL_
    - crypt_activate_by_keyring
    - crypt_token_luks2_keyring_set
    - crypt_get_cipher_mode
    - crypt_set_uuid
    - remove
    - crypt_activate_by_volume_key
    - get_luks2_offsets
    - t_dm_crypt_keyring_support
    - crypt_keyslot_add_by_volume_key
    - crypt_header_backup
    - crypt_keyslot_add_by_key
    - crypt_set_pbkdf_type
    - crypt_token_luks2_keyring_get
    - crypt_keyslot_add_by_passphrase
    - crypt_get_volume_key_size
    - crypt_get_device_name
    - crypt_resize
    - crypt_init_by_name
    - crypt_keyslot_change_by_passphrase
    - crypt_resume_by_passphrase
    - crypt_get_pbkdf_type
    - crypt_keyslot_get_priority
    - crypt_get_label
    - crypt_deactivate
    - crypt_repair
    - crypt_dump
    - crypt_set_iteration_time
    - crypt_activate_by_passphrase
    - crypt_init
    - crypt_get_active_device
    - crypt_header_restore
    - crypt_load
    - crypt_convert
    - crypt_persistent_flags_get
    - crypt_keyslot_destroy
    - strlen
    - crypt_suspend
    - create_dmdevice_over_loop
    - crypt_keyslot_add_by_keyfile_offset
    - crypt_set_label
    - crypt_token_json_set
    - crypt_get_uuid
    - keyctl_unlink
    - add_key
    - crypt_keyslot_add_by_keyfile
    - NOTFAIL_
    - reset_log
    - crypt_init_by_name_and_header
    - crypt_resume_by_keyfile
    - crypt_token_is_assigned
    - strcmp
    - prepare_keyfile
    - crypt_activate_by_token
    - OK_
    - CRYPT_FREE
    - crypt_activate_by_keyfile
    - crypt_get_cipher
    linkageType: ''
    returnType: void
    signature: void Luks2Requirements(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3873,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3873,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3874,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:3876,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3877,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3881,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3881,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3881,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3882,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3882,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3882,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:3883,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:3883,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3884,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3886,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test-2.c:3886,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3887,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/tests/api-test-2.c:3887,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3888,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3888,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test-2.c:3888,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3889,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3889,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test-2.c:3889,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3890,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:3890,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3891,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:3892,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3893,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3893,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3894,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3896,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3896,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3897,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3897,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3898,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3898,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:3899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3900
      start: 3860
    functionDepth: 1
    functionLinenumber: 3860
    functionLinenumberEnd: 3900
    functionName: Luks2Integrity
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_add_by_volume_key
    - FAIL_
    - crypt_init_by_name_and_header
    - EQ_
    - crypt_deactivate
    - crypt_get_cipher
    - crypt_get_cipher_mode
    - crypt_get_integrity_info
    - printf
    - crypt_activate_by_passphrase
    - GE_
    - crypt_status
    - crypt_init
    - strlen
    - strcmp
    - OK_
    - CRYPT_FREE
    - crypt_format
    linkageType: ''
    returnType: void
    signature: void Luks2Integrity(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - flags
    - flag
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3905
      start: 3902
    functionDepth: 0
    functionLinenumber: 3902
    functionLinenumberEnd: 3905
    functionName: check_flag
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int check_flag(uint32_t flags, uint32_t flag)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3914,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3921,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:3921,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3922,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:3922,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3924,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:3924,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3925,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:3925,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3926,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:3926,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3927,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:3927,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3928,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:3928,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3931,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:3931,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3932,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:3932,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3933,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:3933,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3934,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:3934,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3934,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3935,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3935,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3935,1
    - Dst: t_dm_crypt_discard_support
      Src: /src/cryptsetup/tests/api-test-2.c:3938,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3939,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3939,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3939,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3940,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:3940,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3941,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:3941,1
    - Dst: t_dm_crypt_cpu_switch_support
      Src: /src/cryptsetup/tests/api-test-2.c:3945,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3946,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3946,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3946,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3947,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:3947,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3948,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:3948,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3951,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3951,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3951,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3952,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:3952,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3953,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:3953,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3956,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3956,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3956,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3957,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:3957,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3958,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:3958,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3962,1
    - Dst: crypt_volume_key_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3962,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3963,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3963,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3963,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3964,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:3964,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3965,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:3965,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:3969,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3970,1
    - Dst: crypt_volume_key_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:3970,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3971,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3971,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3971,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3972,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:3972,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3973,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:3973,1
    - Dst: t_dm_crypt_discard_support
      Src: /src/cryptsetup/tests/api-test-2.c:3979,1
    - Dst: t_dm_crypt_cpu_switch_support
      Src: /src/cryptsetup/tests/api-test-2.c:3979,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3980,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3980,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3980,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3981,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:3981,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3982,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:3982,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3987,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3987,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3987,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3988,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:3988,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:3989,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:3989,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3993,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3993,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3994,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3994,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3994,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3997,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:3997,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3998,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3998,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3998,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:3999,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:3999,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:3999,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4000,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4000,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4001,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:4001,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4005,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4005,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4006,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:4006,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4007,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4007,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4007,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4008,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4008,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4009,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4009,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4010,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4010,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4011,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:4011,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4013,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4013,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4014,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4014,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4015,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:4015,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4017,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4017,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4017,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4018,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4018,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4019,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:4019,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4020,1
    - Dst: check_flag
      Src: /src/cryptsetup/tests/api-test-2.c:4020,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4021,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4021,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4021,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4022,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4022,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:4024,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4026,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4029,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4029,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4030,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4030,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:4030,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4031,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4031,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4031,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4032,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4032,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4032,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4033,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4036,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4036,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4037,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4037,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4038,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4038,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4039,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4039,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4040,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4040,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4041,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4045,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4045,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4046,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:4046,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4047,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4047,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test-2.c:4047,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4048,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4048,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4048,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4049,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4049,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4049,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4051,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4051,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4053,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4054,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4056,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 105
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4057
      start: 3907
    functionDepth: 2
    functionLinenumber: 3907
    functionLinenumberEnd: 4057
    functionName: Luks2Refresh
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - t_dm_crypt_keyring_support
    - crypt_keyslot_add_by_volume_key
    - crypt_decode_key
    - crypt_volume_key_keyring
    - _cleanup_dmdevices
    - strlen
    - set_fast_pbkdf
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - t_dm_crypt_discard_support
    - check_flag
    - OK_
    - CRYPT_FREE
    - crypt_get_uuid
    - crypt_deactivate
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - printf
    - crypt_init
    - t_dm_crypt_cpu_switch_support
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void Luks2Refresh(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4064,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4064,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4065,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4065,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4068,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4068,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4069,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4073,1
    - Dst: crypt_persistent_flags_set
      Src: /src/cryptsetup/tests/api-test-2.c:4073,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4075,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4075,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4076,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4079,1
    - Dst: crypt_persistent_flags_set
      Src: /src/cryptsetup/tests/api-test-2.c:4079,1
    - Dst: UINT32_C
      Src: /src/cryptsetup/tests/api-test-2.c:4080,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4081,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4081,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4082,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4085,1
    - Dst: crypt_set_label
      Src: /src/cryptsetup/tests/api-test-2.c:4085,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4086,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:4086,1
    - Dst: crypt_get_label
      Src: /src/cryptsetup/tests/api-test-2.c:4086,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4087,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:4087,1
    - Dst: crypt_get_subsystem
      Src: /src/cryptsetup/tests/api-test-2.c:4087,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4089,1
    - Dst: crypt_set_label
      Src: /src/cryptsetup/tests/api-test-2.c:4089,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4090,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:4090,1
    - Dst: crypt_get_label
      Src: /src/cryptsetup/tests/api-test-2.c:4090,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4091,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:4091,1
    - Dst: crypt_get_subsystem
      Src: /src/cryptsetup/tests/api-test-2.c:4091,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4093,1
    - Dst: crypt_set_label
      Src: /src/cryptsetup/tests/api-test-2.c:4093,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4094,1
    - Dst: crypt_set_label
      Src: /src/cryptsetup/tests/api-test-2.c:4094,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4097
      start: 4059
    functionDepth: 1
    functionLinenumber: 4059
    functionLinenumberEnd: 4097
    functionName: Luks2Flags
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_get_label
    - crypt_load
    - FAIL_
    - EQ_
    - crypt_persistent_flags_set
    - crypt_set_label
    - crypt_persistent_flags_get
    - UINT32_C
    - crypt_get_subsystem
    - crypt_init
    - strcmp
    - OK_
    - CRYPT_FREE
    linkageType: ''
    returnType: void
    signature: void Luks2Flags(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - size
    - offset
    - usrptr
    argTypes:
    - uint64_t
    - uint64_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4107
      start: 4100
    functionDepth: 0
    functionLinenumber: 4100
    functionLinenumberEnd: 4107
    functionName: test_progress
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_progress(uint64_t size __attribute__((unused)),\n\tuint64_t
      offset __attribute__((unused)),\n\tvoid *usrptr __attribute__((unused)))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4144,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4145,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4148,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:4148,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4149,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:4149,1
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:4152,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4163,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:4163,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4164,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4164,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4165,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4165,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4168,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4168,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4169,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4169,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4170,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4170,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4171,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4171,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4171,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4174,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4174,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4174,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4175,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4175,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4175,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4176,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4176,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4176,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4177,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:4177,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4180,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4180,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4180,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4181,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4181,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4181,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4182,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4182,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4182,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4186,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4186,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4186,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4188,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4188,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4188,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4190,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4190,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4191,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4192,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4192,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4195,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4195,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4195,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4196,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4196,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4197,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4200,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4200,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4201,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4202,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4203,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4204,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4207,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4207,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4208,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4211,1
    - Dst: crypt_get_old_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:4211,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4212,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:4212,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4213,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:4213,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test-2.c:4213,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4214,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/tests/api-test-2.c:4214,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4216,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:4216,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4218,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:4218,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4220,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:4220,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4222,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4222,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4222,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4225,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4225,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4225,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4226,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4226,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4229,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:4229,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4230,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:4230,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4231,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:4231,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4232,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:4232,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4233,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:4233,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4235,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4235,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4235,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4238,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4238,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4238,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4243,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4243,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4243,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4244,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4244,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4245,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4247,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4247,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4247,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4248,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4248,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4249,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4250,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4250,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4252,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4252,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4252,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4253,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4253,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4254,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4254,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4255,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4258,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4258,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4258,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4262,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4262,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4262,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4267,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4267,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4267,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4269,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4269,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4269,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4271,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4271,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4271,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4272,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4274,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4274,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4275,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4275,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4276,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4276,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4280,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4280,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4280,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4283,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4283,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4283,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4286,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4286,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4286,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4287,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4287,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4293,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4293,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4293,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4298,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4298,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4298,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4301,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4301,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4301,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4303,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4303,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4303,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4304,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4304,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4306,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4306,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4306,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4308,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4308,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4309,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4309,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4311,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4311,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4311,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4313,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4313,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4313,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4314,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4314,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4315,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4315,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4316,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4317,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/tests/api-test-2.c:4317,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4318,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4319,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4319,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4320,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4320,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4321,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4321,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4321,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4322,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4322,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4322,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4323,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4323,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4324,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4325,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4329,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4329,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4330,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4330,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4331,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4331,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4332,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4332,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4332,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4333,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4333,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4333,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4338,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4338,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4338,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4342,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4342,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4343,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4343,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4345,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4345,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4345,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4346,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4346,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4347,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4348,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4350,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:4350,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4351,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:4351,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4355,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4355,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4355,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4356,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4357,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4357,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4357,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4360,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4360,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4360,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4361,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4361,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4362,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4362,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4363,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4363,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4363,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4364,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4364,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4366,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4367,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4367,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4370,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4370,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4370,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4371,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4371,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4371,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4372,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test-2.c:4372,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4376,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4376,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4376,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4378,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4378,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4378,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4382,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4382,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4383,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4386,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4386,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4387,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4387,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4388,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4388,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4389,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4389,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4390,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4390,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4391,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4391,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4392,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4392,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4393,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4393,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4393,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4394,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4394,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4394,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4395,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4395,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4395,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4396,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4396,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4396,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4397,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4397,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4397,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4398,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4398,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4398,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4400,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4400,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4400,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4401,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4401,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4401,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4404,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4404,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4404,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4405,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4405,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4405,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4406,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4406,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4406,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4408,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4408,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4409,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4409,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4410,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4411,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4414,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4414,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4415,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4415,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4416,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4416,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4417,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4417,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4417,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4418,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4418,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4418,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4426,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4426,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4426,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4427,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:4427,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4428,1
    - Dst: crypt_get_old_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:4428,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4429,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4432,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4432,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4433,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4433,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4434,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4434,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4435,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4435,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4435,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4436,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4436,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4436,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4437,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:4437,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4438,1
    - Dst: crypt_get_old_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:4438,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4439,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4443,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4443,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4444,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4444,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4445,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4445,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4446,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4446,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4446,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4447,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4447,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4447,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4455,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4455,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4455,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4456,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4456,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4457,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4458,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4459,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:4459,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4460,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4460,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4462,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4462,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4462,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4463,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4463,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4464,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4465,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4465,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4466,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4466,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4467,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4467,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4468,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4468,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4468,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4469,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4469,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4470,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4471,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4471,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4472,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4472,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4474,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4474,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4474,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4475,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4475,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4475,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4476,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4479,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4479,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4480,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4480,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4481,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4481,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4482,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4482,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4482,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4483,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4483,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4483,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4488,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4488,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4488,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4489,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4489,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4490,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4491,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4492,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:4492,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4493,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4493,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4495,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4495,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4495,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4496,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4496,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4497,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4498,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4498,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4499,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4499,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4500,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4500,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4500,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4501,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4501,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4502,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4503,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4503,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4504,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4504,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4505,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4508,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4508,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4509,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4509,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4510,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4510,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4511,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4511,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4511,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4512,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4512,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4512,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4517,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4517,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4517,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4518,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4518,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4518,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4519,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4519,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4520,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4520,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4520,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4521,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4521,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4522,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4524,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4524,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4524,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4525,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4525,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4526,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4526,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4527,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4529,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4532,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4532,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4533,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4533,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4535,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4535,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4547,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4547,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4548,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4548,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4549,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4549,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4549,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4550,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4550,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4550,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4551,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4552,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4552,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4554,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4555,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4555,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4556,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4556,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4557,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4557,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4559,1
    - Dst: crypt_get_old_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:4559,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4560,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4561,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:4561,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4562,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4563,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4564,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4564,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4566,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4566,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4566,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4567,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4567,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4568,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4570,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4571,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4571,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4572,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4572,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4575,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4575,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4577,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4577,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4578,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4578,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4579,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4579,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4579,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4580,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4580,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4580,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4581,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4582,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4582,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4584,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4584,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4586,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4586,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4586,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4587,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4587,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4588,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4590,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4591,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4591,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4592,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4592,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4594,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4594,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4607,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4607,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4608,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4608,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4609,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4609,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4609,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4610,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4610,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4610,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4611,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4611,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4612,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4614,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4615,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4615,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4618,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4618,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4628,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4628,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4629,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4629,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4629,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4630,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4630,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4630,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4631,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4631,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4633,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4633,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4633,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4634,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4634,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4635,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4635,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4636,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:4639,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4642,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4642,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4652,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4652,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4653,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4654,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4654,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4655,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4655,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4656,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4656,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4657,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:4657,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4658,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:4658,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4659,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4659,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4661,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:4661,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4663,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:4663,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4664,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4664,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4665,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4665,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4666,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:4666,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:4667,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4668,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:4671,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4677,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4677,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4678,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4678,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4679,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4679,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4680,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4680,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4680,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4681,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4681,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4681,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4682,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4683,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4683,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4684,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test-2.c:4684,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4685,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4685,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4685,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4687,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4687,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4687,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4688,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4688,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4689,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4689,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4690,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4690,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4691,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4693,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4694,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4694,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4695,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4695,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4698,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4698,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4700,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4700,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4701,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4701,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4702,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4702,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4702,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4709,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4709,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4709,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4710,1
    - Dst: crypt_get_old_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:4710,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4711,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4711,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4712,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4713,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4713,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4714,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4714,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4715,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4715,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4716,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test-2.c:4716,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4717,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:4717,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test-2.c:4717,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4718,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4721,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4721,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4723,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4723,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4724,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4724,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4725,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4725,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4725,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4732,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4732,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4732,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4733,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4733,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4734,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4737,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4737,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4739,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4739,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4740,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4740,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4741,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4741,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4741,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4742,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4742,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4742,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4749,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4749,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4749,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4750,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4750,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4751,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4754,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4754,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4756,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4756,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4757,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4757,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4758,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4758,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4758,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:4759,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4760,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/tests/api-test-2.c:4760,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4761,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4763,1
    - Dst: chmod
      Src: /src/cryptsetup/tests/api-test-2.c:4763,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4764,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:4764,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4765,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4765,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4766,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4766,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4773,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4773,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4773,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4774,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4774,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4775,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4775,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:4776,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4777,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4780,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4780,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4782,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4782,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4783,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4783,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4784,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4784,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4784,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4785,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4785,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4785,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4787,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4789,1
    - Dst: t_get_devno
      Src: /src/cryptsetup/tests/api-test-2.c:4789,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4791,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:4791,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:4792,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4793,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/tests/api-test-2.c:4793,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4794,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4796,1
    - Dst: chmod
      Src: /src/cryptsetup/tests/api-test-2.c:4796,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4797,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:4797,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4798,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4798,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4799,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4799,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4806,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4806,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4806,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4807,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4807,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4808,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4808,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:4809,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4810,1
    - Dst: t_device_size_by_devno
      Src: /src/cryptsetup/tests/api-test-2.c:4810,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4811,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4812,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:4812,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4813,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4815,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4816,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4816,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4817,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4817,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4818,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4818,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4821,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4821,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4822,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4822,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4824,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4824,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4825,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4825,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4825,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4826,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4826,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4826,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4828,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:4828,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4829,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4829,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4830,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4830,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4831,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4831,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4831,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4832,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4833,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4833,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4833,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4840,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4840,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4840,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4841,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4841,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4843,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:4843,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4844,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4844,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4845,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4845,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4846,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4846,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4846,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4848,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4848,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4848,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4849,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4849,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4849,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4851,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4851,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4851,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4852,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4852,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4853,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4853,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4854,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4855,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4858,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4858,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4859,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4859,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4861,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4861,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4862,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4862,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4862,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4863,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4863,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4863,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4866,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4866,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4866,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4869,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4869,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4872,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:4872,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4873,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4873,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4874,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4874,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4874,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4875,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4879,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4879,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4879,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4881,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4881,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4884,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:4884,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4885,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4885,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4887,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4887,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4887,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4888,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4888,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4889,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4890,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4892,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4893,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4893,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4896,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4896,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4897,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4897,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4900,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4900,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4901,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4901,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4901,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4902,1
    - Dst: crypt_volume_key_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:4902,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4903,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4903,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4903,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4904,1
    - Dst: crypt_volume_key_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:4904,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4912,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4912,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4912,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4913,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4913,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4913,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4915,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4915,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4916,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4916,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4917,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4917,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4918,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4919,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4920,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4921,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test-2.c:4921,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4923,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4923,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4923,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4924,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4924,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4925,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:4925,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4926,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4927,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4928,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:4928,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4929,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4931,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4932,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4932,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4942,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4942,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4943,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:4943,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4944,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4944,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4945,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4945,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4945,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4946,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4946,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4946,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4947,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:4947,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4947,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4948,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4948,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4948,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4949,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:4949,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4950,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4950,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4951,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test-2.c:4951,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4952,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4952,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4953,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:4955,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4956,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4956,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4957,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:4957,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4968,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4968,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4969,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:4969,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4970,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4970,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4971,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4971,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4971,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4972,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/tests/api-test-2.c:4972,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4973,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4979,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4979,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4980,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:4980,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4981,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test-2.c:4981,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4982,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:4982,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4983,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:4983,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4983,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4984,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4987,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:4987,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4988,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4988,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:4989,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:4989,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:4989,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4991,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4991,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4992,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4994,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:4994,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4995,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:4995,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:4996,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:4996,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:4997,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:4999,1
    - Dst: chmod
      Src: /src/cryptsetup/tests/api-test-2.c:4999,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5000,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:5000,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5001,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:5001,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5006,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5006,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5006,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5007,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5010,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:5010,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5011,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:5011,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5012,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5012,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5017,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5017,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5017,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5018,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5021,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:5021,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5022,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:5022,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5023,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5023,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5024,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test-2.c:5025,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5040,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5040,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5041,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:5041,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5042,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5042,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5043,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5043,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5043,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5044,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/tests/api-test-2.c:5044,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5045,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5047,1
    - Dst: chmod
      Src: /src/cryptsetup/tests/api-test-2.c:5047,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5048,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test-2.c:5048,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5049,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:5049,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5052,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5052,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5052,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5053,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5053,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5056,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5056,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5056,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5057,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5057,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5069,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5069,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5069,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5070,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5070,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5073,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5073,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5073,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5074,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5074,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5077,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5077,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5077,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5078,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5078,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5080,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5082,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5082,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5083,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:5083,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5084,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5084,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5085,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5085,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5085,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5097,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5097,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5097,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5098,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5098,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5101,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5101,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5101,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5102,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5102,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5104,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:5105,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test-2.c:5106,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5108,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5108,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5108,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5109,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5109,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5109,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5111,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:5111,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5112,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:5112,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5126,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5126,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5127,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5127,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5128,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:5128,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5129,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5129,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5129,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5132,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:5132,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5132,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5134,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:5134,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5134,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:5136,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5136,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5137,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:5138,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5138,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5139,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5141,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:5141,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5142,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:5142,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5144,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:5144,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5145,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:5145,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5148,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5148,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5150,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5150,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5152,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:5152,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5154,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:5154,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5156,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5156,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5158,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5158,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5160,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5160,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5160,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5162,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5162,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5162,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5165,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5165,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5166,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:5166,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5167,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5167,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5170,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5170,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5172,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5172,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5173,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5173,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5174,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5174,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5177,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5177,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5178,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:5178,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5179,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5179,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5183,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5183,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5184,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:5184,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5185,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5185,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5188,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5188,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5191,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5191,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5193,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5193,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5194,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:5194,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5195,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5195,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5198,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5198,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5201,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5201,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5203,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:5203,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5204,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5204,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5208,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5208,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5209,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5209,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5210,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5210,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5211,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5211,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5212,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5212,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5214,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5214,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5215,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5215,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5216,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5216,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5217,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5217,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5219,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5219,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5220,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5220,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5221,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5221,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5222,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5222,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5224,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5224,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5225,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5225,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5226,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5226,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5227,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test-2.c:5227,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5229,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5229,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5231,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5232,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5233,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5234,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5235,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5237,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5240,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5240,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5241,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5241,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5242,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5242,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5244,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5244,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5246,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5246,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5247,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5247,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5250,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5250,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5251,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5251,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5253,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:5253,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5254,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5256,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5256,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5257,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:5257,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5260,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5260,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5261,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5261,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5264,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5264,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5265,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5265,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5267,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5268,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5269,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5271,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5273,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5273,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5274,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5274,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:5276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 767
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5277
      start: 4109
    functionDepth: 2
    functionLinenumber: 4109
    functionLinenumberEnd: 5277
    functionName: Luks2Reencryption
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - t_dm_crypt_keyring_support
    - crypt_keyslot_add_by_volume_key
    - crypt_load
    - crypt_decode_key
    - _system
    - crypt_header_backup
    - crypt_persistent_flags_get
    - crypt_keyslot_context_init_by_passphrase
    - NOTFAIL_
    - crypt_volume_key_keyring
    - crypt_keyslot_add_by_key
    - crypt_keyslot_status
    - crypt_init_data_device
    - crypt_keyslot_context_init_by_token
    - crypt_reencrypt_run
    - crypt_set_pbkdf_type
    - crypt_set_data_offset
    - t_get_devno
    - _cleanup_dmdevices
    - crypt_keyslot_destroy
    - crypt_get_volume_key_size
    - crypt_get_old_volume_key_size
    - crypt_reencrypt_init_by_passphrase
    - crypt_resize
    - crypt_status
    - strlen
    - strcmp
    - set_fast_pbkdf
    - crypt_token_assign_keyslot
    - create_dmdevice_over_loop
    - crypt_format
    - crypt_get_sector_size
    - crypt_reencrypt_init_by_keyslot_context
    - crypt_init_by_name
    - FAIL_
    - chmod
    - prepare_keyfile
    - EQ_
    - crypt_reencrypt_status
    - crypt_get_data_offset
    - OK_
    - crypt_activate_by_keyslot_context
    - CRYPT_FREE
    - crypt_keyslot_context_init_by_keyfile
    - crypt_keyslot_add_by_keyslot_context
    - crypt_header_restore
    - keyctl_unlink
    - crypt_deactivate
    - crypt_keyslot_context_init_by_volume_key
    - crypt_get_cipher
    - crypt_token_luks2_keyring_set
    - crypt_get_cipher_mode
    - _remove_keyfiles
    - add_key
    - remove
    - crypt_activate_by_passphrase
    - t_device_size_by_devno
    - crypt_keyslot_context_free
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void Luks2Reencryption(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5296,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5302,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:5302,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5303,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:5303,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5306,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:5306,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5307,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:5307,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5310,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5310,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5311,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:5311,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5312,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5312,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5313,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5313,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5314,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5314,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5314,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5315,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5315,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5316,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5316,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5317,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5318,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5319,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5322,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5322,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5323,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:5323,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5324,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:5324,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5325,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5325,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5326,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5326,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5326,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5327,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5327,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5328,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5328,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5329,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5330,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5333,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5333,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5333,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5334,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5334,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5335,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5335,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5336,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5339,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5339,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5339,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5340,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5340,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5341,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5341,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5342,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5343,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5346,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5346,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5346,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5347,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5347,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5347,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5348,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5348,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5349,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5349,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5350,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5350,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5351,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5351,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5352,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5353,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5356,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5356,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5357,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5357,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5358,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5358,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5359,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5362,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5362,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5362,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5363,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5363,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5364,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5364,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5365,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5366,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5369,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5369,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5370,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5370,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5371,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5371,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5372,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5372,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5373,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5374,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5376,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:5376,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5377,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:5377,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5378,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:5378,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5381,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:5381,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5382,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5382,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5384,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5384,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:5387,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5387,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5388,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5389,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5389,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:5392,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5392,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5393,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5394,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5394,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5395,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5395,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5397,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5398,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5401,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5401,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5401,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5402,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:5402,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5403,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5403,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5404,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5404,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5405,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:5405,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5408,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5409,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:5409,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5410,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:5411,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5412,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test-2.c:5412,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5413,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/tests/api-test-2.c:5413,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5415,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5416,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5418,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:5420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 86
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5421
      start: 5280
    functionDepth: 2
    functionLinenumber: 5280
    functionLinenumberEnd: 5421
    functionName: LuksKeyslotAdd
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - crypt_load
    - crypt_decode_key
    - crypt_keyslot_context_init_by_passphrase
    - NOTFAIL_
    - GE_
    - crypt_keyslot_status
    - crypt_keyslot_context_init_by_token
    - _cleanup_dmdevices
    - crypt_token_is_assigned
    - strlen
    - set_fast_pbkdf
    - crypt_token_assign_keyslot
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - FAIL_
    - EQ_
    - crypt_keyslot_context_init_by_keyfile
    - crypt_keyslot_add_by_keyslot_context
    - OK_
    - CRYPT_FREE
    - crypt_keyslot_context_init_by_volume_key
    - crypt_token_luks2_keyring_set
    - add_key
    - crypt_keyslot_context_free
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void LuksKeyslotAdd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5440,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5446,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:5446,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5447,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test-2.c:5447,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5449,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5449,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5449,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:5452,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5452,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5453,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5457,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:5457,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5458,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:5458,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5461,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5461,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5462,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:5462,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5463,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5463,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5465,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5465,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5469,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5469,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5470,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test-2.c:5470,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5471,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5474,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5474,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5475,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:5475,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5476,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:5476,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5477,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5477,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5478,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5478,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5478,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5479,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5479,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5480,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5481,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5482,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5485,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5485,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5486,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:5486,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5487,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5487,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test-2.c:5488,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5489,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5489,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5490,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test-2.c:5490,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5491,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5491,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5492,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5492,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5492,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5493,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5493,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5494,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5495,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5495,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5496,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5496,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5497,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5499,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/tests/api-test-2.c:5499,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5500,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tests/api-test-2.c:5500,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5502,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5503,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5503,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5504,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5504,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5504,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5505,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5505,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5506,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5507,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5508,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5510,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5510,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5511,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:5511,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5513,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5513,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5514,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5514,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5515,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test-2.c:5518,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5519,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5519,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5519,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5520,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5520,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5521,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test-2.c:5521,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test-2.c:5522,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5523,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5523,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5524,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test-2.c:5524,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5525,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test-2.c:5528,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5529,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5529,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5530,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5530,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5531,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test-2.c:5531,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test-2.c:5532,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5533,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5533,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5534,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5538,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test-2.c:5538,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test-2.c:5539,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5540,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5540,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5541,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test-2.c:5541,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5542,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5545,1
    - Dst: crypt_keyslot_context_init_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:5545,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test-2.c:5546,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5547,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5547,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5548,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test-2.c:5548,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5549,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5552,1
    - Dst: crypt_keyslot_context_init_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:5552,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test-2.c:5553,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5554,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5554,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5555,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test-2.c:5555,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5556,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5558,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test-2.c:5560,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:5561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 86
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5562
      start: 5423
    functionDepth: 2
    functionLinenumber: 5423
    functionLinenumberEnd: 5562
    functionName: VolumeKeyGet
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - memset
    - crypt_load
    - crypt_decode_key
    - crypt_keyslot_context_init_by_passphrase
    - NOTFAIL_
    - crypt_volume_key_verify
    - crypt_keyslot_context_init_by_token
    - crypt_volume_key_get_by_keyslot_context
    - crypt_keyslot_context_init_by_keyring
    - _cleanup_dmdevices
    - strlen
    - set_fast_pbkdf
    - crypt_token_assign_keyslot
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - FAIL_
    - memcmp
    - EQ_
    - crypt_keyslot_context_init_by_keyfile
    - OK_
    - crypt_keyslot_add_by_keyslot_context
    - CRYPT_FREE
    - crypt_keyslot_context_init_by_volume_key
    - crypt_token_luks2_keyring_set
    - _remove_keyfiles
    - add_key
    - crypt_keyslot_context_free
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void VolumeKeyGet(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_dm_crypt_keyring_support
      Src: /src/cryptsetup/tests/api-test-2.c:5606,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:5607,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5611,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:5611,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5612,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:5612,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5615,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5615,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5616,1
    - Dst: set_fast_pbkdf
      Src: /src/cryptsetup/tests/api-test-2.c:5616,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5617,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5617,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5618,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5618,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5618,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5619,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5619,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5619,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5620,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test-2.c:5620,1
    - Dst: add_key
      Src: /src/cryptsetup/tests/api-test-2.c:5622,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5622,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5623,1
    - Dst: add_key_set_perm
      Src: /src/cryptsetup/tests/api-test-2.c:5625,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5626,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5627,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test-2.c:5627,1
    - Dst: add_key_set_perm
      Src: /src/cryptsetup/tests/api-test-2.c:5628,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5629,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5632,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5632,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5633,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5633,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5633,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5634,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5634,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5635,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5637,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5637,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5637,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5638,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5638,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5639,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5641,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5641,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5642,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5642,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5643,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5645,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5645,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5645,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5646,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5646,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5647,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5647,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5648,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5650,1
    - Dst: crypt_keyslot_context_init_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:5650,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5651,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5651,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5652,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5655,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5655,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5655,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5656,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5656,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5657,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5657,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5658,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5658,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5659,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5661,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5661,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5662,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5662,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5663,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5663,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5664,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5664,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5665,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5667,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5667,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5668,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5668,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5669,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5669,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5670,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5670,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5671,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5673,1
    - Dst: crypt_keyslot_context_init_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:5673,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5674,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5674,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5675,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5675,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5676,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5679,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5679,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5680,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5680,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5680,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5686,1
    - Dst: keyctl_link
      Src: /src/cryptsetup/tests/api-test-2.c:5686,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5688,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5688,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5689,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5689,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5690,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5690,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5691,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5691,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5692,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5692,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5693,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5693,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5695,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5695,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5696,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5696,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5696,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5697,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5697,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5698,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5698,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5699,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5699,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5700,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5700,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5701,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5701,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5703,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5703,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5704,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5704,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5704,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5705,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5705,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5706,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5706,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5707,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5707,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5708,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5708,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5709,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5709,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5712,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5712,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5712,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5713,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5713,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5714,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5714,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5715,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5715,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5716,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5716,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5717,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5717,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5720,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5720,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5721,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5721,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5721,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5722,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5722,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5723,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5723,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5725,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5725,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5726,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5726,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5729,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5730,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5730,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5730,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5731,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5731,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5732,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5732,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5733,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5733,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5734,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5734,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5735,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5735,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5738,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5739,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5739,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5739,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5740,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5740,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5741,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5741,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5742,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:5742,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5743,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5743,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5744,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5744,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5745,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5745,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5746,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:5746,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5747,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5747,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5750,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5750,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5750,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5751,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5751,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5754,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5754,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:5755,1
    - Dst: keyctl_read
      Src: /src/cryptsetup/tests/api-test-2.c:5755,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5757,1
    - Dst: keyctl_update
      Src: /src/cryptsetup/tests/api-test-2.c:5757,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5758,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5758,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5759,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:5759,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5760,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5763,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5763,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5763,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5764,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5764,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:5765,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:5767,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5768,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5768,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5770,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5770,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5771,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:5772,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5775,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5776,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:5776,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5777,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5778,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5778,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5779,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:5779,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5780,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5781,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5781,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5782,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5784,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5784,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5785,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5785,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5786,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:5786,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5787,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5787,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5788,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5788,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5789,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5791,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test-2.c:5791,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5792,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5792,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5793,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:5793,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5794,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test-2.c:5794,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5795,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5796,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5796,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5797,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5797,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5798,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5800,1
    - Dst: crypt_keyslot_context_init_by_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:5800,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5801,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5801,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5802,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:5802,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5803,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5803,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5804,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5804,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5805,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5808,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5809,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5809,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5809,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5810,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5810,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5811,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test-2.c:5811,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5812,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:5812,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5813,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5813,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5814,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5814,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5815,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5815,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5816,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5816,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5817,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5817,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5818,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:5818,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5819,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5819,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:5820,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5822,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5822,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5823,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5826,1
    - Dst: get_luks2_offsets
      Src: /src/cryptsetup/tests/api-test-2.c:5826,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5827,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:5827,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5829,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5829,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5830,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5830,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5831,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:5831,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5832,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5832,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5832,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5833,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:5833,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5833,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5835,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5835,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5835,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5838,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5838,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5839,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5839,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5840,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5840,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5843,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5843,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5844,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5844,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5846,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5846,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5847,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5847,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5847,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5848,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5848,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5849,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5849,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5850,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5850,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5851,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5851,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5852,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5852,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5853,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5853,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5855,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5855,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5856,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5856,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5857,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5857,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5858,1
    - Dst: _kernel_key_by_segment_and_type
      Src: /src/cryptsetup/tests/api-test-2.c:5858,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5863,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5863,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5863,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5864,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5864,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5865,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5865,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5866,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5866,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5867,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5867,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5868,1
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/tests/api-test-2.c:5868,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5871,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5871,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5872,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5872,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5872,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5873,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5873,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5874,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5874,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5875,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5875,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5878,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5878,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5880,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5880,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5880,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5881,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/tests/api-test-2.c:5881,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5882,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5882,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5882,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5883,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5883,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5884,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5884,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5885,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5885,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5886,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5889,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5889,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5890,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5890,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5891,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:5891,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5892,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5892,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5892,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5893,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/tests/api-test-2.c:5893,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5893,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5896,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5896,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5896,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5897,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5897,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5898,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5898,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5898,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5899,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5899,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5900,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5900,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5901,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5901,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5902,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:5902,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5903,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/tests/api-test-2.c:5903,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5905,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5905,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5906,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5906,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5907,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5907,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5908,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5908,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5910,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5910,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5911,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5911,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5912,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5912,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5914,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:5914,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5915,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:5915,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5916,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5916,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5918,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5918,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5918,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5919,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5919,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5920,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5920,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5921,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5921,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5923,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5923,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5924,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5924,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:5925,1
    - Dst: keyctl_read
      Src: /src/cryptsetup/tests/api-test-2.c:5925,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5927,1
    - Dst: keyctl_update
      Src: /src/cryptsetup/tests/api-test-2.c:5927,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5928,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5928,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5930,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:5930,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5931,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:5931,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5932,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5935,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5935,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5936,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5936,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5937,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test-2.c:5937,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5938,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5938,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5938,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5941,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5941,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5941,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5942,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5942,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5943,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5943,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5943,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5944,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5944,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5945,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5945,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5946,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5946,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5948,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5948,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5949,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5949,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5950,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5950,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5952,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:5952,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5953,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5953,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5955,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5955,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5955,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5956,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5956,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5957,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5957,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5958,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5958,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5960,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5960,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5961,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5961,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:5962,1
    - Dst: keyctl_read
      Src: /src/cryptsetup/tests/api-test-2.c:5962,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5964,1
    - Dst: keyctl_update
      Src: /src/cryptsetup/tests/api-test-2.c:5964,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5965,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5965,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5966,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5966,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5968,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:5968,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:5969,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:5972,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5973,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:5973,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5974,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test-2.c:5974,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5976,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:5976,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5987,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test-2.c:5987,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5988,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test-2.c:5988,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5988,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5989,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5989,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5989,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5991,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/tests/api-test-2.c:5991,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:5992,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:5992,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:5992,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5993,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5993,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:5994,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:5994,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5995,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:5995,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5997,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5997,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:5998,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:5998,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:6000,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:6000,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6001,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:6001,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6003,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:6003,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:6004,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:6004,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:6006,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test-2.c:6006,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test-2.c:6006,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:6007,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:6007,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:6008,1
    - Dst: request_key
      Src: /src/cryptsetup/tests/api-test-2.c:6008,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6009,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:6009,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:6011,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:6011,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6012,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test-2.c:6012,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:6013,1
    - Dst: keyctl_read
      Src: /src/cryptsetup/tests/api-test-2.c:6013,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6015,1
    - Dst: keyctl_update
      Src: /src/cryptsetup/tests/api-test-2.c:6015,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:6016,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:6016,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test-2.c:6017,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test-2.c:6017,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6019,1
    - Dst: _drop_keyring_key_from_keyring_name
      Src: /src/cryptsetup/tests/api-test-2.c:6019,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:6020,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:6022,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test-2.c:6023,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test-2.c:6025,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:6027,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 328
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6029
      start: 5564
    functionDepth: 2
    functionLinenumber: 5564
    functionLinenumberEnd: 6029
    functionName: KeyslotContextAndKeyringLink
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - get_luks2_offsets
    - t_dm_crypt_keyring_support
    - crypt_keyslot_add_by_volume_key
    - keyctl_link
    - request_key
    - keyctl_read
    - crypt_keyslot_context_init_by_passphrase
    - NOTFAIL_
    - crypt_set_keyring_to_link
    - _kernel_key_by_segment_and_type
    - GE_
    - crypt_resume_by_keyslot_context
    - crypt_keyslot_add_by_key
    - add_key_set_perm
    - _drop_keyring_key_from_keyring_name
    - crypt_reencrypt_run
    - crypt_set_pbkdf_type
    - crypt_keyslot_context_init_by_keyring
    - _cleanup_dmdevices
    - crypt_reencrypt_init_by_passphrase
    - strlen
    - set_fast_pbkdf
    - crypt_suspend
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - FAIL_
    - crypt_volume_key_get
    - EQ_
    - keyctl_update
    - crypt_activate_by_keyslot_context
    - OK_
    - crypt_keyslot_context_init_by_keyfile
    - CRYPT_FREE
    - crypt_keyslot_context_init_by_vk_in_keyring
    - snprintf
    - keyctl_unlink
    - crypt_deactivate
    - crypt_keyslot_context_init_by_volume_key
    - add_key
    - printf
    - crypt_activate_by_passphrase
    - crypt_keyslot_context_free
    - crypt_init
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void KeyslotContextAndKeyringLink(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:6034,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6038
      start: 6031
    functionDepth: 1
    functionLinenumber: 6031
    functionLinenumberEnd: 6038
    functionName: _crypt_load_check
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_load
    linkageType: ''
    returnType: int
    signature: int _crypt_load_check(struct crypt_device *_cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test-2.c:6044,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test-2.c:6044,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6047,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:6047,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:6049,1
    - Dst: _crypt_load_check
      Src: /src/cryptsetup/tests/api-test-2.c:6049,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:6050,1
    - Dst: crypt_repair
      Src: /src/cryptsetup/tests/api-test-2.c:6050,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6053,1
    - Dst: crypt_repair
      Src: /src/cryptsetup/tests/api-test-2.c:6053,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6054,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:6054,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:6055,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6056,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:6056,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6059,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:6059,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:6060,1
    - Dst: _crypt_load_check
      Src: /src/cryptsetup/tests/api-test-2.c:6060,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6063,1
    - Dst: crypt_repair
      Src: /src/cryptsetup/tests/api-test-2.c:6063,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6064,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:6064,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:6065,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6068,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:6068,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6069,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:6069,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6070,1
    - Dst: crypt_metadata_locking
      Src: /src/cryptsetup/tests/api-test-2.c:6070,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:6072,1
    - Dst: _crypt_load_check
      Src: /src/cryptsetup/tests/api-test-2.c:6072,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:6073,1
    - Dst: crypt_repair
      Src: /src/cryptsetup/tests/api-test-2.c:6073,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6076,1
    - Dst: crypt_repair
      Src: /src/cryptsetup/tests/api-test-2.c:6076,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6077,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:6077,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:6078,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6079,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test-2.c:6079,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6082,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test-2.c:6082,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test-2.c:6083,1
    - Dst: _crypt_load_check
      Src: /src/cryptsetup/tests/api-test-2.c:6083,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6086,1
    - Dst: crypt_repair
      Src: /src/cryptsetup/tests/api-test-2.c:6086,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test-2.c:6087,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test-2.c:6087,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test-2.c:6088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6089
      start: 6040
    functionDepth: 2
    functionLinenumber: 6040
    functionLinenumberEnd: 6089
    functionName: Luks2Repair
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - FAIL_
    - snprintf
    - _crypt_load_check
    - crypt_repair
    - _system
    - crypt_metadata_locking
    - GE_
    - crypt_init
    - OK_
    - CRYPT_FREE
    linkageType: ''
    returnType: void
    signature: void Luks2Repair(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6094
      start: 6091
    functionDepth: 0
    functionLinenumber: 6091
    functionLinenumberEnd: 6094
    functionName: int_handler
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void int_handler(int sig __attribute__((__unused__)))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getuid
      Src: /src/cryptsetup/tests/api-test-2.c:6101,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:6102,1
    - Dst: exit
      Src: /src/cryptsetup/tests/api-test-2.c:6103,1
    - Dst: getenv
      Src: /src/cryptsetup/tests/api-test-2.c:6106,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:6107,1
    - Dst: exit
      Src: /src/cryptsetup/tests/api-test-2.c:6108,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:6112,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:6112,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test-2.c:6114,1
    - Dst: sigaction
      Src: /src/cryptsetup/tests/api-test-2.c:6119,1
    - Dst: sigaction
      Src: /src/cryptsetup/tests/api-test-2.c:6120,1
    - Dst: register_cleanup
      Src: /src/cryptsetup/tests/api-test-2.c:6122,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/api-test-2.c:6124,1
    - Dst: _setup
      Src: /src/cryptsetup/tests/api-test-2.c:6125,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test-2.c:6126,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/api-test-2.c:6127,1
    - Dst: exit
      Src: /src/cryptsetup/tests/api-test-2.c:6128,1
    - Dst: crypt_set_debug_level
      Src: /src/cryptsetup/tests/api-test-2.c:6131,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6133,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6134,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6135,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6136,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6137,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6138,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6139,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6140,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6141,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6142,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6143,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6144,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6145,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6146,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6147,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6148,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6149,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6150,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6151,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6152,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6154,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6156,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6157,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6158,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test-2.c:6159,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/api-test-2.c:6161,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 52
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6163
      start: 6096
    functionDepth: 1
    functionLinenumber: 6096
    functionLinenumberEnd: 6163
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/api-test-2.c
    functionUses: 0
    functionsReached:
    - getuid
    - RUN_
    - exit
    - _setup
    - crypt_set_debug_level
    - getenv
    - sigaction
    - _cleanup
    - printf
    - register_cleanup
    - strcmp
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_backend_rng
      Src: /src/cryptsetup/tests/crypto-check.c:24,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/tests/crypto-check.c:25,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/tests/crypto-check.c:27,1
    - Dst: crypt_cipher_check_kernel
      Src: /src/cryptsetup/tests/crypto-check.c:30,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - alg
    - mode
    - key_bits
    argTypes:
    - char*
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 34
    functionName: check_cipher
    functionSourceFile: /src/cryptsetup/tests/crypto-check.c
    functionUses: 0
    functionsReached:
    - crypt_cipher_check_kernel
    - crypt_backend_rng
    - crypt_cipher_destroy
    - crypt_cipher_init
    linkageType: ''
    returnType: int
    signature: int check_cipher(const char *alg, const char *mode, unsigned long key_bits)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/tests/crypto-check.c:40,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/crypto-check.c:43,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/crypto-check.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - hash
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: check_hash
    functionSourceFile: /src/cryptsetup/tests/crypto-check.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_size
    - crypt_hash_init
    linkageType: ''
    returnType: int
    signature: int check_hash(const char *hash)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-check.c:52,1
    - Dst: crypt_backend_destroy
      Src: /src/cryptsetup/tests/crypto-check.c:54,1
    - Dst: exit
      Src: /src/cryptsetup/tests/crypto-check.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - destroy_backend
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: exit_help
    functionSourceFile: /src/cryptsetup/tests/crypto-check.c
    functionUses: 0
    functionsReached:
    - printf
    - exit
    - crypt_backend_destroy
    linkageType: ''
    returnType: void
    signature: void exit_help(bool destroy_backend)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: exit_help
      Src: /src/cryptsetup/tests/crypto-check.c:63,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/crypto-check.c:65,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/tests/crypto-check.c:66,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/crypto-check.c:68,1
    - Dst: crypt_fips_mode_kernel
      Src: /src/cryptsetup/tests/crypto-check.c:69,1
    - Dst: crypt_backend_init
      Src: /src/cryptsetup/tests/crypto-check.c:71,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-check.c:72,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/crypto-check.c:76,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-check.c:77,1
    - Dst: crypt_backend_version
      Src: /src/cryptsetup/tests/crypto-check.c:77,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/tests/crypto-check.c:78,1
    - Dst: crypt_fips_mode_kernel
      Src: /src/cryptsetup/tests/crypto-check.c:79,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/crypto-check.c:80,1
    - Dst: exit_help
      Src: /src/cryptsetup/tests/crypto-check.c:82,1
    - Dst: check_hash
      Src: /src/cryptsetup/tests/crypto-check.c:83,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/crypto-check.c:84,1
    - Dst: exit_help
      Src: /src/cryptsetup/tests/crypto-check.c:88,1
    - Dst: strtoul
      Src: /src/cryptsetup/tests/crypto-check.c:90,1
    - Dst: exit_help
      Src: /src/cryptsetup/tests/crypto-check.c:92,1
    - Dst: check_cipher
      Src: /src/cryptsetup/tests/crypto-check.c:94,1
    - Dst: crypt_backend_destroy
      Src: /src/cryptsetup/tests/crypto-check.c:97,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 99
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/crypto-check.c
    functionUses: 0
    functionsReached:
    - crypt_fips_mode_kernel
    - crypt_backend_version
    - strtoul
    - printf
    - check_hash
    - crypt_fips_mode
    - crypt_backend_destroy
    - strcmp
    - check_cipher
    - exit_help
    - crypt_backend_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: ARRAY_SIZE
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_SIZE(arr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:25,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:27,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:28,1
    - Dst: fflush
      Src: /src/cryptsetup/tests/crypto-vectors.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - s
    - buf
    - len
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 30
    functionName: printhex
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - fflush
    - printf
    linkageType: ''
    returnType: void
    signature: void printhex(const char *s, const char *buf, size_t len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1003,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1004,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1007,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1009,1
    - Dst: crypt_hmac_size
      Src: /src/cryptsetup/tests/crypto-vectors.c:1010,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1011,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/crypto-vectors.c:1015,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1016,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1019,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1021,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/tests/crypto-vectors.c:1026,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1027,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1030,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1033,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1034,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1035,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1036,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1039,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 996
    functionDepth: 1
    functionLinenumber: 996
    functionLinenumberEnd: 1042
    functionName: pbkdf_test_vectors
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - memcmp
    - crypt_backend_memzero
    - ARRAY_SIZE
    - crypt_pbkdf
    - printf
    - crypt_hash_init
    - crypt_fips_mode
    - printhex
    - crypt_hmac_size
    linkageType: ''
    returnType: int
    signature: int pbkdf_test_vectors(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_crc32
      Src: /src/cryptsetup/tests/crypto-vectors.c:1051,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1057,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1058,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1059,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - vector
    - i
    argTypes:
    - struct hash_test_vector*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1064
    functionName: crc32_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - printhex
    - printf
    - crypt_crc32
    linkageType: ''
    returnType: int
    signature: int crc32_test(const struct hash_test_vector *vector, unsigned int
      i)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1074,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1076,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1078,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1081,1
    - Dst: crc32_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1082,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1084,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/tests/crypto-vectors.c:1088,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1089,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/tests/crypto-vectors.c:1093,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1099,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1100,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/crypto-vectors.c:1102,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1103,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/crypto-vectors.c:1107,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/tests/crypto-vectors.c:1109,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1113,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1117,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1118,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1119,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1120,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1121,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1128,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/crypto-vectors.c:1129,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/tests/crypto-vectors.c:1131,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1133,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1134,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1135,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1136,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1137,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1141,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1143,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1066
    functionDepth: 2
    functionLinenumber: 1066
    functionLinenumberEnd: 1147
    functionName: hash_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - crc32_test
    - crypt_hash_final
    - crypt_hash_destroy
    - crypt_hash_size
    - memcmp
    - crypt_backend_memzero
    - ARRAY_SIZE
    - crypt_hash_write
    - printf
    - crypt_hash_init
    - printhex
    - strcmp
    linkageType: ''
    returnType: int
    signature: int hash_test(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1157,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1159,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1161,1
    - Dst: crypt_hmac_size
      Src: /src/cryptsetup/tests/crypto-vectors.c:1163,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1164,1
    - Dst: crypt_hmac_size
      Src: /src/cryptsetup/tests/crypto-vectors.c:1168,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1174,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1175,1
    - Dst: crypt_hmac_init
      Src: /src/cryptsetup/tests/crypto-vectors.c:1177,1
    - Dst: crypt_hmac_write
      Src: /src/cryptsetup/tests/crypto-vectors.c:1180,1
    - Dst: crypt_hmac_final
      Src: /src/cryptsetup/tests/crypto-vectors.c:1182,1
    - Dst: crypt_hmac_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1185,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1189,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1190,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1191,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1192,1
    - Dst: crypt_hmac_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1193,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1200,1
    - Dst: crypt_hmac_write
      Src: /src/cryptsetup/tests/crypto-vectors.c:1201,1
    - Dst: crypt_hmac_final
      Src: /src/cryptsetup/tests/crypto-vectors.c:1203,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1205,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1206,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1207,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1208,1
    - Dst: crypt_hmac_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1209,1
    - Dst: crypt_hmac_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1213,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1215,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1149
    functionDepth: 1
    functionLinenumber: 1149
    functionLinenumberEnd: 1219
    functionName: hmac_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - memcmp
    - crypt_hmac_write
    - crypt_backend_memzero
    - crypt_hmac_init
    - ARRAY_SIZE
    - crypt_hmac_destroy
    - printf
    - crypt_hmac_final
    - printhex
    - crypt_hmac_size
    linkageType: ''
    returnType: int
    signature: int hmac_test(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1229,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1231,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1233,1
    - Dst: crypt_cipher_ivsize
      Src: /src/cryptsetup/tests/crypto-vectors.c:1235,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/tests/crypto-vectors.c:1240,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1243,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1246,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1251,1
    - Dst: crypt_cipher_encrypt
      Src: /src/cryptsetup/tests/crypto-vectors.c:1252,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1254,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1258,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1259,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1260,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1261,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1262,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1266,1
    - Dst: crypt_cipher_decrypt
      Src: /src/cryptsetup/tests/crypto-vectors.c:1267,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1269,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1273,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1274,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1275,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1276,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1277,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1281,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1283,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1221
    functionDepth: 1
    functionLinenumber: 1221
    functionLinenumberEnd: 1287
    functionName: cipher_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - crypt_cipher_encrypt
    - memcmp
    - crypt_cipher_init
    - crypt_cipher_decrypt
    - crypt_backend_memzero
    - ARRAY_SIZE
    - crypt_cipher_destroy
    - crypt_cipher_ivsize
    - printf
    - printhex
    linkageType: ''
    returnType: int
    signature: int cipher_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1293,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/crypto-vectors.c:1294,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/crypto-vectors.c:1297,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/tests/crypto-vectors.c:1298,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - in
    - length
    - out
    argTypes:
    - char*
    - size_t
    - char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1289
    functionDepth: 1
    functionLinenumber: 1289
    functionLinenumberEnd: 1301
    functionName: get_sha256
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_final
    - crypt_backend_memzero
    - crypt_hash_write
    - crypt_hash_init
    linkageType: ''
    returnType: void
    signature: void get_sha256(const char *in, size_t length, char out[32])
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1312,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1314,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1316,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1320,1
    - Dst: crypt_storage_init
      Src: /src/cryptsetup/tests/crypto-vectors.c:1323,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1326,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1329,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1334,1
    - Dst: crypt_storage_encrypt
      Src: /src/cryptsetup/tests/crypto-vectors.c:1335,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1336,1
    - Dst: get_sha256
      Src: /src/cryptsetup/tests/crypto-vectors.c:1340,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1341,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1342,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1343,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1344,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1345,1
    - Dst: crypt_storage_decrypt
      Src: /src/cryptsetup/tests/crypto-vectors.c:1349,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1350,1
    - Dst: get_sha256
      Src: /src/cryptsetup/tests/crypto-vectors.c:1354,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1355,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1356,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1357,1
    - Dst: printhex
      Src: /src/cryptsetup/tests/crypto-vectors.c:1358,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1359,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1363,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1365,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1303
    functionDepth: 2
    functionLinenumber: 1303
    functionLinenumberEnd: 1369
    functionName: cipher_iv_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - memcmp
    - snprintf
    - crypt_backend_memzero
    - crypt_storage_encrypt
    - ARRAY_SIZE
    - crypt_storage_destroy
    - get_sha256
    - crypt_storage_decrypt
    - crypt_storage_init
    - printf
    - printhex
    linkageType: ''
    returnType: int
    signature: int cipher_iv_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/tests/crypto-vectors.c:1375,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/crypto-vectors.c:1378,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - hash
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1371
    functionDepth: 0
    functionLinenumber: 1371
    functionLinenumberEnd: 1383
    functionName: check_hash
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 1
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_size
    - crypt_hash_init
    linkageType: ''
    returnType: int
    signature: int check_hash(const char *hash)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1391,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1392,1
    - Dst: crypt_base64_encode
      Src: /src/cryptsetup/tests/crypto-vectors.c:1395,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1398,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1400,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1401,1
    - Dst: free
      Src: /src/cryptsetup/tests/crypto-vectors.c:1402,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1405,1
    - Dst: free
      Src: /src/cryptsetup/tests/crypto-vectors.c:1406,1
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/tests/crypto-vectors.c:1410,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/crypto-vectors.c:1412,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1413,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1416,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1417,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1420,1
    - Dst: free
      Src: /src/cryptsetup/tests/crypto-vectors.c:1421,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1385
    functionDepth: 1
    functionLinenumber: 1385
    functionLinenumberEnd: 1425
    functionName: base64_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - memcmp
    - free
    - crypt_base64_decode
    - ARRAY_SIZE
    - printf
    - strlen
    - strcmp
    - crypt_base64_encode
    linkageType: ''
    returnType: int
    signature: int base64_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1433,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1434,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1435,1
    - Dst: crypt_utf8_to_utf16
      Src: /src/cryptsetup/tests/crypto-vectors.c:1437,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1439,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1441,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1444,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/tests/crypto-vectors.c:1446,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1448,1
    - Dst: crypt_utf16_to_utf8
      Src: /src/cryptsetup/tests/crypto-vectors.c:1449,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/crypto-vectors.c:1450,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/crypto-vectors.c:1451,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1453,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1456,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1427
    functionDepth: 1
    functionLinenumber: 1427
    functionLinenumberEnd: 1460
    functionName: utf8_16_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - crypt_utf8_to_utf16
    - memcmp
    - memcpy
    - crypt_backend_memzero
    - ARRAY_SIZE
    - printf
    - crypt_utf16_to_utf8
    - strlen
    linkageType: ''
    returnType: int
    signature: int utf8_16_test(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1464,1
    - Dst: check_hash
      Src: /src/cryptsetup/tests/crypto-vectors.c:1465,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1468,1
    - Dst: check_hash
      Src: /src/cryptsetup/tests/crypto-vectors.c:1469,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1472,1
    - Dst: check_hash
      Src: /src/cryptsetup/tests/crypto-vectors.c:1473,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1462
    functionDepth: 0
    functionLinenumber: 1462
    functionLinenumberEnd: 1479
    functionName: default_alg_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - printf
    - check_hash
    linkageType: ''
    returnType: int
    signature: int default_alg_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1483,1
    - Dst: crypt_backend_memeq
      Src: /src/cryptsetup/tests/crypto-vectors.c:1484,1
    - Dst: crypt_backend_memeq
      Src: /src/cryptsetup/tests/crypto-vectors.c:1486,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1481
    functionDepth: 0
    functionLinenumber: 1481
    functionLinenumberEnd: 1491
    functionName: memcmp_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - printf
    - crypt_backend_memeq
    linkageType: ''
    returnType: int
    signature: int memcmp_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/tests/crypto-vectors.c:1522,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1523,1
    - Dst: crypt_cipher_check_kernel
      Src: /src/cryptsetup/tests/crypto-vectors.c:1528,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1533,1
    - Dst: crypt_fips_mode_kernel
      Src: /src/cryptsetup/tests/crypto-vectors.c:1535,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1536,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1516
    functionDepth: 1
    functionLinenumber: 1516
    functionLinenumberEnd: 1542
    functionName: kernel_capi_check_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - crypt_cipher_check_kernel
    - ARRAY_SIZE
    - printf
    - crypt_fips_mode_kernel
    linkageType: ''
    returnType: int
    signature: int kernel_capi_check_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1547,1
    - Dst: crypt_backend_destroy
      Src: /src/cryptsetup/tests/crypto-vectors.c:1548,1
    - Dst: exit
      Src: /src/cryptsetup/tests/crypto-vectors.c:1549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - r
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1544
    functionDepth: 0
    functionLinenumber: 1544
    functionLinenumberEnd: 1550
    functionName: exit_test
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 1
    functionsReached:
    - printf
    - exit
    - crypt_backend_destroy
    linkageType: ''
    returnType: void
    signature: void exit_test(const char *msg, int r)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: setvbuf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1554,1
    - Dst: getenv
      Src: /src/cryptsetup/tests/crypto-vectors.c:1557,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1558,1
    - Dst: exit
      Src: /src/cryptsetup/tests/crypto-vectors.c:1559,1
    - Dst: crypt_backend_init
      Src: /src/cryptsetup/tests/crypto-vectors.c:1563,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1564,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1566,1
    - Dst: crypt_backend_version
      Src: /src/cryptsetup/tests/crypto-vectors.c:1566,1
    - Dst: pbkdf_test_vectors
      Src: /src/cryptsetup/tests/crypto-vectors.c:1568,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1569,1
    - Dst: hash_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1571,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1572,1
    - Dst: hmac_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1574,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1575,1
    - Dst: cipher_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1577,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1578,1
    - Dst: cipher_iv_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1580,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1581,1
    - Dst: base64_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1583,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1584,1
    - Dst: memcmp_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1586,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1587,1
    - Dst: utf8_16_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1589,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1590,1
    - Dst: kernel_capi_check_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1592,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1593,1
    - Dst: default_alg_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1595,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/tests/crypto-vectors.c:1596,1
    - Dst: printf
      Src: /src/cryptsetup/tests/crypto-vectors.c:1597,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1599,1
    - Dst: exit_test
      Src: /src/cryptsetup/tests/crypto-vectors.c:1602,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1552
    functionDepth: 3
    functionLinenumber: 1552
    functionLinenumberEnd: 1603
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/crypto-vectors.c
    functionUses: 0
    functionsReached:
    - exit
    - pbkdf_test_vectors
    - crypt_backend_version
    - cipher_iv_test
    - base64_test
    - setvbuf
    - memcmp_test
    - getenv
    - utf8_16_test
    - hash_test
    - kernel_capi_check_test
    - printf
    - default_alg_test
    - crypt_fips_mode
    - crypt_backend_init
    - exit_test
    - cipher_test
    - hmac_test
    linkageType: ''
    returnType: int
    signature: int main(__attribute__ ((unused)) int argc, __attribute__ ((unused))char
      *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: posix_memalign
      Src: /src/cryptsetup/tests/unit-utils-io.c:43,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:44,1
    - Dst: open
      Src: /src/cryptsetup/tests/unit-utils-io.c:48,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:50,1
    - Dst: read_buffer
      Src: /src/cryptsetup/tests/unit-utils-io.c:54,1
    - Dst: close
      Src: /src/cryptsetup/tests/unit-utils-io.c:61,1
    - Dst: free
      Src: /src/cryptsetup/tests/unit-utils-io.c:62,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 64
    functionName: test_read_buffer
    functionSourceFile: /src/cryptsetup/tests/unit-utils-io.c
    functionUses: 0
    functionsReached:
    - read_buffer
    - free
    - close
    - posix_memalign
    - open
    - fprintf
    linkageType: ''
    returnType: int
    signature: int test_read_buffer(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: posix_memalign
      Src: /src/cryptsetup/tests/unit-utils-io.c:74,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:75,1
    - Dst: open
      Src: /src/cryptsetup/tests/unit-utils-io.c:79,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:81,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/unit-utils-io.c:85,1
    - Dst: close
      Src: /src/cryptsetup/tests/unit-utils-io.c:92,1
    - Dst: free
      Src: /src/cryptsetup/tests/unit-utils-io.c:93,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 95
    functionName: test_write_buffer
    functionSourceFile: /src/cryptsetup/tests/unit-utils-io.c
    functionUses: 0
    functionsReached:
    - free
    - close
    - posix_memalign
    - write_buffer
    - open
    - fprintf
    linkageType: ''
    returnType: int
    signature: int test_write_buffer(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: posix_memalign
      Src: /src/cryptsetup/tests/unit-utils-io.c:106,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:107,1
    - Dst: open
      Src: /src/cryptsetup/tests/unit-utils-io.c:111,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:113,1
    - Dst: read_blockwise
      Src: /src/cryptsetup/tests/unit-utils-io.c:118,1
    - Dst: close
      Src: /src/cryptsetup/tests/unit-utils-io.c:125,1
    - Dst: free
      Src: /src/cryptsetup/tests/unit-utils-io.c:126,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 128
    functionName: test_read_blockwise
    functionSourceFile: /src/cryptsetup/tests/unit-utils-io.c
    functionUses: 0
    functionsReached:
    - read_blockwise
    - free
    - close
    - posix_memalign
    - open
    - fprintf
    linkageType: ''
    returnType: int
    signature: int test_read_blockwise(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: posix_memalign
      Src: /src/cryptsetup/tests/unit-utils-io.c:138,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:139,1
    - Dst: open
      Src: /src/cryptsetup/tests/unit-utils-io.c:143,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:145,1
    - Dst: write_blockwise
      Src: /src/cryptsetup/tests/unit-utils-io.c:149,1
    - Dst: close
      Src: /src/cryptsetup/tests/unit-utils-io.c:156,1
    - Dst: free
      Src: /src/cryptsetup/tests/unit-utils-io.c:157,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 159
    functionName: test_write_blockwise
    functionSourceFile: /src/cryptsetup/tests/unit-utils-io.c
    functionUses: 0
    functionsReached:
    - write_blockwise
    - close
    - free
    - posix_memalign
    - open
    - fprintf
    linkageType: ''
    returnType: int
    signature: int test_write_blockwise(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: posix_memalign
      Src: /src/cryptsetup/tests/unit-utils-io.c:169,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:170,1
    - Dst: open
      Src: /src/cryptsetup/tests/unit-utils-io.c:174,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:176,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/tests/unit-utils-io.c:180,1
    - Dst: close
      Src: /src/cryptsetup/tests/unit-utils-io.c:187,1
    - Dst: free
      Src: /src/cryptsetup/tests/unit-utils-io.c:188,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 190
    functionName: test_read_lseek_blockwise
    functionSourceFile: /src/cryptsetup/tests/unit-utils-io.c
    functionUses: 0
    functionsReached:
    - free
    - close
    - posix_memalign
    - read_lseek_blockwise
    - open
    - fprintf
    linkageType: ''
    returnType: int
    signature: int test_read_lseek_blockwise(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: posix_memalign
      Src: /src/cryptsetup/tests/unit-utils-io.c:200,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:201,1
    - Dst: open
      Src: /src/cryptsetup/tests/unit-utils-io.c:205,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:207,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/tests/unit-utils-io.c:211,1
    - Dst: close
      Src: /src/cryptsetup/tests/unit-utils-io.c:218,1
    - Dst: free
      Src: /src/cryptsetup/tests/unit-utils-io.c:219,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 221
    functionName: test_write_lseek_blockwise
    functionSourceFile: /src/cryptsetup/tests/unit-utils-io.c
    functionUses: 0
    functionsReached:
    - free
    - close
    - posix_memalign
    - open
    - fprintf
    - write_lseek_blockwise
    linkageType: ''
    returnType: int
    signature: int test_write_lseek_blockwise(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: usage
    functionSourceFile: /src/cryptsetup/tests/unit-utils-io.c
    functionUses: 1
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/cryptsetup/tests/unit-utils-io.c:234,1
    - Dst: stat
      Src: /src/cryptsetup/tests/unit-utils-io.c:238,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:239,1
    - Dst: sscanf
      Src: /src/cryptsetup/tests/unit-utils-io.c:243,1
    - Dst: sscanf
      Src: /src/cryptsetup/tests/unit-utils-io.c:245,1
    - Dst: sscanf
      Src: /src/cryptsetup/tests/unit-utils-io.c:248,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-io.c:253,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-io.c:255,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-io.c:257,1
    - Dst: usage
      Src: /src/cryptsetup/tests/unit-utils-io.c:259,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-io.c:263,1
    - Dst: usage
      Src: /src/cryptsetup/tests/unit-utils-io.c:265,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-io.c:269,1
    - Dst: usage
      Src: /src/cryptsetup/tests/unit-utils-io.c:271,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/unit-utils-io.c:275,1
    - Dst: usage
      Src: /src/cryptsetup/tests/unit-utils-io.c:277,1
    - Dst: usage
      Src: /src/cryptsetup/tests/unit-utils-io.c:282,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 55
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 294
    functionName: parse_input_params
    functionSourceFile: /src/cryptsetup/tests/unit-utils-io.c
    functionUses: 1
    functionsReached:
    - usage
    - sscanf
    - stat
    - strcmp
    - fprintf
    linkageType: ''
    returnType: int
    signature: int parse_input_params(int argc, char **argv)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/cryptsetup/tests/unit-utils-io.c:302,1
    - Dst: printf
      Src: /src/cryptsetup/tests/unit-utils-io.c:303,1
    - Dst: exit
      Src: /src/cryptsetup/tests/unit-utils-io.c:304,1
    - Dst: parse_input_params
      Src: /src/cryptsetup/tests/unit-utils-io.c:307,1
    - Dst: sysconf
      Src: /src/cryptsetup/tests/unit-utils-io.c:310,1
    - Dst: test_read_buffer
      Src: /src/cryptsetup/tests/unit-utils-io.c:316,1
    - Dst: test_write_buffer
      Src: /src/cryptsetup/tests/unit-utils-io.c:319,1
    - Dst: test_read_blockwise
      Src: /src/cryptsetup/tests/unit-utils-io.c:322,1
    - Dst: test_write_blockwise
      Src: /src/cryptsetup/tests/unit-utils-io.c:325,1
    - Dst: test_read_lseek_blockwise
      Src: /src/cryptsetup/tests/unit-utils-io.c:328,1
    - Dst: test_write_lseek_blockwise
      Src: /src/cryptsetup/tests/unit-utils-io.c:331,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/unit-utils-io.c:334,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 296
    functionDepth: 2
    functionLinenumber: 296
    functionLinenumberEnd: 339
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/unit-utils-io.c
    functionUses: 0
    functionsReached:
    - test_write_lseek_blockwise
    - exit
    - parse_input_params
    - test_read_blockwise
    - sysconf
    - getenv
    - test_read_lseek_blockwise
    - printf
    - test_read_buffer
    - test_write_blockwise
    - test_write_buffer
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: UNUSED
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNUSED(expr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: format
      Src: /src/cryptsetup/tests/all-symbols-test.c:25,1
    - Dst: va_start
      Src: /src/cryptsetup/tests/all-symbols-test.c:32,1
    - Dst: vsnprintf
      Src: /src/cryptsetup/tests/all-symbols-test.c:34,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/all-symbols-test.c:42,1
    - Dst: fflush
      Src: /src/cryptsetup/tests/all-symbols-test.c:45,1
    - Dst: strcat
      Src: /src/cryptsetup/tests/all-symbols-test.c:46,1
    - Dst: fprintf
      Src: /src/cryptsetup/tests/all-symbols-test.c:47,1
    - Dst: va_end
      Src: /src/cryptsetup/tests/all-symbols-test.c:51,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - level
    - format
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 52
    functionName: test_logf
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached:
    - fflush
    - format
    - vsnprintf
    - va_end
    - strcat
    - fprintf
    - va_start
    linkageType: ''
    returnType: void
    signature: void test_logf(int level, const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 4
    argNames:
    - (
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: log_dbg
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_dbg(x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 4
    argNames:
    - (
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: log_std
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_std(x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 4
    argNames:
    - (
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: log_err
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_err(x...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/tests/all-symbols-test.c:64,1
    - Dst: dlvsym
      Src: /src/cryptsetup/tests/all-symbols-test.c:65,1
    - Dst: UNUSED
      Src: /src/cryptsetup/tests/all-symbols-test.c:66,1
    - Dst: dlerror
      Src: /src/cryptsetup/tests/all-symbols-test.c:67,1
    - Dst: log_err
      Src: /src/cryptsetup/tests/all-symbols-test.c:70,1
    - Dst: log_dbg
      Src: /src/cryptsetup/tests/all-symbols-test.c:74,1
    - Dst: UNUSED
      Src: /src/cryptsetup/tests/all-symbols-test.c:76,1
    - Dst: UNUSED
      Src: /src/cryptsetup/tests/all-symbols-test.c:77,1
    - Dst: UNUSED
      Src: /src/cryptsetup/tests/all-symbols-test.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - h
    - symbol
    - version
    argTypes:
    - void*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 81
    functionName: check_dlvsym
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached:
    - dlvsym
    - dlerror
    - log_dbg
    - log_err
    - UNUSED
    linkageType: ''
    returnType: int
    signature: int check_dlvsym(void *h, const char *symbol, const char *version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/tests/all-symbols-test.c:88,1
    - Dst: dlsym
      Src: /src/cryptsetup/tests/all-symbols-test.c:89,1
    - Dst: UNUSED
      Src: /src/cryptsetup/tests/all-symbols-test.c:90,1
    - Dst: dlerror
      Src: /src/cryptsetup/tests/all-symbols-test.c:91,1
    - Dst: log_err
      Src: /src/cryptsetup/tests/all-symbols-test.c:94,1
    - Dst: log_dbg
      Src: /src/cryptsetup/tests/all-symbols-test.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - h
    - symbol
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 100
    functionName: check_dlsym
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached:
    - dlerror
    - log_dbg
    - log_err
    - dlsym
    - UNUSED
    linkageType: ''
    returnType: int
    signature: int check_dlsym(void *h, const char *symbol)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/tests/all-symbols-test.c:119,1
    - Dst: log_std
      Src: /src/cryptsetup/tests/all-symbols-test.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - h
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 126
    functionName: check_all_symbols
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached:
    - log_err
    - log_std
    linkageType: ''
    returnType: int
    signature: int check_all_symbols(void *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - SYM
    - ','
    - VER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: CHECK_SYMBOL
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SYMBOL(SYM, VER)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/tests/all-symbols-test.c:130,1
    - Dst: exit
      Src: /src/cryptsetup/tests/all-symbols-test.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - app
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 133
    functionName: usage
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 2
    functionsReached:
    - exit
    - log_std
    linkageType: ''
    returnType: void
    signature: void usage(const char *app)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/tests/all-symbols-test.c:143,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/all-symbols-test.c:143,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/all-symbols-test.c:144,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/all-symbols-test.c:146,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/all-symbols-test.c:146,1
    - Dst: usage
      Src: /src/cryptsetup/tests/all-symbols-test.c:147,1
    - Dst: log_std
      Src: /src/cryptsetup/tests/all-symbols-test.c:150,1
    - Dst: dlopen
      Src: /src/cryptsetup/tests/all-symbols-test.c:152,1
    - Dst: log_err
      Src: /src/cryptsetup/tests/all-symbols-test.c:154,1
    - Dst: dlerror
      Src: /src/cryptsetup/tests/all-symbols-test.c:154,1
    - Dst: dlerror
      Src: /src/cryptsetup/tests/all-symbols-test.c:157,1
    - Dst: log_std
      Src: /src/cryptsetup/tests/all-symbols-test.c:158,1
    - Dst: check_all_symbols
      Src: /src/cryptsetup/tests/all-symbols-test.c:160,1
    - Dst: dlclose
      Src: /src/cryptsetup/tests/all-symbols-test.c:162,1
    - Dst: log_err
      Src: /src/cryptsetup/tests/all-symbols-test.c:163,1
    - Dst: dlerror
      Src: /src/cryptsetup/tests/all-symbols-test.c:163,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 168
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/all-symbols-test.c
    functionUses: 0
    functionsReached:
    - log_std
    - usage
    - dlopen
    - check_all_symbols
    - dlerror
    - log_err
    - dlclose
    - strcmp
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DIV_ROUND_UP
      Src: /src/cryptsetup/tests/api-test.c:99,1
    - Dst: DIV_ROUND_UP_MODULO
      Src: /src/cryptsetup/tests/api-test.c:100,1
    - Dst: DIV_ROUND_UP
      Src: /src/cryptsetup/tests/api-test.c:100,1
    - Dst: DIV_ROUND_UP_MODULO
      Src: /src/cryptsetup/tests/api-test.c:103,1
    - Dst: DIV_ROUND_UP_MODULO
      Src: /src/cryptsetup/tests/api-test.c:108,1
    - Dst: DIV_ROUND_UP_MODULO
      Src: /src/cryptsetup/tests/api-test.c:115,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 6
    argNames:
    - metadata_device
    - keylength
    - alignpayload_sec
    - alignoffset_sec
    - r_header_size
    - r_payload_offset
    argTypes:
    - int
    - size_t
    - unsigned int
    - unsigned int
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 120
    functionName: get_luks_offsets
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - DIV_ROUND_UP_MODULO
    - DIV_ROUND_UP
    linkageType: ''
    returnType: int
    signature: "int get_luks_offsets(int metadata_device,\n\t\t\t    size_t keylength,\n\t\t\t
      \   unsigned int alignpayload_sec,\n\t\t\t    unsigned int alignoffset_sec,\n\t\t\t
      \   uint64_t *r_header_size,\n\t\t\t    uint64_t *r_payload_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:124,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: _remove_keyfiles
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 6
    functionsReached:
    - remove
    linkageType: ''
    returnType: void
    signature: void _remove_keyfiles(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:140,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:141,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:143,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:144,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:146,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:147,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:149,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:150,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:152,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:153,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:155,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:156,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 159
    functionName: _cleanup_dmdevices
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 21
    functionsReached:
    - _system
    - stat
    linkageType: ''
    returnType: void
    signature: void _cleanup_dmdevices(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:165,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:166,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:170,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:171,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:173,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:174,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:176,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:177,1
    - Dst: stat
      Src: /src/cryptsetup/tests/api-test.c:179,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:180,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:182,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test.c:184,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test.c:185,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test.c:187,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test.c:188,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test.c:190,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test.c:191,1
    - Dst: loop_device
      Src: /src/cryptsetup/tests/api-test.c:193,1
    - Dst: loop_detach
      Src: /src/cryptsetup/tests/api-test.c:194,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:196,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:197,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:200,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:202,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:204,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:205,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:206,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:207,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:208,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:209,1
    - Dst: remove
      Src: /src/cryptsetup/tests/api-test.c:210,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:212,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test.c:214,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test.c:215,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test.c:216,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test.c:217,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test.c:218,1
    - Dst: free
      Src: /src/cryptsetup/tests/api-test.c:219,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 220
    functionName: _cleanup
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 9
    functionsReached:
    - free
    - _system
    - _remove_keyfiles
    - _cleanup_dmdevices
    - remove
    - stat
    - loop_device
    - loop_detach
    - CRYPT_FREE
    linkageType: ''
    returnType: void
    signature: void _cleanup(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/cryptsetup/tests/api-test.c:227,1
    - Dst: mkstemp
      Src: /src/cryptsetup/tests/api-test.c:231,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:232,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test.c:235,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test.c:236,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:239,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test.c:242,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test.c:243,1
    - Dst: strdup
      Src: /src/cryptsetup/tests/api-test.c:245,1
    - Dst: mkstemp
      Src: /src/cryptsetup/tests/api-test.c:249,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:250,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test.c:253,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test.c:254,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:257,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:260,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:261,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:263,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test.c:264,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test.c:265,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:267,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test.c:268,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test.c:269,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:272,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:274,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:276,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:279,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:281,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:284,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:287,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:289,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:290,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:291,1
    - Dst: t_dm_check_versions
      Src: /src/cryptsetup/tests/api-test.c:293,1
    - Dst: fips_mode
      Src: /src/cryptsetup/tests/api-test.c:296,1
    - Dst: fips_mode_kernel
      Src: /src/cryptsetup/tests/api-test.c:297,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:299,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/tests/api-test.c:302,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 305
    functionName: _setup
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 1
    functionsReached:
    - mkstemp
    - snprintf
    - fips_mode_kernel
    - _system
    - crypt_set_log_callback
    - t_dm_check_versions
    - strdup
    - printf
    - fips_mode
    - close
    - loop_attach
    linkageType: ''
    returnType: int
    signature: int _setup(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:322,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:328,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:328,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:329,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:329,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:330,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:330,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:331,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:331,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:332,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:332,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:333,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:336,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:336,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:339,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:339,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:340,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:340,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:341,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:341,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:342,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:342,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test.c:342,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:343,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:343,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test.c:343,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:344,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:344,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:345,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/tests/api-test.c:345,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:346,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:346,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:351,1
    - Dst: crypt_set_uuid
      Src: /src/cryptsetup/tests/api-test.c:351,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:353,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:356,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:356,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:357,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:357,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:358,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:358,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:359,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:359,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:360,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:360,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:361,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:361,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:362,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:365,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:369,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:369,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:370,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:370,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:371,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:371,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:373,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:373,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:373,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:374,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:374,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:377,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:379,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:379,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:380,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:380,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:381,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:381,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:381,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:382,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:382,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:383,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test.c:383,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/tests/api-test.c:383,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:384,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:385,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:386,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:386,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:387,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:392,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:393,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:393,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:394,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:394,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:394,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:395,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:395,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:396,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:401,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:402,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:402,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:403,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:403,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:403,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:404,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:404,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:405,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:410,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:411,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:411,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:412,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:412,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:412,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:413,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:413,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:414,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:419,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:420,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:420,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:421,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:421,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:421,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:422,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:422,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:423,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:428,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:429,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:429,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:430,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:430,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:430,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:431,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:431,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:432,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:433,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:434,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:434,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:436,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:443,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:443,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:444,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:444,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:445,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:445,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:445,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:447,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:447,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:447,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:450,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:450,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:451,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test.c:451,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/tests/api-test.c:451,1
    - Dst: open
      Src: /src/cryptsetup/tests/api-test.c:452,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:453,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:453,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:454,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:454,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test.c:455,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:456,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:456,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:457,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:457,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:458,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:461,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:461,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:462,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:462,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:463,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:463,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:464,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:467,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test.c:467,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:468,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:468,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:470,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:472,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test.c:472,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:473,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test.c:473,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:474,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:474,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test.c:474,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:475,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:475,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test.c:475,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:476,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:476,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:477,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/tests/api-test.c:477,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:478,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:478,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:479,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:479,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:480,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:482,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:482,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:483,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:483,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:488,1
    - Dst: crypt_set_data_device
      Src: /src/cryptsetup/tests/api-test.c:488,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test.c:489,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/tests/api-test.c:489,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:490,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test.c:490,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:493,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:493,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test.c:493,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:495,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:495,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:496,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:496,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:499,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:499,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:500,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:501,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:504,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:504,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:505,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:505,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:508,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:508,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:509,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:510,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:511,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:511,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:512,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:513,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:514,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:514,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:515,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:515,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:516,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:519,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:519,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:522,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:522,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:523,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:523,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:524,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:525,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:527,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:527,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:528,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:529,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:532,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:532,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:533,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:534,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:535,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:535,1
    - Dst: open
      Src: /src/cryptsetup/tests/api-test.c:536,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test.c:537,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test.c:538,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:541,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:541,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:542,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:543,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:545,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:545,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:546,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:547,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:548,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:548,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:549,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:553,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:553,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:554,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:554,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:555,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:555,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:558,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test.c:558,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:559,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:559,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:560,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:560,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:560,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:561,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:561,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:564,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:567,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test.c:567,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:567,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:569,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test.c:569,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:569,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:570,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:570,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:571,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:572,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:572,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:572,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:573,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:573,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:574,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:574,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:575,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:577,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:577,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test.c:577,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:578,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:578,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test.c:578,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:579,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:579,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:580,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:580,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:581,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:581,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:584,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:584,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:584,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:585,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:585,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:585,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:586,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:586,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:587,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:587,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:588,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:588,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:589,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:589,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:590,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:590,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:590,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:591,1
    - Dst: crypt_activate_by_keyfile_device_offset
      Src: /src/cryptsetup/tests/api-test.c:591,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:591,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:592,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:592,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:593,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:593,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:594,1
    - Dst: crypt_activate_by_keyfile_device_offset
      Src: /src/cryptsetup/tests/api-test.c:594,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:595,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:595,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:596,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:597,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:599,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:599,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:600,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:600,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:603,1
    - Dst: crypt_keyslot_add_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:603,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:603,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:603,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:604,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:604,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:604,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:605,1
    - Dst: crypt_keyslot_add_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:605,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:605,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:605,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:606,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test.c:606,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:607,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test.c:607,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:608,1
    - Dst: crypt_set_label
      Src: /src/cryptsetup/tests/api-test.c:608,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test.c:609,1
    - Dst: crypt_get_label
      Src: /src/cryptsetup/tests/api-test.c:609,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test.c:610,1
    - Dst: crypt_get_subsystem
      Src: /src/cryptsetup/tests/api-test.c:610,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:611,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:613,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 219
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 614
    functionName: AddDevicePlain
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_keyslot_add_by_volume_key
    - crypt_get_iv_offset
    - crypt_header_is_detached
    - crypt_decode_key
    - crypt_keyslot_context_init_by_passphrase
    - crypt_get_subsystem
    - GE_
    - NOTFAIL_
    - open
    - crypt_activate_by_keyfile_device_offset
    - crypt_init_data_device
    - crypt_keyslot_status
    - crypt_volume_key_get_by_keyslot_context
    - t_device_size
    - crypt_init_by_name_and_header
    - crypt_get_dir
    - crypt_set_data_device
    - crypt_activate_by_keyfile_offset
    - crypt_keyslot_add_by_passphrase
    - crypt_get_volume_key_size
    - crypt_keyslot_destroy
    - crypt_status
    - crypt_resize
    - close
    - strlen
    - strcmp
    - crypt_suspend
    - crypt_format
    - crypt_init_by_name
    - FAIL_
    - crypt_resume_by_passphrase
    - crypt_volume_key_get
    - EQ_
    - memcmp
    - prepare_keyfile
    - crypt_set_label
    - crypt_get_data_offset
    - OK_
    - CRYPT_FREE
    - crypt_activate_by_keyfile
    - crypt_get_label
    - snprintf
    - crypt_deactivate
    - crypt_get_cipher
    - NULL_
    - crypt_get_cipher_mode
    - _remove_keyfiles
    - crypt_set_uuid
    - crypt_get_metadata_device_name
    - crypt_keyslot_add_by_keyfile
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_keyslot_context_free
    - crypt_init
    - crypt_get_type
    linkageType: ''
    returnType: void
    signature: void AddDevicePlain(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: global_log_callback
      Src: /src/cryptsetup/tests/api-test.c:621,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - level
    - msg
    - usrptr
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 622
    functionName: new_log
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - global_log_callback
    linkageType: ''
    returnType: void
    signature: void new_log(int level, const char *msg, void *usrptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:637,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:637,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/tests/api-test.c:639,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:640,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:641,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:641,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:642,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:642,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:642,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:643,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:643,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:644,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:645,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:645,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:645,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:646,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/tests/api-test.c:647,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:648,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:648,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 650
    functionName: CallbacksTest
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - FAIL_
    - EQ_
    - crypt_deactivate
    - crypt_set_log_callback
    - crypt_activate_by_passphrase
    - GE_
    - crypt_status
    - crypt_init
    - strlen
    - OK_
    - CRYPT_FREE
    - crypt_format
    linkageType: ''
    returnType: void
    signature: void CallbacksTest(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:657,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:657,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:658,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:658,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:659,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:659,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:660,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:660,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:660,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:661,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:661,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:661,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:662,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:662,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:662,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:663,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:663,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:664,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:664,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:665,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:665,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:668,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:668,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test.c:668,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:669,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:669,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test.c:669,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:670,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:670,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test.c:670,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:671,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:671,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:672,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:672,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:674,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test.c:674,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:674,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:675,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test.c:675,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:676,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:676,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:677,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:677,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:678,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:678,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:679,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:679,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:682,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test.c:682,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:683,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:683,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 686
    functionName: UseLuksDevice
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - GE_
    - crypt_volume_key_verify
    - crypt_get_volume_key_size
    - crypt_status
    - strlen
    - strcmp
    - FAIL_
    - crypt_volume_key_get
    - EQ_
    - crypt_get_data_offset
    - OK_
    - CRYPT_FREE
    - crypt_get_uuid
    - crypt_deactivate
    - crypt_get_cipher
    - crypt_get_cipher_mode
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void UseLuksDevice(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:702,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:702,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:703,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:703,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:704,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:704,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:704,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test.c:706,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:708,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:709,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:709,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:710,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:714,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:715,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:715,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:716,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:718,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test.c:718,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:720,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:720,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:720,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:721,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:721,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:721,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:722,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:722,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:722,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:724,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:724,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:725,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:727,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:727,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:727,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:728,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test.c:728,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:729,1
    - Dst: crypt_resume_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:729,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:730,1
    - Dst: crypt_resume_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:730,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:731,1
    - Dst: crypt_resume_by_keyfile_device_offset
      Src: /src/cryptsetup/tests/api-test.c:731,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:732,1
    - Dst: crypt_resume_by_keyfile_device_offset
      Src: /src/cryptsetup/tests/api-test.c:732,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:733,1
    - Dst: crypt_resume_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:733,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:734,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:734,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:735,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:738,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:738,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:739,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:739,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:740,1
    - Dst: crypt_set_data_device
      Src: /src/cryptsetup/tests/api-test.c:740,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:741,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:741,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:741,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:742,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:745,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test.c:745,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:746,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test.c:746,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:747,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test.c:747,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:748,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:748,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:748,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:749,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:751,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test.c:751,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:752,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:752,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:752,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:755,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test.c:755,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:757,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:758,1
    - Dst: crypt_resume_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:758,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:759,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test.c:759,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:759,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:760,1
    - Dst: crypt_resume_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:760,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:761,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:761,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:762,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:768,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:768,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:769,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:769,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:772,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:772,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:773,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test.c:773,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:774,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:774,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:775,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:775,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:776,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:776,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:777,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test.c:777,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:778,1
    - Dst: crypt_resume_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:778,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:779,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:779,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:780,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:781,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/tests/api-test.c:781,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:782,1
    - Dst: crypt_resume_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:782,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:783,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:783,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:784,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:785,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:785,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:786,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:788,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 688
    functionDepth: 2
    functionLinenumber: 688
    functionLinenumberEnd: 790
    functionName: SuspendDevice
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_load
    - crypt_keyslot_add_by_volume_key
    - crypt_resume_by_volume_key
    - crypt_init_by_name_and_header
    - crypt_set_data_device
    - crypt_set_pbkdf_type
    - crypt_resume_by_keyfile
    - _cleanup_dmdevices
    - crypt_suspend
    - strlen
    - crypt_resume_by_keyfile_offset
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - FAIL_
    - crypt_resume_by_passphrase
    - crypt_init_by_name
    - EQ_
    - crypt_volume_key_get
    - OK_
    - CRYPT_FREE
    - get_luks_offsets
    - crypt_deactivate
    - _remove_keyfiles
    - crypt_resume_by_keyfile_device_offset
    - crypt_activate_by_passphrase
    - printf
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void SuspendDevice(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:805,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:811,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:811,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:812,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:812,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:815,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:815,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:816,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:816,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:817,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:817,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:820,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:820,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:822,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:822,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:823,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:826,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:826,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:827,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:827,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:828,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:828,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:829,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:835,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:835,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:836,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:836,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:837,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:837,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:838,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:842,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:842,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:843,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test.c:843,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:844,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:844,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:845,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:845,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:846,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:849,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:849,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:850,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test.c:850,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:851,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:851,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:852,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:852,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:853,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:856,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:856,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:857,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test.c:857,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:858,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test.c:858,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:859,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:859,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:860,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/tests/api-test.c:860,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:861,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:861,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:862,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:862,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:863,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:869,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:869,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:870,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:870,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:871,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:871,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:873,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:873,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:876,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:876,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:877,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:877,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:878,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:881,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:881,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:882,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:882,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:883,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:883,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:884,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:887,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:887,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:888,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:888,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:889,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:889,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:890,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:890,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:891,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:891,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:893,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:894,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:894,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:895,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:895,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:897,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:897,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:898,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:898,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:901,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:901,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:903,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:903,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:904,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:904,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:905,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:911,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:911,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:912,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:912,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:913,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:913,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:913,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:914,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:914,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:914,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:915,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:916,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test.c:916,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:917,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:917,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:918,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:918,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:919,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:921,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test.c:921,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:922,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:922,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test.c:923,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test.c:923,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:924,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:924,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test.c:924,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:925,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:925,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test.c:925,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:926,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:926,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:927,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:927,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:928,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:934,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:934,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:935,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:935,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:936,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:936,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:937,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test.c:937,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:938,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:941,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:941,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:942,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:942,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:943,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:945,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test.c:945,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:946,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:946,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test.c:947,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test.c:947,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:948,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:948,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:949,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:949,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:950,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:950,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:951,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:951,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:952,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test.c:952,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:953,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:957,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:957,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:958,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:958,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:961,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test.c:961,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:962,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:962,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:963,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:963,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:964,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:964,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:967,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:967,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:967,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:968,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test.c:968,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:969,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:969,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:969,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:970,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:970,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:971,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:971,1
    - Dst: crypt_set_iteration_time
      Src: /src/cryptsetup/tests/api-test.c:973,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:974,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:974,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:974,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:977,1
    - Dst: crypt_keyslot_get_pbkdf
      Src: /src/cryptsetup/tests/api-test.c:977,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:978,1
    - Dst: crypt_keyslot_get_pbkdf
      Src: /src/cryptsetup/tests/api-test.c:978,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:979,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:979,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:980,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:980,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:981,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:982,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:983,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:984,1
    - Dst: crypt_keyslot_get_pbkdf
      Src: /src/cryptsetup/tests/api-test.c:984,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:986,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:986,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:986,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:987,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:987,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:987,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:988,1
    - Dst: crypt_keyslot_add_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:988,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:989,1
    - Dst: crypt_keyslot_add_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:989,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:990,1
    - Dst: crypt_keyslot_add_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:990,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:991,1
    - Dst: crypt_keyslot_add_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:991,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:992,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:992,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:992,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:993,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:993,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:994,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:994,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:995,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:995,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:996,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:996,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:996,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:997,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:997,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:997,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:998,1
    - Dst: crypt_activate_by_keyfile_offset
      Src: /src/cryptsetup/tests/api-test.c:998,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:999,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:999,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1000,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test.c:1000,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1001,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test.c:1001,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1002,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test.c:1002,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1003,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test.c:1003,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1004,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1004,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:1005,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1007,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1007,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1007,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1009,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1009,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1009,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1011,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1011,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1011,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1012,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test.c:1012,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1014,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test.c:1014,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1015,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test.c:1015,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1016,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test.c:1016,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1017,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/tests/api-test.c:1017,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1018,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test.c:1018,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1019,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test.c:1019,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1021,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:1021,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1021,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1021,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1022,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/tests/api-test.c:1022,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1023,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:1023,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1023,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1024,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:1024,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1024,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1024,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1026,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test.c:1026,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1026,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1027,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test.c:1027,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1029,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:1029,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1031,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1031,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test.c:1031,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1032,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1032,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test.c:1032,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1033,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:1033,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1034,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:1034,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1035,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1035,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/tests/api-test.c:1035,1
    - Dst: reset_log
      Src: /src/cryptsetup/tests/api-test.c:1037,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1038,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/tests/api-test.c:1038,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1039,1
    - Dst: reset_log
      Src: /src/cryptsetup/tests/api-test.c:1040,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1041,1
    - Dst: crypt_dump_json
      Src: /src/cryptsetup/tests/api-test.c:1041,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1043,1
    - Dst: crypt_set_uuid
      Src: /src/cryptsetup/tests/api-test.c:1043,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1044,1
    - Dst: crypt_set_uuid
      Src: /src/cryptsetup/tests/api-test.c:1044,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1045,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1045,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test.c:1045,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1047,1
    - Dst: crypt_set_label
      Src: /src/cryptsetup/tests/api-test.c:1047,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test.c:1048,1
    - Dst: crypt_get_label
      Src: /src/cryptsetup/tests/api-test.c:1048,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test.c:1049,1
    - Dst: crypt_get_subsystem
      Src: /src/cryptsetup/tests/api-test.c:1049,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1051,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1051,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1052,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1060,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1060,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1061,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test.c:1061,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1062,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1062,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1063,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:1065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 194
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 792
    functionDepth: 2
    functionLinenumber: 792
    functionLinenumberEnd: 1066
    functionName: AddDeviceLuks
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - crypt_keyslot_add_by_volume_key
    - crypt_header_is_detached
    - crypt_decode_key
    - crypt_get_subsystem
    - GE_
    - reset_log
    - crypt_volume_key_verify
    - crypt_keyslot_status
    - crypt_keyslot_get_pbkdf
    - crypt_init_by_name_and_header
    - crypt_set_data_offset
    - crypt_activate_by_keyfile_offset
    - crypt_set_pbkdf_type
    - _cleanup_dmdevices
    - crypt_keyslot_destroy
    - crypt_get_volume_key_size
    - crypt_status
    - crypt_get_device_name
    - strlen
    - strcmp
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - FAIL_
    - crypt_keyslot_change_by_passphrase
    - crypt_volume_key_get
    - EQ_
    - crypt_keyslot_add_by_keyfile_offset
    - memcmp
    - crypt_set_label
    - crypt_get_data_offset
    - OK_
    - CRYPT_FREE
    - crypt_activate_by_keyfile
    - crypt_dump_json
    - get_luks_offsets
    - crypt_get_uuid
    - crypt_get_label
    - crypt_deactivate
    - crypt_get_cipher
    - NULL_
    - crypt_dump
    - crypt_get_cipher_mode
    - _remove_keyfiles
    - crypt_set_iteration_time
    - crypt_set_uuid
    - crypt_keyslot_add_by_keyfile
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_type
    linkageType: ''
    returnType: void
    signature: void AddDeviceLuks(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1073,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1073,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1074,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1074,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1075,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1075,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1076,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1076,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1077,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1077,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1078,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1080,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test.c:1080,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1081,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1081,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1082,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1086,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test.c:1086,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:1089,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1090,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test.c:1090,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1091,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1091,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1092,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1092,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1093,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1096,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test.c:1096,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:1100,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1101,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test.c:1101,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1102,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1102,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1103,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1103,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1104,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1107,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1107,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1108,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1108,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1109,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1109,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1110,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1113,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1113,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1114,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1114,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1115,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1115,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1116,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test.c:1116,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1117,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1117,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1118,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1118,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1119,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1119,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1120,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1120,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1068
    functionDepth: 1
    functionLinenumber: 1068
    functionLinenumberEnd: 1122
    functionName: UseTempVolumes
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - crypt_init_by_name
    - FAIL_
    - snprintf
    - crypt_load
    - crypt_deactivate
    - _system
    - crypt_activate_by_volume_key
    - GE_
    - crypt_status
    - crypt_init
    - crypt_volume_key_verify
    - OK_
    - CRYPT_FREE
    - crypt_format
    linkageType: ''
    returnType: void
    signature: void UseTempVolumes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1139,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1144,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1144,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1146,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:1146,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1147,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1147,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1150,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1150,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1151,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1151,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1152,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1152,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1153,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1153,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1154,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1154,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1155,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1155,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1156,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1156,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1157,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1160,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1160,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1161,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1161,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1162,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1162,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1163,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1163,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1164,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1164,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1165,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1165,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1166,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1166,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1167,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1167,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1169,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test.c:1169,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1170,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:1170,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1171,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1171,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1172,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1172,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1173,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1173,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1174,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1174,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1175,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1175,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1176,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1176,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1177,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1177,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1178,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1178,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1179,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1182,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1182,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/api-test.c:1183,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1184,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1184,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1185,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1185,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1186,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1190,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1190,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1191,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1191,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1192,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1192,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1194,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1197,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1197,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1198,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:1198,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1199,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1199,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1200,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1200,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1202,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:1202,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1203,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1203,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1204,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1204,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1206,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:1208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1124
    functionDepth: 2
    functionLinenumber: 1124
    functionLinenumberEnd: 1209
    functionName: LuksHeaderRestore
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - crypt_decode_key
    - memcpy
    - _system
    - GE_
    - _cleanup_dmdevices
    - crypt_wipe
    - crypt_status
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - OK_
    - CRYPT_FREE
    - get_luks_offsets
    - snprintf
    - crypt_deactivate
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_header_restore
    linkageType: ''
    returnType: void
    signature: void LuksHeaderRestore(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1226,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1232,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1232,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1235,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:1235,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1237,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1237,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1240,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1240,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1242,1
    - Dst: snprintf
      Src: /src/cryptsetup/tests/api-test.c:1242,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1243,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:1243,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1245,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1245,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1247,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1247,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1249,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1249,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1254,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1254,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1255,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1255,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1256,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1257,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1257,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1258,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1258,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1260,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1260,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1261,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1261,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1262,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/tests/api-test.c:1262,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1265,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test.c:1265,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1266,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1269,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test.c:1269,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1270,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1270,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1271,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1272,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test.c:1272,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1273,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1273,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1274,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/tests/api-test.c:1274,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1277,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1280,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1280,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1281,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1281,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test.c:1282,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test.c:1282,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1283,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1288,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1288,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1289,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1289,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1290,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test.c:1290,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1291,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test.c:1291,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1292,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1293,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1294,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1296,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1296,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1297,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1297,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1298,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1298,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1299,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1299,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1300,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1303,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:1303,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1304,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1304,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1305,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1305,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1306,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1309,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1309,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1310,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1310,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1311,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1312,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1312,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1313,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1313,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1314,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1314,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1315,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/tests/api-test.c:1315,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1316,1
    - Dst: crypt_get_metadata_size
      Src: /src/cryptsetup/tests/api-test.c:1316,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1317,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1320,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1320,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1321,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1321,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1322,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1322,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test.c:1322,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1323,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:1325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1211
    functionDepth: 2
    functionLinenumber: 1211
    functionLinenumberEnd: 1326
    functionName: LuksHeaderLoad
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - crypt_header_is_detached
    - crypt_decode_key
    - crypt_set_metadata_size
    - _system
    - GE_
    - crypt_init_data_device
    - _cleanup_dmdevices
    - crypt_status
    - strlen
    - strcmp
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - EQ_
    - crypt_get_metadata_size
    - OK_
    - CRYPT_FREE
    - get_luks_offsets
    - snprintf
    - NULL_
    - crypt_get_metadata_device_name
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_type
    linkageType: ''
    returnType: void
    signature: void LuksHeaderLoad(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1338,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1345,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1345,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1347,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:1347,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1348,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1348,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1351,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1351,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1352,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1352,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1353,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1353,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1354,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1354,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1354,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1355,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1355,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1355,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1356,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/tests/api-test.c:1356,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1357,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1357,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1358,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1361,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1361,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1362,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/tests/api-test.c:1362,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1363,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1363,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1364,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1364,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1365,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1365,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1366,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1366,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1367,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test.c:1367,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1368,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1371,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1371,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1372,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1372,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1374,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:1374,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1374,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1375,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1375,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1376,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1376,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1377,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/tests/api-test.c:1377,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1378,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1380,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1380,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1381,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1381,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1383,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:1383,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1383,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1384,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1384,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1385,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1385,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1386,1
    - Dst: loop_attach
      Src: /src/cryptsetup/tests/api-test.c:1389,1
    - Dst: NOTFAIL_
      Src: /src/cryptsetup/tests/api-test.c:1390,1
    - Dst: close
      Src: /src/cryptsetup/tests/api-test.c:1391,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1392,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1392,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1393,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1393,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1395,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:1395,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1395,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1396,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1396,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1397,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1397,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1398,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1400,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1400,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1401,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1401,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1403,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:1403,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1403,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1404,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1404,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1405,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1405,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1406,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:1408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1328
    functionDepth: 2
    functionLinenumber: 1328
    functionLinenumberEnd: 1409
    functionName: LuksHeaderBackup
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_add_by_volume_key
    - crypt_load
    - crypt_header_is_detached
    - crypt_decode_key
    - crypt_header_backup
    - GE_
    - NOTFAIL_
    - _cleanup_dmdevices
    - crypt_status
    - close
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - EQ_
    - OK_
    - CRYPT_FREE
    - loop_attach
    - get_luks_offsets
    - crypt_deactivate
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_header_restore
    linkageType: ''
    returnType: void
    signature: void LuksHeaderBackup(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1420,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1425,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1425,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1428,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:1428,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1429,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:1429,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1430,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1430,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1431,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1431,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1432,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1432,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1433,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1433,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1436,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1436,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1437,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1437,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1438,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1438,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1439,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1439,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1440,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1441,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1443,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1443,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1444,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1445,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1446,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1446,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1447,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1448,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1449,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1449,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1450,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1450,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1451,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1456,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1456,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1457,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1457,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1458,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1458,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1459,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1459,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1460,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1461,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1463,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1463,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1464,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1465,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1466,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1466,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1467,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1468,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1469,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1469,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1470,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1470,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1471,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1473,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1473,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1474,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1474,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1475,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1475,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1478,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1478,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1479,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1479,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/tests/api-test.c:1479,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1480,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1480,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1481,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1481,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1482,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1482,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1483,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1485,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1485,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1486,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1486,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1487,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1487,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1488,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1488,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1489,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1489,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1490,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1492,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1492,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1493,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:1495,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1411
    functionDepth: 2
    functionLinenumber: 1411
    functionLinenumberEnd: 1496
    functionName: ResizeDeviceLuks
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - crypt_decode_key
    - GE_
    - t_device_size
    - _cleanup_dmdevices
    - crypt_status
    - crypt_resize
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - FAIL_
    - EQ_
    - OK_
    - CRYPT_FREE
    - get_luks_offsets
    - crypt_get_uuid
    - crypt_deactivate
    - crypt_activate_by_volume_key
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void ResizeDeviceLuks(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1510,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1510,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1511,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1511,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1514,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1514,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1515,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1515,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:1516,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1522,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1522,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1523,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1523,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1524,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1524,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1525,1
    - Dst: get_key_dm
      Src: /src/cryptsetup/tests/api-test.c:1525,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1526,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1526,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1527,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1527,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1531,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1531,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1532,1
    - Dst: get_key_dm
      Src: /src/cryptsetup/tests/api-test.c:1532,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1533,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1533,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1534,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1534,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:1536,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1542,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1542,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1542,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1543,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1543,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1543,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1544,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1544,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1545,1
    - Dst: get_key_dm
      Src: /src/cryptsetup/tests/api-test.c:1545,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1546,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1546,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1547,1
    - Dst: strncmp
      Src: /src/cryptsetup/tests/api-test.c:1547,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1548,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1548,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1551,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1551,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1552,1
    - Dst: get_key_dm
      Src: /src/cryptsetup/tests/api-test.c:1552,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1553,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1553,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1554,1
    - Dst: strncmp
      Src: /src/cryptsetup/tests/api-test.c:1554,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1555,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1555,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1556,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:1558,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1565,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1565,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1566,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1566,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1566,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1567,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1567,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1568,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1568,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1569,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1569,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1570,1
    - Dst: get_key_dm
      Src: /src/cryptsetup/tests/api-test.c:1570,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1571,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1571,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1572,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1572,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1573,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:1575,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1579,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1579,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1580,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1580,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1585,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1586,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1586,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1586,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1587,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1587,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1588,1
    - Dst: get_key_dm
      Src: /src/cryptsetup/tests/api-test.c:1588,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1589,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1589,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1590,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1590,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1593,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1593,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1594,1
    - Dst: get_key_dm
      Src: /src/cryptsetup/tests/api-test.c:1594,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1595,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1595,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1596,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1596,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:1598,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1602,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1602,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1602,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1603,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1603,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1604,1
    - Dst: get_key_dm
      Src: /src/cryptsetup/tests/api-test.c:1604,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1605,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1605,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1606,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1606,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1609,1
    - Dst: crypt_activate_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:1609,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1610,1
    - Dst: get_key_dm
      Src: /src/cryptsetup/tests/api-test.c:1610,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1611,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1611,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1612,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1612,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:1614,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 77
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1498
    functionDepth: 1
    functionLinenumber: 1498
    functionLinenumberEnd: 1619
    functionName: HashDevicePlain
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - prepare_keyfile
    - FAIL_
    - crypt_decode_key
    - crypt_deactivate
    - _remove_keyfiles
    - strncmp
    - get_key_dm
    - crypt_init
    - strlen
    - strcmp
    - OK_
    - CRYPT_FREE
    - crypt_activate_by_keyfile
    - crypt_format
    linkageType: ''
    returnType: void
    signature: void HashDevicePlain(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1636,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1636,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1636,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1637,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1637,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1637,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1640,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1640,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1644,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1644,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1648,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1648,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1654,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1654,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1660,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1660,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1664,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1664,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1668,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1668,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1669,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1672,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test.c:1672,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1673,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1673,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1674,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1674,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/tests/api-test.c:1674,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1675,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1678,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1678,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:1679,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1682,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1682,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1685,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:1685,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1686,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1686,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test.c:1686,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:1687,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1688,1
    - Dst: crypt_get_verity_info
      Src: /src/cryptsetup/tests/api-test.c:1688,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1689,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1689,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1690,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1690,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1691,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:1691,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1692,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1693,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1694,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1695,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:1695,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1697,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1697,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1698,1
    - Dst: crypt_set_data_device
      Src: /src/cryptsetup/tests/api-test.c:1698,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1699,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1699,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1701,1
    - Dst: crypt_set_data_device
      Src: /src/cryptsetup/tests/api-test.c:1701,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1702,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:1704,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1705,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1708,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:1708,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1709,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1710,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1712,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test.c:1712,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:1713,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1714,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test.c:1714,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1715,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1716,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:1716,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:1717,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1718,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:1718,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1719,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1720,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:1720,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1721,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1721,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1725,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1725,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:1727,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1728,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:1728,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1729,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1730,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1730,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1734,1
    - Dst: crypt_set_data_device
      Src: /src/cryptsetup/tests/api-test.c:1734,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1735,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1735,1
    - Dst: _system
      Src: /src/cryptsetup/tests/api-test.c:1736,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1737,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:1737,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1738,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1739,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1739,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1621
    functionDepth: 1
    functionLinenumber: 1621
    functionLinenumberEnd: 1742
    functionName: VerityTest
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_load
    - crypt_decode_key
    - _system
    - crypt_get_verity_info
    - crypt_init_data_device
    - crypt_volume_key_get_by_keyslot_context
    - crypt_set_data_device
    - crypt_get_volume_key_size
    - strlen
    - strcmp
    - crypt_format
    - crypt_init_by_name
    - FAIL_
    - memcmp
    - crypt_volume_key_get
    - EQ_
    - OK_
    - CRYPT_FREE
    - crypt_deactivate
    - crypt_get_metadata_device_name
    - printf
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_type
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void VerityTest(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1753,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1767,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1767,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1767,1
    - Dst: crypt_benchmark
      Src: /src/cryptsetup/tests/api-test.c:1770,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:1772,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1776,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1776,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1778,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1778,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1780,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1780,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1783,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1783,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test.c:1783,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1784,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1784,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test.c:1784,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1785,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:1785,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1786,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/tests/api-test.c:1786,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1787,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:1787,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:1789,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1793,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test.c:1793,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1795,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test.c:1795,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1796,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:1796,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:1797,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1798,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:1798,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1799,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:1799,1
    - Dst: reset_log
      Src: /src/cryptsetup/tests/api-test.c:1801,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1802,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/tests/api-test.c:1802,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1803,1
    - Dst: reset_log
      Src: /src/cryptsetup/tests/api-test.c:1804,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1806,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1806,1
    - Dst: NULL_
      Src: /src/cryptsetup/tests/api-test.c:1807,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/tests/api-test.c:1807,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1808,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1810,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/tests/api-test.c:1810,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1811,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1811,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1813,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/tests/api-test.c:1813,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1814,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:1814,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1817,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1817,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test.c:1817,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1818,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1818,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test.c:1818,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1819,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:1819,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1820,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/tests/api-test.c:1820,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1821,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/tests/api-test.c:1821,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1823,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:1823,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1824,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1825,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1826,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1827,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1829,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1829,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1830,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1833,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test.c:1833,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1834,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1834,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1835,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1841,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1841,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:1844,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:1846,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1847,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1850,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1850,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1851,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1854,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test.c:1854,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1855,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1855,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/tests/api-test.c:1855,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1856,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:1856,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/tests/api-test.c:1856,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1857,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/tests/api-test.c:1857,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1859,1
    - Dst: strncmp
      Src: /src/cryptsetup/tests/api-test.c:1859,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/tests/api-test.c:1859,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1860,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1863,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1863,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1864,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1864,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1865,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1865,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1866
      start: 1744
    functionDepth: 1
    functionLinenumber: 1744
    functionLinenumberEnd: 1866
    functionName: TcryptTest
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_load
    - crypt_get_iv_offset
    - crypt_decode_key
    - GE_
    - reset_log
    - crypt_benchmark
    - crypt_init_data_device
    - crypt_volume_key_get_by_keyslot_context
    - crypt_init_by_name_and_header
    - crypt_get_volume_key_size
    - crypt_status
    - crypt_get_device_name
    - strlen
    - strcmp
    - crypt_init_by_name
    - FAIL_
    - memcmp
    - crypt_volume_key_get
    - EQ_
    - crypt_get_data_offset
    - OK_
    - CRYPT_FREE
    - crypt_deactivate
    - crypt_get_cipher
    - NULL_
    - crypt_dump
    - crypt_get_cipher_mode
    - strncmp
    - crypt_get_metadata_device_name
    - printf
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void TcryptTest(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_dm_integrity_resize_support
      Src: /src/cryptsetup/tests/api-test.c:1878,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:1879,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1883,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1883,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1884,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:1886,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1887,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1890,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1890,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1893,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1893,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1894,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1895,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1896,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1896,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1898,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1898,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1899,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1900,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1901,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1901,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1902,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1902,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1903,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1906,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1906,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1907,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test.c:1907,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1908,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1908,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1909,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1909,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1910,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1911,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1913,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1913,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1914,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1915,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1916,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1916,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1918,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1918,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1919,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1920,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1921,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1921,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1922,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1922,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1923,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:1925,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1868
    functionDepth: 2
    functionLinenumber: 1868
    functionLinenumberEnd: 1926
    functionName: ResizeIntegrity
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - t_dm_integrity_resize_support
    - t_device_size
    - FAIL_
    - EQ_
    - crypt_deactivate
    - crypt_init_data_device
    - _cleanup_dmdevices
    - printf
    - crypt_activate_by_volume_key
    - crypt_resize
    - GE_
    - crypt_init
    - crypt_status
    - OK_
    - CRYPT_FREE
    - create_dmdevice_over_loop
    - crypt_format
    linkageType: ''
    returnType: void
    signature: void ResizeIntegrity(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1946,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1947,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:1948,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1950,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1950,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1951,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1951,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1952,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:1952,1
    - Dst: t_dm_integrity_resize_support
      Src: /src/cryptsetup/tests/api-test.c:1962,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:1963,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1967,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:1967,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1968,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:1970,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1971,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1974,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1974,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1977,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1977,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1978,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1979,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:1980,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1980,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1982,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1982,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1983,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1984,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:1985,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:1985,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1986,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:1986,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:1987,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1990,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:1990,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1991,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/tests/api-test.c:1991,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1992,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:1992,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1993,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:1993,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1994,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1995,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:1997,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:1997,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:1998,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:1999,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2000,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:2000,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2002,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/tests/api-test.c:2002,1
    - Dst: t_device_size
      Src: /src/cryptsetup/tests/api-test.c:2003,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2004,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:2005,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:2005,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2006,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:2006,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2007,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:2009,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 1928
    functionDepth: 2
    functionLinenumber: 1928
    functionLinenumberEnd: 2010
    functionName: ResizeIntegrityWithKey
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - crypt_decode_key
    - GE_
    - crypt_init_data_device
    - t_device_size
    - _cleanup_dmdevices
    - crypt_status
    - crypt_resize
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - t_dm_integrity_resize_support
    - FAIL_
    - EQ_
    - OK_
    - CRYPT_FREE
    - crypt_deactivate
    - printf
    - crypt_activate_by_volume_key
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void ResizeIntegrityWithKey(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2027,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2030,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:2030,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2033,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2033,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2034,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2034,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2035,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:2037,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2038,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2041,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/tests/api-test.c:2041,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2042,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2043,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2044,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/tests/api-test.c:2044,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2045,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2046,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2047,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2048,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2049,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:2049,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2050,1
    - Dst: crypt_set_uuid
      Src: /src/cryptsetup/tests/api-test.c:2050,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2051,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2053,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2053,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2054,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:2054,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2055,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2057,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2057,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2061,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:2061,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2062,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:2062,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:2063,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:2063,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2064,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:2066,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2067,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/tests/api-test.c:2067,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2068,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/tests/api-test.c:2068,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2069,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2070,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:2070,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2071,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:2071,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/tests/api-test.c:2071,1
    - Dst: t_dm_integrity_recalculate_support
      Src: /src/cryptsetup/tests/api-test.c:2073,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2074,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:2074,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2075,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2076,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:2076,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2077,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/tests/api-test.c:2077,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2078,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2081,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:2081,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2082,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2085,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2085,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2086,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2086,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2087,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/tests/api-test.c:2087,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2088,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2089,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2090,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:2090,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2091,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2094,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2094,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2095,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2095,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2096,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/tests/api-test.c:2096,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2097,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2098,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2099,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:2099,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2100,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2102,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2102,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2103,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:2103,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2104,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:2104,1
    - Dst: GE_
      Src: /src/cryptsetup/tests/api-test.c:2105,1
    - Dst: crypt_status
      Src: /src/cryptsetup/tests/api-test.c:2105,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2106,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/tests/api-test.c:2106,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2108
      start: 2012
    functionDepth: 1
    functionLinenumber: 2012
    functionLinenumberEnd: 2108
    functionName: IntegrityTest
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_load
    - crypt_decode_key
    - GE_
    - t_dm_integrity_recalculate_support
    - crypt_status
    - strlen
    - strcmp
    - crypt_get_sector_size
    - crypt_format
    - crypt_init_by_name
    - FAIL_
    - EQ_
    - crypt_get_integrity_info
    - OK_
    - CRYPT_FREE
    - crypt_deactivate
    - crypt_set_uuid
    - printf
    - crypt_activate_by_volume_key
    - crypt_init
    - crypt_get_type
    - crypt_get_active_device
    linkageType: ''
    returnType: void
    signature: void IntegrityTest(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2112,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2112,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2113,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2113,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2114,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2114,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2115,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2115,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2116,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2116,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2117,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2117,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2118,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2120,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2120,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2121,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2121,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2122,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2122,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2123,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2123,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2124,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2124,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2125,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/tests/api-test.c:2125,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2127
      start: 2110
    functionDepth: 1
    functionLinenumber: 2110
    functionLinenumberEnd: 2127
    functionName: WipeTest
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - FAIL_
    - crypt_wipe
    - crypt_init
    - OK_
    - CRYPT_FREE
    linkageType: ''
    returnType: void
    signature: void WipeTest(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2147,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2153,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:2153,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2154,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:2154,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2157,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:2157,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2158,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:2158,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2161,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2161,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2162,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test.c:2162,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2163,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2163,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2164,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:2164,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2165,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:2165,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2165,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2166,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2166,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2167,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2168,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2169,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2172,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2172,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2173,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:2173,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2174,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test.c:2174,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2175,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:2175,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2176,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:2176,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2176,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2177,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2177,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2178,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2179,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2182,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:2182,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2182,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2183,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2183,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2184,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2187,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:2187,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2187,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2188,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:2188,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2189,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2189,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2190,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2191,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2194,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2194,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2194,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2195,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2195,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2195,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2196,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2196,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2197,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2197,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2198,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2198,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2199,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2200,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2203,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2203,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2204,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2204,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2205,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2208,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:2208,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2208,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2209,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2209,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2210,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2210,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2211,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2214,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2214,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2215,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2215,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2216,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2217,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2220,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2220,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2221,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test.c:2221,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2222,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2222,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2223,1
    - Dst: crypt_keyslot_context_get_error
      Src: /src/cryptsetup/tests/api-test.c:2223,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2224,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2225,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2227,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2227,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2228,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test.c:2228,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2229,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2229,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2230,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2231,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2233,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:2235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2236
      start: 2129
    functionDepth: 2
    functionLinenumber: 2129
    functionLinenumberEnd: 2236
    functionName: LuksKeyslotAdd
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - crypt_decode_key
    - crypt_keyslot_context_init_by_passphrase
    - crypt_keyslot_context_init_by_token
    - crypt_set_pbkdf_type
    - _cleanup_dmdevices
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - FAIL_
    - EQ_
    - crypt_keyslot_context_init_by_keyfile
    - crypt_keyslot_add_by_keyslot_context
    - OK_
    - CRYPT_FREE
    - get_luks_offsets
    - crypt_keyslot_context_init_by_volume_key
    - crypt_keyslot_context_get_error
    - crypt_keyslot_context_free
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void LuksKeyslotAdd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2253,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2259,1
    - Dst: crypt_decode_key
      Src: /src/cryptsetup/tests/api-test.c:2259,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2261,1
    - Dst: prepare_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2261,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2261,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2264,1
    - Dst: get_luks_offsets
      Src: /src/cryptsetup/tests/api-test.c:2264,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2265,1
    - Dst: create_dmdevice_over_loop
      Src: /src/cryptsetup/tests/api-test.c:2265,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2268,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2268,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2269,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test.c:2269,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2270,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2270,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2272,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2272,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2276,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2276,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2277,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/tests/api-test.c:2277,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2278,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2281,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2281,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2282,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:2282,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2283,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test.c:2283,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2284,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:2284,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2285,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:2285,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2285,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2286,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2286,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2287,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2288,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2289,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2292,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2292,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2293,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/tests/api-test.c:2293,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2294,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2294,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:2295,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2296,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2296,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2297,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:2297,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2298,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:2298,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2299,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:2299,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2299,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2300,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2300,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2301,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2302,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2302,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2303,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2303,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2304,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2305,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2306,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2308,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2308,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2309,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/api-test.c:2309,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2311,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/tests/api-test.c:2311,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2312,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2312,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2313,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2316,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/tests/api-test.c:2316,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2317,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2317,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2318,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:2321,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2322,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/tests/api-test.c:2322,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/api-test.c:2322,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2323,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2323,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2324,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:2324,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:2325,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2326,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2326,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2327,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:2327,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2328,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:2331,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2332,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/tests/api-test.c:2332,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2333,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2333,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2334,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/api-test.c:2334,1
    - Dst: memset
      Src: /src/cryptsetup/tests/api-test.c:2335,1
    - Dst: EQ_
      Src: /src/cryptsetup/tests/api-test.c:2336,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/tests/api-test.c:2336,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/tests/api-test.c:2337,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2338,1
    - Dst: _remove_keyfiles
      Src: /src/cryptsetup/tests/api-test.c:2340,1
    - Dst: _cleanup_dmdevices
      Src: /src/cryptsetup/tests/api-test.c:2341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2342
      start: 2238
    functionDepth: 2
    functionLinenumber: 2238
    functionLinenumberEnd: 2342
    functionName: VolumeKeyGet
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_load
    - crypt_decode_key
    - crypt_keyslot_context_init_by_passphrase
    - crypt_volume_key_verify
    - crypt_keyslot_context_init_by_token
    - crypt_volume_key_get_by_keyslot_context
    - crypt_set_pbkdf_type
    - _cleanup_dmdevices
    - strlen
    - create_dmdevice_over_loop
    - crypt_format
    - prepare_keyfile
    - FAIL_
    - memcmp
    - EQ_
    - crypt_keyslot_context_init_by_keyfile
    - crypt_keyslot_add_by_keyslot_context
    - OK_
    - CRYPT_FREE
    - get_luks_offsets
    - crypt_keyslot_context_init_by_volume_key
    - _remove_keyfiles
    - crypt_keyslot_context_free
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void VolumeKeyGet(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2354,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2354,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2356,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2356,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2357,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2357,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2359,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2362,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2362,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2363,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:2365,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2366,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2369,1
    - Dst: OK_
      Src: /src/cryptsetup/tests/api-test.c:2372,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/api-test.c:2372,1
    - Dst: FAIL_
      Src: /src/cryptsetup/tests/api-test.c:2373,1
    - Dst: crypt_format
      Src: /src/cryptsetup/tests/api-test.c:2373,1
    - Dst: CRYPT_FREE
      Src: /src/cryptsetup/tests/api-test.c:2375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2345
    functionDepth: 1
    functionLinenumber: 2345
    functionLinenumberEnd: 2376
    functionName: NonFIPSAlg
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - FAIL_
    - printf
    - crypt_init
    - OK_
    - CRYPT_FREE
    - crypt_format
    linkageType: ''
    returnType: void
    signature: void NonFIPSAlg(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2381
      start: 2378
    functionDepth: 0
    functionLinenumber: 2378
    functionLinenumberEnd: 2381
    functionName: int_handler
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void int_handler(int sig __attribute__((__unused__)))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getuid
      Src: /src/cryptsetup/tests/api-test.c:2388,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:2389,1
    - Dst: exit
      Src: /src/cryptsetup/tests/api-test.c:2390,1
    - Dst: getenv
      Src: /src/cryptsetup/tests/api-test.c:2393,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:2394,1
    - Dst: exit
      Src: /src/cryptsetup/tests/api-test.c:2395,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:2399,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:2399,1
    - Dst: strcmp
      Src: /src/cryptsetup/tests/api-test.c:2401,1
    - Dst: sigaction
      Src: /src/cryptsetup/tests/api-test.c:2406,1
    - Dst: sigaction
      Src: /src/cryptsetup/tests/api-test.c:2407,1
    - Dst: register_cleanup
      Src: /src/cryptsetup/tests/api-test.c:2409,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/api-test.c:2411,1
    - Dst: _setup
      Src: /src/cryptsetup/tests/api-test.c:2412,1
    - Dst: printf
      Src: /src/cryptsetup/tests/api-test.c:2413,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/api-test.c:2414,1
    - Dst: exit
      Src: /src/cryptsetup/tests/api-test.c:2415,1
    - Dst: crypt_set_debug_level
      Src: /src/cryptsetup/tests/api-test.c:2418,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2420,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2421,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2422,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2423,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2424,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2425,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2426,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2427,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2428,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2429,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2430,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2431,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2432,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2433,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2434,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2435,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2436,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2437,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2438,1
    - Dst: RUN_
      Src: /src/cryptsetup/tests/api-test.c:2439,1
    - Dst: _cleanup
      Src: /src/cryptsetup/tests/api-test.c:2441,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 47
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2443
      start: 2383
    functionDepth: 1
    functionLinenumber: 2383
    functionLinenumberEnd: 2443
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/api-test.c
    functionUses: 0
    functionsReached:
    - getuid
    - RUN_
    - exit
    - _setup
    - crypt_set_debug_level
    - getenv
    - sigaction
    - _cleanup
    - printf
    - register_cleanup
    - strcmp
    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: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: OK_
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OK_(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: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: NOTFAIL_
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NOTFAIL_(x, y)
  - 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: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: FAIL_
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FAIL_(x, y)
  - 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: 77
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 77
    functionName: EQ_
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 37
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EQ_(x, y)
  - 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: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: GE_
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GE_(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: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: NULL_
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NULL_(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: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: NOTNULL_
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NOTNULL_(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: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: RUN_
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RUN_(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: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: CRYPT_FREE
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 47
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CRYPT_FREE(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: VOIDP_CAST
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VOIDP_CAST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: DIV_ROUND_UP
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIV_ROUND_UP(n,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: DIV_ROUND_UP_MODULO
    functionSourceFile: /src/cryptsetup/tests/api_test.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIV_ROUND_UP_MODULO(n,d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:35,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:37,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:38,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:40,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:41,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:43,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:44,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:46,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:47,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - from
    - max
    - o
    - n
    argTypes:
    - off_t
    - int
    - unsigned char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 48
    functionName: print_diff
    functionSourceFile: /src/cryptsetup/tests/differ.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: "void print_diff(off_t from, int max,\n\t\t       const unsigned char
      *o,\n\t\t       const unsigned char *n)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/cryptsetup/tests/differ.c:63,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:64,1
    - Dst: toupper
      Src: /src/cryptsetup/tests/differ.c:68,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/differ.c:73,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/differ.c:76,1
    - Dst: memcmp
      Src: /src/cryptsetup/tests/differ.c:79,1
    - Dst: print_diff
      Src: /src/cryptsetup/tests/differ.c:87,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - range
    - o
    - n
    argTypes:
    - char*
    - unsigned char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 90
    functionName: check
    functionSourceFile: /src/cryptsetup/tests/differ.c
    functionUses: 2
    functionsReached:
    - memcmp
    - toupper
    - sscanf
    - printf
    - print_diff
    linkageType: ''
    returnType: enum df
    signature: enum df check(const char *range, unsigned char *o, unsigned char *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/differ.c:96,1
    - Dst: fstat
      Src: /src/cryptsetup/tests/differ.c:97,1
    - Dst: mmap
      Src: /src/cryptsetup/tests/differ.c:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - f
    argTypes:
    - struct ffile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: open_mmap
    functionSourceFile: /src/cryptsetup/tests/differ.c
    functionUses: 0
    functionsReached:
    - open
    - mmap
    - fstat
    linkageType: ''
    returnType: int
    signature: int open_mmap(struct ffile *f)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: munmap
      Src: /src/cryptsetup/tests/differ.c:108,1
    - Dst: close
      Src: /src/cryptsetup/tests/differ.c:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - f
    argTypes:
    - struct ffile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 113
    functionName: close_mmap
    functionSourceFile: /src/cryptsetup/tests/differ.c
    functionUses: 0
    functionsReached:
    - munmap
    - close
    linkageType: ''
    returnType: void
    signature: void close_mmap(struct ffile *f)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:128,1
    - Dst: open_mmap
      Src: /src/cryptsetup/tests/differ.c:133,1
    - Dst: open_mmap
      Src: /src/cryptsetup/tests/differ.c:137,1
    - Dst: check
      Src: /src/cryptsetup/tests/differ.c:141,1
    - Dst: printf
      Src: /src/cryptsetup/tests/differ.c:142,1
    - Dst: close_mmap
      Src: /src/cryptsetup/tests/differ.c:149,1
    - Dst: close_mmap
      Src: /src/cryptsetup/tests/differ.c:150,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 153
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/differ.c
    functionUses: 0
    functionsReached:
    - open_mmap
    - close_mmap
    - check
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:25,1
    - Dst: memset
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:28,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:30,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:31,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:34,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - hdr
    - data
    - len
    argTypes:
    - struct luks2_hdr_disk*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 36
    functionName: fix_checksum_hdr
    functionSourceFile: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - memset
    - crypt_hash_final
    - crypt_hash_write
    - crypt_hash_init
    linkageType: ''
    returnType: bool
    signature: bool fix_checksum_hdr(struct luks2_hdr_disk *hdr, const char *data,
      size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:46,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:51,1
    - Dst: fix_checksum_hdr
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - data
    - size
    - hdr_rw
    argTypes:
    - char*
    - size_t
    - struct luks2_hdr_disk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 53
    functionName: calculate_checksum
    functionSourceFile: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - fix_checksum_hdr
    - be64_to_cpu
    linkageType: ''
    returnType: bool
    signature: bool calculate_checksum(const char *data, size_t size, struct luks2_hdr_disk
      *hdr_rw)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: calculate_checksum
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:64,1
    - Dst: mkostemp
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:70,1
    - Dst: ftruncate
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:75,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:79,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:82,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:86,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:87,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:88,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:91,1
    - Dst: unlink
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc:92,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 95
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc
    functionUses: 0
    functionsReached:
    - calculate_checksum
    - crypt_load
    - mkostemp
    - close
    - unlink
    - ftruncate
    - write_buffer
    - crypt_free
    - crypt_init
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - level
    - msg
    - usrptr
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 14
    functionName: empty_log
    functionSourceFile: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void empty_log(int level, const char *msg, void *usrptr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mkostemp
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:21,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:23,1
    - Dst: ftruncate
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:26,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:29,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:32,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:34,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:35,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:39,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:43,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:46,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:47,1
    - Dst: unlink
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc:48,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 50
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc
    functionUses: 0
    functionsReached:
    - crypt_load
    - mkostemp
    - close
    - unlink
    - ftruncate
    - write_buffer
    - crypt_set_log_callback
    - crypt_free
    - crypt_init
    - err
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mkostemp
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc:24,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc:27,1
    - Dst: json_proto::LUKS2ProtoConverter::convert
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc:30,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc:32,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc:33,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc:34,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc:36,1
    - Dst: unlink
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - headers
    argTypes:
    - json_proto::LUKS2_both_headers
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 38
    functionName: DEFINE_PROTO_FUZZER
    functionSourceFile: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc
    functionUses: 0
    functionsReached:
    - crypt_load
    - mkostemp
    - close
    - unlink
    - crypt_free
    - crypt_init
    - json_proto::LUKS2ProtoConverter::convert
    - err
    linkageType: ''
    returnType: void
    signature: void DEFINE_PROTO_FUZZER(const json_proto::LUKS2_both_headers &headers)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:12,1
    - Dst: json_proto::JsonProtoConverter::AppendValue
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:19,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' array_value'
    argTypes:
    - ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 22
    functionName: json_proto::JsonProtoConverter::AppendArray
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 0
    functionsReached:
    - json_proto::JsonProtoConverter::AppendValue
    - value
    linkageType: ''
    returnType: void
    signature: void JsonProtoConverter::AppendArray(const ArrayValue& array_value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: has_float_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:25,1
    - Dst: float_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:26,1
    - Dst: has_exponent_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:27,1
    - Dst: exponent_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:28,1
    - Dst: auto::base
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:29,1
    - Dst: auto::use_uppercase
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:30,1
    - Dst: auto::exponent
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:31,1
    - Dst: has_exponent_frac_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:32,1
    - Dst: exponent_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:33,1
    - Dst: auto::base
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:34,1
    - Dst: auto::use_uppercase
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:35,1
    - Dst: auto::exponent
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:36,1
    - Dst: integer_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' number_value'
    argTypes:
    - NumberValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 40
    functionName: json_proto::JsonProtoConverter::AppendNumber
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 0
    functionsReached:
    - integer_value
    - float_value
    - has_float_value
    - auto::exponent
    - exponent_value
    - has_exponent_value
    - auto::use_uppercase
    - has_exponent_frac_value
    - auto::base
    linkageType: ''
    returnType: void
    signature: void JsonProtoConverter::AppendNumber(const NumberValue& number_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: name
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:43,1
    - Dst: json_proto::JsonProtoConverter::AppendValue
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:44,1
    - Dst: value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' json_object'
    argTypes:
    - JsonObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: json_proto::JsonProtoConverter::AppendObject
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 0
    functionsReached:
    - value
    - name
    - json_proto::JsonProtoConverter::AppendValue
    linkageType: ''
    returnType: void
    signature: void JsonProtoConverter::AppendObject(const JsonObject& json_object)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: has_object_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:49,1
    - Dst: json_proto::JsonProtoConverter::AppendObject
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:50,1
    - Dst: object_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:50,1
    - Dst: has_array_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:51,1
    - Dst: json_proto::JsonProtoConverter::AppendArray
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:52,1
    - Dst: array_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:52,1
    - Dst: has_number_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:53,1
    - Dst: json_proto::JsonProtoConverter::AppendNumber
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:54,1
    - Dst: number_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:54,1
    - Dst: has_string_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:55,1
    - Dst: string_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:56,1
    - Dst: has_boolean_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:57,1
    - Dst: boolean_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:58,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' json_value'
    argTypes:
    - JsonValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 62
    functionName: json_proto::JsonProtoConverter::AppendValue
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 2
    functionsReached:
    - json_proto::JsonProtoConverter::AppendArray
    - json_proto::JsonProtoConverter::AppendNumber
    - has_array_value
    - has_object_value
    - array_value
    - has_string_value
    - json_proto::JsonProtoConverter::AppendObject
    - has_number_value
    - number_value
    - string_value
    - boolean_value
    - object_value
    - has_boolean_value
    linkageType: ''
    returnType: void
    signature: void JsonProtoConverter::AppendValue(const JsonValue& json_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_proto::JsonProtoConverter::AppendObject
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:65,1
    - Dst: str
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' json_object'
    argTypes:
    - JsonObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: json_proto::JsonProtoConverter::Convert
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 0
    functionsReached:
    - json_proto::JsonProtoConverter::AppendObject
    - str
    linkageType: ''
    returnType: std::string
    signature: std::string JsonProtoConverter::Convert(const JsonObject& json_object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_proto::JsonProtoConverter::AppendArray
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:71,1
    - Dst: str
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' json_array'
    argTypes:
    - json_proto::ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: json_proto::JsonProtoConverter::Convert
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 0
    functionsReached:
    - json_proto::JsonProtoConverter::AppendArray
    - str
    linkageType: ''
    returnType: std::string
    signature: "std::string JsonProtoConverter::Convert(\n    const json_proto::ArrayValue&
      json_array)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:12,1
    - Dst: json_proto::JsonProtoConverter::AppendValue
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:19,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' array_value'
    argTypes:
    - ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 22
    functionName: json_proto::JsonProtoConverter::AppendArray
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 2
    functionsReached:
    - json_proto::JsonProtoConverter::AppendValue
    - value
    linkageType: ''
    returnType: void
    signature: void JsonProtoConverter::AppendArray(const ArrayValue& array_value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: has_float_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:25,1
    - Dst: float_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:26,1
    - Dst: has_exponent_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:27,1
    - Dst: exponent_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:28,1
    - Dst: auto::base
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:29,1
    - Dst: auto::use_uppercase
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:30,1
    - Dst: auto::exponent
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:31,1
    - Dst: has_exponent_frac_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:32,1
    - Dst: exponent_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:33,1
    - Dst: auto::base
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:34,1
    - Dst: auto::use_uppercase
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:35,1
    - Dst: auto::exponent
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:36,1
    - Dst: integer_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' number_value'
    argTypes:
    - NumberValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 40
    functionName: json_proto::JsonProtoConverter::AppendNumber
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 1
    functionsReached:
    - integer_value
    - float_value
    - has_float_value
    - auto::exponent
    - exponent_value
    - has_exponent_value
    - auto::use_uppercase
    - has_exponent_frac_value
    - auto::base
    linkageType: ''
    returnType: void
    signature: void JsonProtoConverter::AppendNumber(const NumberValue& number_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: name
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:43,1
    - Dst: json_proto::JsonProtoConverter::AppendValue
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:44,1
    - Dst: value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' json_object'
    argTypes:
    - JsonObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: json_proto::JsonProtoConverter::AppendObject
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 2
    functionsReached:
    - value
    - name
    - json_proto::JsonProtoConverter::AppendValue
    linkageType: ''
    returnType: void
    signature: void JsonProtoConverter::AppendObject(const JsonObject& json_object)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: has_object_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:49,1
    - Dst: json_proto::JsonProtoConverter::AppendObject
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:50,1
    - Dst: object_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:50,1
    - Dst: has_array_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:51,1
    - Dst: json_proto::JsonProtoConverter::AppendArray
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:52,1
    - Dst: array_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:52,1
    - Dst: has_number_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:53,1
    - Dst: json_proto::JsonProtoConverter::AppendNumber
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:54,1
    - Dst: number_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:54,1
    - Dst: has_string_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:55,1
    - Dst: string_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:56,1
    - Dst: has_boolean_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:57,1
    - Dst: boolean_value
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:58,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' json_value'
    argTypes:
    - JsonValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 62
    functionName: json_proto::JsonProtoConverter::AppendValue
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 4
    functionsReached:
    - json_proto::JsonProtoConverter::AppendArray
    - json_proto::JsonProtoConverter::AppendNumber
    - has_array_value
    - has_object_value
    - array_value
    - has_string_value
    - json_proto::JsonProtoConverter::AppendObject
    - has_number_value
    - number_value
    - string_value
    - boolean_value
    - object_value
    - has_boolean_value
    linkageType: ''
    returnType: void
    signature: void JsonProtoConverter::AppendValue(const JsonValue& json_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_proto::JsonProtoConverter::AppendObject
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:65,1
    - Dst: str
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' json_object'
    argTypes:
    - JsonObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: json_proto::JsonProtoConverter::Convert
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 0
    functionsReached:
    - json_proto::JsonProtoConverter::AppendObject
    - str
    linkageType: ''
    returnType: std::string
    signature: std::string JsonProtoConverter::Convert(const JsonObject& json_object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_proto::JsonProtoConverter::AppendArray
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:71,1
    - Dst: str
      Src: /src/cryptsetup/tests/fuzz/json_proto_converter.cc:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' json_array'
    argTypes:
    - json_proto::ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: json_proto::JsonProtoConverter::Convert
    functionSourceFile: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
    functionUses: 0
    functionsReached:
    - json_proto::JsonProtoConverter::AppendArray
    - str
    linkageType: ''
    returnType: std::string
    signature: "std::string JsonProtoConverter::Convert(\n    const json_proto::ArrayValue&
      json_array)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc:34,1
    - Dst: google::protobuf::TextFormat::Parse
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc:42,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc:44,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc:47,1
    - Dst: open
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc:52,1
    - Dst: std::string::c_str
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc:52,1
    - Dst: LUKS2ProtoConverter::set_write_headers_only
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc:57,1
    - Dst: LUKS2ProtoConverter::convert
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc:58,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 62
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc
    functionUses: 0
    functionsReached:
    - LUKS2ProtoConverter::convert
    - close
    - std::string::c_str
    - LUKS2ProtoConverter::set_write_headers_only
    - open
    - google::protobuf::TextFormat::Parse
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:27,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:28,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:29,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:32,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:34,1
    - Dst: LUKS2_header::magic
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:36,1
    - Dst: memset
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:38,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:41,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:44,1
    - Dst: cpu_to_be16
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:47,1
    - Dst: LUKS2_header::version
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:47,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:48,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:48,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:49,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:50,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:52,1
    - Dst: memset
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:53,1
    - Dst: LUKS2_header::has_selected_offset
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:55,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:56,1
    - Dst: LUKS2_header::selected_offset
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:56,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:58,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:60,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:61,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:62,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:63,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:65,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:66,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:69,1
    - Dst: std::string::length
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:71,1
    - Dst: std::string::length
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:71,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:72,1
    - Dst: std::string::c_str
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:72,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:73,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:74,1
    - Dst: std::string::c_str
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:74,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:75,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:78,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:79,1
    - Dst: LUKS2_header::use_correct_checksum
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:82,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:83,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:84,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:86,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:88,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:90,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:91,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:92,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:93,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 55
    argCount: 5
    argNames:
    - header_proto
    - fd
    - offset
    - seqid
    - json_text
    argTypes:
    - LUKS2_header
    - int
    - uint64_t
    - uint64_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 95
    functionName: json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
    functionSourceFile: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - LUKS2_header::magic
    - memset
    - crypt_hash_size
    - memcpy
    - write_buffer
    - LUKS2_header::hdr_size
    - err
    - std::string::length
    - strncpy
    - LUKS2_header::has_selected_offset
    - crypt_hash_destroy
    - crypt_hash_final
    - cpu_to_be16
    - LUKS2_header::selected_offset
    - std::string::c_str
    - crypt_hash_write
    - LUKS2_header::use_correct_checksum
    - LUKS2_header::version
    - lseek
    - cpu_to_be64
    - crypt_hash_init
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::emit_luks2_binary_header(const LUKS2_header
      &header_proto, int fd, uint64_t offset, uint64_t seqid, const std::string &json_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - headers_only
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: json_proto::LUKS2ProtoConverter::set_write_headers_only
    functionSourceFile: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::set_write_headers_only(bool headers_only)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:105,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:105,1
    - Dst: ftruncate
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:113,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:115,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:117,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:119,1
    - Dst: LUKS2_both_headers::seqid
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:121,1
    - Dst: JsonProtoConverter::Convert
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:137,1
    - Dst: LUKS2_both_headers::json_area
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:137,1
    - Dst: json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:139,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:139,1
    - Dst: json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:140,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:140,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:140,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - headers
    - fd
    argTypes:
    - LUKS2_both_headers
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 141
    functionName: json_proto::LUKS2ProtoConverter::convert
    functionSourceFile: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - lseek
    - json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
    - JsonProtoConverter::Convert
    - ftruncate
    - LUKS2_both_headers::secondary_header
    - LUKS2_both_headers::seqid
    - LUKS2_both_headers::json_area
    - LUKS2_both_headers::primary_header
    - err
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::convert(const LUKS2_both_headers &headers,
      int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: LUKS2ProtoConverter::~LUKS2ProtoConverter()
    functionSourceFile: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::~LUKS2ProtoConverter()
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:27,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:28,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:29,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:32,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:34,1
    - Dst: LUKS2_header::magic
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:36,1
    - Dst: memset
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:38,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:41,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:44,1
    - Dst: cpu_to_be16
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:47,1
    - Dst: LUKS2_header::version
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:47,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:48,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:48,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:49,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:50,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:52,1
    - Dst: memset
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:53,1
    - Dst: LUKS2_header::has_selected_offset
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:55,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:56,1
    - Dst: LUKS2_header::selected_offset
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:56,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:58,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:60,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:61,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:62,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:63,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:65,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:66,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:69,1
    - Dst: std::string::length
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:71,1
    - Dst: std::string::length
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:71,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:72,1
    - Dst: std::string::c_str
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:72,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:73,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:74,1
    - Dst: std::string::c_str
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:74,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:75,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:78,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:79,1
    - Dst: LUKS2_header::use_correct_checksum
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:82,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:83,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:84,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:86,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:88,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:90,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:91,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:92,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:93,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 55
    argCount: 5
    argNames:
    - header_proto
    - fd
    - offset
    - seqid
    - json_text
    argTypes:
    - LUKS2_header
    - int
    - uint64_t
    - uint64_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 95
    functionName: json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
    functionSourceFile: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - LUKS2_header::magic
    - memset
    - crypt_hash_size
    - memcpy
    - write_buffer
    - LUKS2_header::hdr_size
    - err
    - std::string::length
    - strncpy
    - LUKS2_header::has_selected_offset
    - crypt_hash_destroy
    - crypt_hash_final
    - cpu_to_be16
    - LUKS2_header::selected_offset
    - std::string::c_str
    - crypt_hash_write
    - LUKS2_header::use_correct_checksum
    - LUKS2_header::version
    - lseek
    - cpu_to_be64
    - crypt_hash_init
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::emit_luks2_binary_header(const LUKS2_header
      &header_proto, int fd, uint64_t offset, uint64_t seqid, const std::string &json_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - headers_only
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: json_proto::LUKS2ProtoConverter::set_write_headers_only
    functionSourceFile: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::set_write_headers_only(bool headers_only)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:105,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:105,1
    - Dst: ftruncate
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:113,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:115,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:117,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:119,1
    - Dst: LUKS2_both_headers::seqid
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:121,1
    - Dst: JsonProtoConverter::Convert
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:137,1
    - Dst: LUKS2_both_headers::json_area
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:137,1
    - Dst: json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:139,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:139,1
    - Dst: json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:140,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:140,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:140,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - headers
    - fd
    argTypes:
    - LUKS2_both_headers
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 141
    functionName: json_proto::LUKS2ProtoConverter::convert
    functionSourceFile: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - lseek
    - json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
    - JsonProtoConverter::Convert
    - ftruncate
    - LUKS2_both_headers::secondary_header
    - LUKS2_both_headers::seqid
    - LUKS2_both_headers::json_area
    - LUKS2_both_headers::primary_header
    - err
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::convert(const LUKS2_both_headers &headers,
      int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: LUKS2ProtoConverter::~LUKS2ProtoConverter()
    functionSourceFile: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::~LUKS2ProtoConverter()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: string_uint64::negative
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:23,1
    - Dst: string_uint64::has_uint_num
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:26,1
    - Dst: string_uint64::uint_num
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:27,1
    - Dst: string_uint64::has_string_num
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:28,1
    - Dst: string_uint64::string_num
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:29,1
    - Dst: std::ostringstream::str
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:31,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - str_u64
    argTypes:
    - string_uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 32
    functionName: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - string_uint64::negative
    - string_uint64::has_string_num
    - string_uint64::string_num
    - std::ostringstream::str
    - string_uint64::uint_num
    - string_uint64::has_uint_num
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::string_uint64_to_string(const string_uint64
      &str_u64)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: object_id::has_int_id
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:37,1
    - Dst: object_id::int_id
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:38,1
    - Dst: object_id::has_string_id
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:39,1
    - Dst: object_id::string_id
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:40,1
    - Dst: std::ostringstream::str
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - oid
    argTypes:
    - object_id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 44
    functionName: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - object_id::has_int_id
    - object_id::has_string_id
    - std::ostringstream::str
    - object_id::string_id
    - object_id::int_id
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::object_id_to_string(const object_id
      &oid)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - type
    argTypes:
    - hash_algorithm
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::hash_algorithm_to_string(const hash_algorithm
      type)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - type
    argTypes:
    - keyslot_area_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: LUKS2_proto::LUKS2ProtoConverter::keyslot_area_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::keyslot_area_type_to_string(const
      keyslot_area_type type)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: keyslot_area_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:72,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:73,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:73,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_area_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:73,1
    - Dst: keyslot_area_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:73,1
    - Dst: keyslot_area_description::has_offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:74,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:75,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:75,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:75,1
    - Dst: keyslot_area_description::offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:75,1
    - Dst: keyslot_area_description::has_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:76,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:77,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:77,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:77,1
    - Dst: keyslot_area_description::size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:77,1
    - Dst: keyslot_area_description::has_encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:80,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:81,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:81,1
    - Dst: keyslot_area_description::encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:81,1
    - Dst: keyslot_area_description::has_key_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:82,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:83,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:83,1
    - Dst: keyslot_area_description::key_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:83,1
    - Dst: keyslot_area_description::has_hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:86,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:87,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:87,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:87,1
    - Dst: keyslot_area_description::hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:87,1
    - Dst: keyslot_area_description::has_sector_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:88,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:89,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:89,1
    - Dst: keyslot_area_description::sector_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:89,1
    - Dst: keyslot_area_description::has_shift_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:92,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:93,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:93,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:93,1
    - Dst: keyslot_area_description::shift_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:93,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - jobj_area
    - keyslot_area_desc
    argTypes:
    - struct json_object*
    - keyslot_area_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 94
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_area
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - json_object_new_string
    - keyslot_area_description::has_hash
    - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    - keyslot_area_description::encryption
    - keyslot_area_description::sector_size
    - LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
    - keyslot_area_description::offset
    - keyslot_area_description::has_type
    - keyslot_area_description::size
    - keyslot_area_description::has_shift_size
    - keyslot_area_description::hash
    - keyslot_area_description::type
    - keyslot_area_description::key_size
    - keyslot_area_description::has_sector_size
    - keyslot_area_description::has_key_size
    - keyslot_area_description::has_size
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_area_type_to_string
    - keyslot_area_description::shift_size
    - json_object_object_add
    - keyslot_area_description::has_encryption
    - json_object_new_int
    - keyslot_area_description::has_offset
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_keyslot_area(struct json_object
      *jobj_area, const keyslot_area_description &keyslot_area_desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - keyslot_kdf_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::keyslot_kdf_type_to_string(const keyslot_kdf_type
      type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: keyslot_kdf_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:109,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:110,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:110,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:110,1
    - Dst: keyslot_kdf_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:110,1
    - Dst: keyslot_kdf_description::has_salt
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:112,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:113,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:113,1
    - Dst: keyslot_kdf_description::salt
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:113,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:115,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:115,1
    - Dst: keyslot_kdf_description::has_hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:118,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:119,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:119,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:119,1
    - Dst: keyslot_kdf_description::hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:119,1
    - Dst: keyslot_kdf_description::has_iterations
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:120,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:121,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:121,1
    - Dst: keyslot_kdf_description::iterations
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:121,1
    - Dst: keyslot_kdf_description::has_time
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:124,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:125,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:125,1
    - Dst: keyslot_kdf_description::time
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:125,1
    - Dst: keyslot_kdf_description::has_memory
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:126,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:127,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:127,1
    - Dst: keyslot_kdf_description::memory
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:127,1
    - Dst: keyslot_kdf_description::has_cpus
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:128,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:129,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:129,1
    - Dst: keyslot_kdf_description::cpus
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:129,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - jobj_kdf
    - keyslot_kdf_desc
    argTypes:
    - struct json_object*
    - keyslot_kdf_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 130
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_kdf
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - keyslot_kdf_description::memory
    - keyslot_kdf_description::has_type
    - keyslot_kdf_description::has_iterations
    - json_object_new_string
    - keyslot_kdf_description::time
    - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    - keyslot_kdf_description::has_memory
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
    - keyslot_kdf_description::has_time
    - keyslot_kdf_description::type
    - keyslot_kdf_description::has_hash
    - keyslot_kdf_description::salt
    - keyslot_kdf_description::has_salt
    - keyslot_kdf_description::iterations
    - keyslot_kdf_description::hash
    - json_object_object_add
    - keyslot_kdf_description::cpus
    - keyslot_kdf_description::has_cpus
    - json_object_new_int
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_keyslot_kdf(struct json_object *jobj_kdf,
      const keyslot_kdf_description &keyslot_kdf_desc)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - keyslot_af_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: LUKS2_proto::LUKS2ProtoConverter::keyslot_af_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::keyslot_af_type_to_string(const keyslot_af_type
      type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: keyslot_af_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:140,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:141,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:141,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_af_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:141,1
    - Dst: keyslot_af_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:141,1
    - Dst: keyslot_af_description::has_stripes
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:142,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:143,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:143,1
    - Dst: keyslot_af_description::stripes
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:143,1
    - Dst: keyslot_af_description::has_hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:144,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:145,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:145,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:145,1
    - Dst: keyslot_af_description::hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - jobj_af
    - keyslot_af_desc
    argTypes:
    - struct json_object*
    - keyslot_af_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 146
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_af
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - json_object_object_add
    - keyslot_af_description::stripes
    - json_object_new_string
    - keyslot_af_description::has_hash
    - keyslot_af_description::has_type
    - keyslot_af_description::has_stripes
    - json_object_new_int
    - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_af_type_to_string
    - keyslot_af_description::hash
    - keyslot_af_description::type
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_keyslot_af(struct json_object *jobj_af,
      const keyslot_af_description &keyslot_af_desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - keyslot_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 157
    functionName: LUKS2_proto::LUKS2ProtoConverter::keyslot_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::keyslot_type_to_string(const keyslot_type
      type)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - mode
    argTypes:
    - reencrypt_keyslot_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 168
    functionName: LUKS2_proto::LUKS2ProtoConverter::reencrypt_keyslot_mode_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::reencrypt_keyslot_mode_to_string(const
      reencrypt_keyslot_mode mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - direction
    argTypes:
    - reencrypt_keyslot_direction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 177
    functionName: LUKS2_proto::LUKS2ProtoConverter::reencrypt_keyslot_direction_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::reencrypt_keyslot_direction_to_string(const
      reencrypt_keyslot_direction direction)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:182,1
    - Dst: keyslot_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:183,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:184,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:184,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:184,1
    - Dst: keyslot_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:184,1
    - Dst: keyslot_description::has_key_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:185,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:186,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:186,1
    - Dst: keyslot_description::key_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:186,1
    - Dst: keyslot_description::has_priority
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:187,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:188,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:188,1
    - Dst: keyslot_description::priority
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:188,1
    - Dst: keyslot_description::has_mode
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:189,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:190,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:190,1
    - Dst: keyslot_description::mode
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:190,1
    - Dst: keyslot_description::has_direction
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:191,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:192,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:192,1
    - Dst: keyslot_description::direction
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:192,1
    - Dst: keyslot_description::has_area
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:195,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:196,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_area
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:197,1
    - Dst: keyslot_description::area
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:197,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:198,1
    - Dst: keyslot_description::has_kdf
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:202,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:203,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_kdf
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:204,1
    - Dst: keyslot_description::kdf
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:204,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:205,1
    - Dst: keyslot_description::has_af
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:209,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:210,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_af
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:211,1
    - Dst: keyslot_description::af
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:211,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:212,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:215,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:215,1
    - Dst: keyslot_description::oid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:215,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - jobj_keyslots
    - keyslot_desc
    argTypes:
    - struct json_object*
    - keyslot_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 216
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - keyslot_description::has_area
    - keyslot_description::has_mode
    - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_kdf
    - keyslot_description::has_key_size
    - keyslot_description::direction
    - json_object_new_string
    - keyslot_description::has_type
    - keyslot_description::has_direction
    - keyslot_description::af
    - keyslot_description::has_kdf
    - keyslot_description::key_size
    - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_area
    - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_af
    - keyslot_description::priority
    - json_object_new_object
    - keyslot_description::kdf
    - keyslot_description::type
    - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    - keyslot_description::area
    - keyslot_description::oid
    - json_object_object_add
    - keyslot_description::has_priority
    - json_object_new_int
    - keyslot_description::has_af
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_type_to_string
    - keyslot_description::mode
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_keyslot(struct json_object *jobj_keyslots,
      const keyslot_description &keyslot_desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:220,1
    - Dst: token_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:222,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:223,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:223,1
    - Dst: token_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:223,1
    - Dst: token_description::has_key_description
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:225,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:226,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:226,1
    - Dst: token_description::key_description
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:226,1
    - Dst: token_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:228,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:229,1
    - Dst: token_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:231,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:232,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:233,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:233,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:237,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:240,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:240,1
    - Dst: token_description::oid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - jobj_tokens
    - token_desc
    argTypes:
    - struct json_object*
    - token_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 241
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_token
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - token_description::type
    - token_description::keyslots
    - json_object_object_add
    - json_object_array_add
    - json_object_new_string
    - json_object_new_object
    - token_description::has_key_description
    - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    - token_description::has_type
    - token_description::oid
    - token_description::key_description
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_token(struct json_object *jobj_tokens,
      const token_description &token_desc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:246,1
    - Dst: digest_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:248,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:249,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:249,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:249,1
    - Dst: digest_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:249,1
    - Dst: digest_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:251,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:252,1
    - Dst: digest_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:254,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:255,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:256,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:256,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:260,1
    - Dst: digest_description::segments
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:263,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:264,1
    - Dst: digest_description::segments
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:266,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:267,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:268,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:268,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:272,1
    - Dst: digest_description::has_salt
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:275,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:276,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:276,1
    - Dst: digest_description::salt
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:276,1
    - Dst: digest_description::has_digest
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:277,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:278,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:278,1
    - Dst: digest_description::digest
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:278,1
    - Dst: digest_description::has_hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:279,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:280,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:280,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:280,1
    - Dst: digest_description::hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:280,1
    - Dst: digest_description::has_iterations
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:281,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:282,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:282,1
    - Dst: digest_description::iterations
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:282,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:284,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:284,1
    - Dst: digest_description::oid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:284,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - jobj_digests
    - digest_desc
    argTypes:
    - struct json_object*
    - digest_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 285
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_digest
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - digest_description::has_iterations
    - json_object_array_add
    - digest_description::salt
    - json_object_new_string
    - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    - digest_description::iterations
    - digest_description::type
    - digest_description::has_type
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
    - digest_description::keyslots
    - digest_description::digest
    - json_object_new_object
    - digest_description::segments
    - digest_description::has_digest
    - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    - digest_description::oid
    - json_object_new_array
    - json_object_object_add
    - digest_description::has_salt
    - digest_description::has_hash
    - json_object_new_int
    - digest_description::hash
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_digest(struct json_object *jobj_digests,
      const digest_description &digest_desc)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - type
    argTypes:
    - segment_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 294
    functionName: LUKS2_proto::LUKS2ProtoConverter::segment_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::segment_type_to_string(segment_type
      type)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - flag
    argTypes:
    - segment_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 307
    functionName: LUKS2_proto::LUKS2ProtoConverter::segment_flag_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::segment_flag_to_string(segment_flag
      flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: segment_integrity_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:310,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:311,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:311,1
    - Dst: segment_integrity_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:311,1
    - Dst: segment_integrity_description::has_journal_encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:312,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:313,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:313,1
    - Dst: segment_integrity_description::journal_encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:313,1
    - Dst: segment_integrity_description::has_journal_integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:314,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:315,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:315,1
    - Dst: segment_integrity_description::journal_integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - jobj_integrity
    - segment_integrity_desc
    argTypes:
    - struct json_object*
    - segment_integrity_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 316
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_segment_integrity
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - segment_integrity_description::journal_encryption
    - json_object_object_add
    - segment_integrity_description::has_journal_integrity
    - json_object_new_string
    - segment_integrity_description::type
    - segment_integrity_description::journal_integrity
    - segment_integrity_description::has_type
    - segment_integrity_description::has_journal_encryption
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_segment_integrity(struct json_object
      *jobj_integrity, const segment_integrity_description &segment_integrity_desc)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:320,1
    - Dst: segment_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:322,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:323,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:323,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::segment_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:323,1
    - Dst: segment_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:323,1
    - Dst: segment_description::has_offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:325,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:326,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:326,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:326,1
    - Dst: segment_description::offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:326,1
    - Dst: segment_description::has_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:327,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:328,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:328,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:328,1
    - Dst: segment_description::size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:328,1
    - Dst: segment_description::flags
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:330,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:331,1
    - Dst: segment_description::flags
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:333,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:334,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:335,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::segment_flag_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:335,1
    - Dst: segment_flag
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:335,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:339,1
    - Dst: segment_description::has_iv_tweak
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:342,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:343,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:343,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:343,1
    - Dst: segment_description::iv_tweak
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:343,1
    - Dst: segment_description::has_encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:344,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:345,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:345,1
    - Dst: segment_description::encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:345,1
    - Dst: segment_description::has_sector_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:346,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:347,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:347,1
    - Dst: segment_description::sector_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:347,1
    - Dst: segment_description::has_integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:349,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:350,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_segment_integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:351,1
    - Dst: segment_description::integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:351,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:352,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:355,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:355,1
    - Dst: segment_description::oid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:355,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - jobj_segments
    - segment_desc
    argTypes:
    - struct json_object*
    - segment_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 356
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_segment
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - LUKS2_proto::LUKS2ProtoConverter::segment_type_to_string
    - segment_description::encryption
    - json_object_array_add
    - segment_description::has_integrity
    - json_object_new_string
    - segment_description::integrity
    - LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
    - segment_description::has_type
    - LUKS2_proto::LUKS2ProtoConverter::generate_segment_integrity
    - segment_description::has_sector_size
    - segment_description::offset
    - segment_description::has_size
    - LUKS2_proto::LUKS2ProtoConverter::segment_flag_to_string
    - segment_description::size
    - segment_flag
    - json_object_new_object
    - segment_description::sector_size
    - segment_description::has_iv_tweak
    - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    - json_object_new_array
    - segment_description::flags
    - json_object_object_add
    - segment_description::type
    - json_object_new_int
    - segment_description::has_offset
    - segment_description::iv_tweak
    - segment_description::oid
    - segment_description::has_encryption
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_segment(struct json_object *jobj_segments,
      const segment_description &segment_desc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_both_headers::json_area
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:364,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:366,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:370,1
    - Dst: json_area_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:371,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:372,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:374,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:376,1
    - Dst: json_area_description::digests
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:377,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_digest
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:378,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:380,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:382,1
    - Dst: json_area_description::segments
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:383,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_segment
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:384,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:386,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:388,1
    - Dst: json_area_description::tokens
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:389,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_token
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:390,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:392,1
    - Dst: json_area_description::has_config
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:394,1
    - Dst: json_area_description::config
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:395,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:395,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:395,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_config
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:396,1
    - Dst: json_area_description::config
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:396,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - headers
    argTypes:
    - LUKS2_both_headers
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 358
    functionDepth: 3
    functionLinenumber: 358
    functionLinenumberEnd: 398
    functionName: LUKS2_proto::LUKS2ProtoConverter::create_jobj
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - json_area_description::tokens
    - json_object_object_add
    - json_area_description::has_config
    - json_area_description::digests
    - LUKS2_proto::LUKS2ProtoConverter::generate_config
    - json_area_description::config
    - json_object_new_object
    - json_area_description::segments
    - LUKS2_both_headers::secondary_header
    - LUKS2_both_headers::primary_header
    - json_area_description::keyslots
    - LUKS2_both_headers::json_area
    - LUKS2_proto::LUKS2ProtoConverter::generate_digest
    - LUKS2_proto::LUKS2ProtoConverter::generate_segment
    - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot
    - LUKS2_proto::LUKS2ProtoConverter::generate_token
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::create_jobj(const LUKS2_both_headers &headers)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:405,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:406,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:407,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:410,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:412,1
    - Dst: LUKS2_header::magic
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:414,1
    - Dst: memset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:416,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:419,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:422,1
    - Dst: cpu_to_be16
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:425,1
    - Dst: LUKS2_header::version
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:425,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:426,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:426,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:427,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:428,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:430,1
    - Dst: memset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:431,1
    - Dst: LUKS2_header::has_selected_offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:434,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:435,1
    - Dst: LUKS2_header::selected_offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:435,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:437,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:439,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:440,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:441,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:442,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:444,1
    - Dst: json_object_to_json_string_ext
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:450,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:452,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:454,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:457,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:458,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:459,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:460,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:463,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:464,1
    - Dst: LUKS2_header::use_correct_checksum
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:468,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:469,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:470,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:472,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:474,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:476,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:477,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:478,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:479,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 57
    argCount: 4
    argNames:
    - header_proto
    - fd
    - offset
    - seqid
    argTypes:
    - LUKS2_header
    - int
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 481
    functionName: LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - LUKS2_header::magic
    - memset
    - crypt_hash_size
    - memcpy
    - write_buffer
    - LUKS2_header::hdr_size
    - err
    - strncpy
    - strlen
    - LUKS2_header::has_selected_offset
    - crypt_hash_destroy
    - crypt_hash_final
    - cpu_to_be16
    - LUKS2_header::selected_offset
    - crypt_hash_write
    - LUKS2_header::use_correct_checksum
    - LUKS2_header::version
    - lseek
    - cpu_to_be64
    - crypt_hash_init
    - json_object_to_json_string_ext
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::emit_luks2_binary_header(const LUKS2_header
      &header_proto, int fd, uint64_t offset, uint64_t seqid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - headers_only
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 485
    functionName: LUKS2_proto::LUKS2ProtoConverter::set_write_headers_only
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::set_write_headers_only(bool headers_only)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:491,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:491,1
    - Dst: ftruncate
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:496,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:498,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:500,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:502,1
    - Dst: LUKS2_both_headers::seqid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:504,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::create_jobj
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:519,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:520,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:520,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:521,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:521,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:521,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - headers
    - fd
    argTypes:
    - LUKS2_both_headers
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 487
    functionDepth: 4
    functionLinenumber: 487
    functionLinenumberEnd: 522
    functionName: LUKS2_proto::LUKS2ProtoConverter::convert
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - lseek
    - LUKS2_proto::LUKS2ProtoConverter::create_jobj
    - LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
    - ftruncate
    - LUKS2_both_headers::secondary_header
    - LUKS2_both_headers::seqid
    - LUKS2_both_headers::primary_header
    - err
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::convert(const LUKS2_both_headers &headers,
      int fd)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - flag
    argTypes:
    - config_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 539
    functionName: LUKS2_proto::LUKS2ProtoConverter::config_flag_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::config_flag_to_string(config_flag
      flag)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - requirement
    argTypes:
    - config_requirement
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 548
    functionName: LUKS2_proto::LUKS2ProtoConverter::config_requirement_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::config_requirement_to_string(config_requirement
      requirement)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:552,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:554,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:554,1
    - Dst: std::to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:554,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:555,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:555,1
    - Dst: std::to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:555,1
    - Dst: config_description::config_flags
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:557,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:558,1
    - Dst: config_description::config_flags
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:560,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:561,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:562,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::config_flag_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:562,1
    - Dst: config_flag
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:562,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:566,1
    - Dst: config_description::requirements
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:569,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:570,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:571,1
    - Dst: config_description::requirements
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:573,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:574,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:575,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::config_requirement_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:575,1
    - Dst: config_requirement
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:575,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:579,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:580,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:583,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - config_desc
    - json_size
    - keyslots_size
    argTypes:
    - config_description
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 584
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_config
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - json_object_new_array
    - config_requirement
    - config_description::config_flags
    - json_object_object_add
    - json_object_array_add
    - LUKS2_proto::LUKS2ProtoConverter::config_flag_to_string
    - json_object_new_string
    - config_flag
    - json_object_new_object
    - std::to_string
    - config_description::requirements
    - LUKS2_proto::LUKS2ProtoConverter::config_requirement_to_string
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_config(const config_description
      &config_desc, uint64_t json_size, uint64_t keyslots_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_put
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:587,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 590
    functionName: LUKS2ProtoConverter::~LUKS2ProtoConverter()
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - json_object_put
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::~LUKS2ProtoConverter()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: string_uint64::negative
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:23,1
    - Dst: string_uint64::has_uint_num
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:26,1
    - Dst: string_uint64::uint_num
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:27,1
    - Dst: string_uint64::has_string_num
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:28,1
    - Dst: string_uint64::string_num
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:29,1
    - Dst: std::ostringstream::str
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:31,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - str_u64
    argTypes:
    - string_uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 32
    functionName: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 2
    functionsReached:
    - string_uint64::negative
    - string_uint64::has_string_num
    - string_uint64::string_num
    - std::ostringstream::str
    - string_uint64::uint_num
    - string_uint64::has_uint_num
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::string_uint64_to_string(const string_uint64
      &str_u64)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: object_id::has_int_id
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:37,1
    - Dst: object_id::int_id
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:38,1
    - Dst: object_id::has_string_id
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:39,1
    - Dst: object_id::string_id
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:40,1
    - Dst: std::ostringstream::str
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - oid
    argTypes:
    - object_id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 44
    functionName: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 4
    functionsReached:
    - object_id::has_int_id
    - object_id::has_string_id
    - std::ostringstream::str
    - object_id::string_id
    - object_id::int_id
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::object_id_to_string(const object_id
      &oid)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - type
    argTypes:
    - hash_algorithm
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::hash_algorithm_to_string(const hash_algorithm
      type)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - type
    argTypes:
    - keyslot_area_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: LUKS2_proto::LUKS2ProtoConverter::keyslot_area_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::keyslot_area_type_to_string(const
      keyslot_area_type type)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: keyslot_area_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:72,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:73,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:73,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_area_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:73,1
    - Dst: keyslot_area_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:73,1
    - Dst: keyslot_area_description::has_offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:74,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:75,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:75,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:75,1
    - Dst: keyslot_area_description::offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:75,1
    - Dst: keyslot_area_description::has_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:76,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:77,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:77,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:77,1
    - Dst: keyslot_area_description::size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:77,1
    - Dst: keyslot_area_description::has_encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:80,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:81,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:81,1
    - Dst: keyslot_area_description::encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:81,1
    - Dst: keyslot_area_description::has_key_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:82,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:83,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:83,1
    - Dst: keyslot_area_description::key_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:83,1
    - Dst: keyslot_area_description::has_hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:86,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:87,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:87,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:87,1
    - Dst: keyslot_area_description::hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:87,1
    - Dst: keyslot_area_description::has_sector_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:88,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:89,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:89,1
    - Dst: keyslot_area_description::sector_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:89,1
    - Dst: keyslot_area_description::has_shift_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:92,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:93,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:93,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:93,1
    - Dst: keyslot_area_description::shift_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:93,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - jobj_area
    - keyslot_area_desc
    argTypes:
    - struct json_object*
    - keyslot_area_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 94
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_area
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - json_object_new_string
    - keyslot_area_description::has_hash
    - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    - keyslot_area_description::encryption
    - keyslot_area_description::sector_size
    - LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
    - keyslot_area_description::offset
    - keyslot_area_description::has_type
    - keyslot_area_description::size
    - keyslot_area_description::has_shift_size
    - keyslot_area_description::hash
    - keyslot_area_description::type
    - keyslot_area_description::key_size
    - keyslot_area_description::has_sector_size
    - keyslot_area_description::has_key_size
    - keyslot_area_description::has_size
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_area_type_to_string
    - keyslot_area_description::shift_size
    - json_object_object_add
    - keyslot_area_description::has_encryption
    - json_object_new_int
    - keyslot_area_description::has_offset
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_keyslot_area(struct json_object
      *jobj_area, const keyslot_area_description &keyslot_area_desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - keyslot_kdf_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::keyslot_kdf_type_to_string(const keyslot_kdf_type
      type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: keyslot_kdf_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:109,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:110,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:110,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:110,1
    - Dst: keyslot_kdf_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:110,1
    - Dst: keyslot_kdf_description::has_salt
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:112,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:113,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:113,1
    - Dst: keyslot_kdf_description::salt
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:113,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:115,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:115,1
    - Dst: keyslot_kdf_description::has_hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:118,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:119,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:119,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:119,1
    - Dst: keyslot_kdf_description::hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:119,1
    - Dst: keyslot_kdf_description::has_iterations
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:120,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:121,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:121,1
    - Dst: keyslot_kdf_description::iterations
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:121,1
    - Dst: keyslot_kdf_description::has_time
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:124,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:125,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:125,1
    - Dst: keyslot_kdf_description::time
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:125,1
    - Dst: keyslot_kdf_description::has_memory
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:126,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:127,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:127,1
    - Dst: keyslot_kdf_description::memory
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:127,1
    - Dst: keyslot_kdf_description::has_cpus
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:128,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:129,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:129,1
    - Dst: keyslot_kdf_description::cpus
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:129,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - jobj_kdf
    - keyslot_kdf_desc
    argTypes:
    - struct json_object*
    - keyslot_kdf_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 130
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_kdf
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - keyslot_kdf_description::memory
    - keyslot_kdf_description::has_type
    - keyslot_kdf_description::has_iterations
    - json_object_new_string
    - keyslot_kdf_description::time
    - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    - keyslot_kdf_description::has_memory
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
    - keyslot_kdf_description::has_time
    - keyslot_kdf_description::type
    - keyslot_kdf_description::has_hash
    - keyslot_kdf_description::salt
    - keyslot_kdf_description::has_salt
    - keyslot_kdf_description::iterations
    - keyslot_kdf_description::hash
    - json_object_object_add
    - keyslot_kdf_description::cpus
    - keyslot_kdf_description::has_cpus
    - json_object_new_int
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_keyslot_kdf(struct json_object *jobj_kdf,
      const keyslot_kdf_description &keyslot_kdf_desc)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - keyslot_af_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: LUKS2_proto::LUKS2ProtoConverter::keyslot_af_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::keyslot_af_type_to_string(const keyslot_af_type
      type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: keyslot_af_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:140,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:141,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:141,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_af_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:141,1
    - Dst: keyslot_af_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:141,1
    - Dst: keyslot_af_description::has_stripes
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:142,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:143,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:143,1
    - Dst: keyslot_af_description::stripes
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:143,1
    - Dst: keyslot_af_description::has_hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:144,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:145,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:145,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:145,1
    - Dst: keyslot_af_description::hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - jobj_af
    - keyslot_af_desc
    argTypes:
    - struct json_object*
    - keyslot_af_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 146
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_af
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - json_object_object_add
    - keyslot_af_description::stripes
    - json_object_new_string
    - keyslot_af_description::has_hash
    - keyslot_af_description::has_type
    - keyslot_af_description::has_stripes
    - json_object_new_int
    - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_af_type_to_string
    - keyslot_af_description::hash
    - keyslot_af_description::type
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_keyslot_af(struct json_object *jobj_af,
      const keyslot_af_description &keyslot_af_desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - keyslot_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 157
    functionName: LUKS2_proto::LUKS2ProtoConverter::keyslot_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::keyslot_type_to_string(const keyslot_type
      type)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - mode
    argTypes:
    - reencrypt_keyslot_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 168
    functionName: LUKS2_proto::LUKS2ProtoConverter::reencrypt_keyslot_mode_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::reencrypt_keyslot_mode_to_string(const
      reencrypt_keyslot_mode mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - direction
    argTypes:
    - reencrypt_keyslot_direction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 177
    functionName: LUKS2_proto::LUKS2ProtoConverter::reencrypt_keyslot_direction_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::reencrypt_keyslot_direction_to_string(const
      reencrypt_keyslot_direction direction)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:182,1
    - Dst: keyslot_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:183,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:184,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:184,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:184,1
    - Dst: keyslot_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:184,1
    - Dst: keyslot_description::has_key_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:185,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:186,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:186,1
    - Dst: keyslot_description::key_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:186,1
    - Dst: keyslot_description::has_priority
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:187,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:188,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:188,1
    - Dst: keyslot_description::priority
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:188,1
    - Dst: keyslot_description::has_mode
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:189,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:190,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:190,1
    - Dst: keyslot_description::mode
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:190,1
    - Dst: keyslot_description::has_direction
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:191,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:192,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:192,1
    - Dst: keyslot_description::direction
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:192,1
    - Dst: keyslot_description::has_area
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:195,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:196,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_area
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:197,1
    - Dst: keyslot_description::area
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:197,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:198,1
    - Dst: keyslot_description::has_kdf
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:202,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:203,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_kdf
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:204,1
    - Dst: keyslot_description::kdf
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:204,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:205,1
    - Dst: keyslot_description::has_af
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:209,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:210,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_af
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:211,1
    - Dst: keyslot_description::af
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:211,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:212,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:215,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:215,1
    - Dst: keyslot_description::oid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:215,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - jobj_keyslots
    - keyslot_desc
    argTypes:
    - struct json_object*
    - keyslot_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 216
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - keyslot_description::has_area
    - keyslot_description::has_mode
    - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_kdf
    - keyslot_description::has_key_size
    - keyslot_description::direction
    - json_object_new_string
    - keyslot_description::has_type
    - keyslot_description::has_direction
    - keyslot_description::af
    - keyslot_description::has_kdf
    - keyslot_description::key_size
    - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_area
    - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_af
    - keyslot_description::priority
    - json_object_new_object
    - keyslot_description::kdf
    - keyslot_description::type
    - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    - keyslot_description::area
    - keyslot_description::oid
    - json_object_object_add
    - keyslot_description::has_priority
    - json_object_new_int
    - keyslot_description::has_af
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_type_to_string
    - keyslot_description::mode
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_keyslot(struct json_object *jobj_keyslots,
      const keyslot_description &keyslot_desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:220,1
    - Dst: token_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:222,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:223,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:223,1
    - Dst: token_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:223,1
    - Dst: token_description::has_key_description
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:225,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:226,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:226,1
    - Dst: token_description::key_description
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:226,1
    - Dst: token_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:228,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:229,1
    - Dst: token_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:231,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:232,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:233,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:233,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:237,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:240,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:240,1
    - Dst: token_description::oid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - jobj_tokens
    - token_desc
    argTypes:
    - struct json_object*
    - token_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 241
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_token
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - json_object_new_array
    - token_description::type
    - token_description::keyslots
    - json_object_object_add
    - json_object_array_add
    - json_object_new_string
    - json_object_new_object
    - token_description::has_key_description
    - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    - token_description::has_type
    - token_description::oid
    - token_description::key_description
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_token(struct json_object *jobj_tokens,
      const token_description &token_desc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:246,1
    - Dst: digest_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:248,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:249,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:249,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:249,1
    - Dst: digest_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:249,1
    - Dst: digest_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:251,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:252,1
    - Dst: digest_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:254,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:255,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:256,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:256,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:260,1
    - Dst: digest_description::segments
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:263,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:264,1
    - Dst: digest_description::segments
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:266,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:267,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:268,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:268,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:272,1
    - Dst: digest_description::has_salt
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:275,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:276,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:276,1
    - Dst: digest_description::salt
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:276,1
    - Dst: digest_description::has_digest
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:277,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:278,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:278,1
    - Dst: digest_description::digest
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:278,1
    - Dst: digest_description::has_hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:279,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:280,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:280,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:280,1
    - Dst: digest_description::hash
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:280,1
    - Dst: digest_description::has_iterations
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:281,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:282,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:282,1
    - Dst: digest_description::iterations
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:282,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:284,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:284,1
    - Dst: digest_description::oid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:284,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - jobj_digests
    - digest_desc
    argTypes:
    - struct json_object*
    - digest_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 285
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_digest
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - digest_description::has_iterations
    - json_object_array_add
    - digest_description::salt
    - json_object_new_string
    - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
    - digest_description::iterations
    - digest_description::type
    - digest_description::has_type
    - LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
    - digest_description::keyslots
    - digest_description::digest
    - json_object_new_object
    - digest_description::segments
    - digest_description::has_digest
    - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    - digest_description::oid
    - json_object_new_array
    - json_object_object_add
    - digest_description::has_salt
    - digest_description::has_hash
    - json_object_new_int
    - digest_description::hash
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_digest(struct json_object *jobj_digests,
      const digest_description &digest_desc)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - type
    argTypes:
    - segment_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 294
    functionName: LUKS2_proto::LUKS2ProtoConverter::segment_type_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::segment_type_to_string(segment_type
      type)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - flag
    argTypes:
    - segment_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 307
    functionName: LUKS2_proto::LUKS2ProtoConverter::segment_flag_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::segment_flag_to_string(segment_flag
      flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: segment_integrity_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:310,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:311,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:311,1
    - Dst: segment_integrity_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:311,1
    - Dst: segment_integrity_description::has_journal_encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:312,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:313,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:313,1
    - Dst: segment_integrity_description::journal_encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:313,1
    - Dst: segment_integrity_description::has_journal_integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:314,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:315,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:315,1
    - Dst: segment_integrity_description::journal_integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - jobj_integrity
    - segment_integrity_desc
    argTypes:
    - struct json_object*
    - segment_integrity_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 316
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_segment_integrity
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - segment_integrity_description::journal_encryption
    - json_object_object_add
    - segment_integrity_description::has_journal_integrity
    - json_object_new_string
    - segment_integrity_description::type
    - segment_integrity_description::journal_integrity
    - segment_integrity_description::has_type
    - segment_integrity_description::has_journal_encryption
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_segment_integrity(struct json_object
      *jobj_integrity, const segment_integrity_description &segment_integrity_desc)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:320,1
    - Dst: segment_description::has_type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:322,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:323,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:323,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::segment_type_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:323,1
    - Dst: segment_description::type
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:323,1
    - Dst: segment_description::has_offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:325,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:326,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:326,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:326,1
    - Dst: segment_description::offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:326,1
    - Dst: segment_description::has_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:327,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:328,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:328,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:328,1
    - Dst: segment_description::size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:328,1
    - Dst: segment_description::flags
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:330,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:331,1
    - Dst: segment_description::flags
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:333,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:334,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:335,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::segment_flag_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:335,1
    - Dst: segment_flag
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:335,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:339,1
    - Dst: segment_description::has_iv_tweak
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:342,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:343,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:343,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:343,1
    - Dst: segment_description::iv_tweak
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:343,1
    - Dst: segment_description::has_encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:344,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:345,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:345,1
    - Dst: segment_description::encryption
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:345,1
    - Dst: segment_description::has_sector_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:346,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:347,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:347,1
    - Dst: segment_description::sector_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:347,1
    - Dst: segment_description::has_integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:349,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:350,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_segment_integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:351,1
    - Dst: segment_description::integrity
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:351,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:352,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:355,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:355,1
    - Dst: segment_description::oid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:355,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - jobj_segments
    - segment_desc
    argTypes:
    - struct json_object*
    - segment_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 356
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_segment
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - LUKS2_proto::LUKS2ProtoConverter::segment_type_to_string
    - segment_description::encryption
    - json_object_array_add
    - segment_description::has_integrity
    - json_object_new_string
    - segment_description::integrity
    - LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
    - segment_description::has_type
    - LUKS2_proto::LUKS2ProtoConverter::generate_segment_integrity
    - segment_description::has_sector_size
    - segment_description::offset
    - segment_description::has_size
    - LUKS2_proto::LUKS2ProtoConverter::segment_flag_to_string
    - segment_description::size
    - segment_flag
    - json_object_new_object
    - segment_description::sector_size
    - segment_description::has_iv_tweak
    - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
    - json_object_new_array
    - segment_description::flags
    - json_object_object_add
    - segment_description::type
    - json_object_new_int
    - segment_description::has_offset
    - segment_description::iv_tweak
    - segment_description::oid
    - segment_description::has_encryption
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_segment(struct json_object *jobj_segments,
      const segment_description &segment_desc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_both_headers::json_area
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:364,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:366,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:370,1
    - Dst: json_area_description::keyslots
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:371,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_keyslot
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:372,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:374,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:376,1
    - Dst: json_area_description::digests
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:377,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_digest
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:378,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:380,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:382,1
    - Dst: json_area_description::segments
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:383,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_segment
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:384,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:386,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:388,1
    - Dst: json_area_description::tokens
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:389,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_token
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:390,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:392,1
    - Dst: json_area_description::has_config
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:394,1
    - Dst: json_area_description::config
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:395,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:395,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:395,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::generate_config
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:396,1
    - Dst: json_area_description::config
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:396,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - headers
    argTypes:
    - LUKS2_both_headers
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 358
    functionDepth: 3
    functionLinenumber: 358
    functionLinenumberEnd: 398
    functionName: LUKS2_proto::LUKS2ProtoConverter::create_jobj
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - json_area_description::tokens
    - json_object_object_add
    - json_area_description::has_config
    - json_area_description::digests
    - LUKS2_proto::LUKS2ProtoConverter::generate_config
    - json_area_description::config
    - json_object_new_object
    - json_area_description::segments
    - LUKS2_both_headers::secondary_header
    - LUKS2_both_headers::primary_header
    - json_area_description::keyslots
    - LUKS2_both_headers::json_area
    - LUKS2_proto::LUKS2ProtoConverter::generate_digest
    - LUKS2_proto::LUKS2ProtoConverter::generate_segment
    - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot
    - LUKS2_proto::LUKS2ProtoConverter::generate_token
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::create_jobj(const LUKS2_both_headers &headers)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:405,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:406,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:407,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:410,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:412,1
    - Dst: LUKS2_header::magic
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:414,1
    - Dst: memset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:416,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:419,1
    - Dst: memcpy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:422,1
    - Dst: cpu_to_be16
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:425,1
    - Dst: LUKS2_header::version
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:425,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:426,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:426,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:427,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:428,1
    - Dst: strncpy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:430,1
    - Dst: memset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:431,1
    - Dst: LUKS2_header::has_selected_offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:434,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:435,1
    - Dst: LUKS2_header::selected_offset
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:435,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:437,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:439,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:440,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:441,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:442,1
    - Dst: LUKS2_header::hdr_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:444,1
    - Dst: json_object_to_json_string_ext
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:450,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:452,1
    - Dst: strlen
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:454,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:457,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:458,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:459,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:460,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:463,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:464,1
    - Dst: LUKS2_header::use_correct_checksum
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:468,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:469,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:470,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:472,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:474,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:476,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:477,1
    - Dst: write_buffer
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:478,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:479,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 57
    argCount: 4
    argNames:
    - header_proto
    - fd
    - offset
    - seqid
    argTypes:
    - LUKS2_header
    - int
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 481
    functionName: LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached:
    - LUKS2_header::magic
    - memset
    - crypt_hash_size
    - memcpy
    - write_buffer
    - LUKS2_header::hdr_size
    - err
    - strncpy
    - strlen
    - LUKS2_header::has_selected_offset
    - crypt_hash_destroy
    - crypt_hash_final
    - cpu_to_be16
    - LUKS2_header::selected_offset
    - crypt_hash_write
    - LUKS2_header::use_correct_checksum
    - LUKS2_header::version
    - lseek
    - cpu_to_be64
    - crypt_hash_init
    - json_object_to_json_string_ext
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::emit_luks2_binary_header(const LUKS2_header
      &header_proto, int fd, uint64_t offset, uint64_t seqid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - headers_only
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 485
    functionName: LUKS2_proto::LUKS2ProtoConverter::set_write_headers_only
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::set_write_headers_only(bool headers_only)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:491,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:491,1
    - Dst: ftruncate
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:496,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:498,1
    - Dst: lseek
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:500,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:502,1
    - Dst: LUKS2_both_headers::seqid
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:504,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::create_jobj
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:519,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:520,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:520,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:521,1
    - Dst: LUKS2_both_headers::secondary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:521,1
    - Dst: LUKS2_both_headers::primary_header
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:521,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - headers
    - fd
    argTypes:
    - LUKS2_both_headers
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 487
    functionDepth: 4
    functionLinenumber: 487
    functionLinenumberEnd: 522
    functionName: LUKS2_proto::LUKS2ProtoConverter::convert
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - lseek
    - LUKS2_proto::LUKS2ProtoConverter::create_jobj
    - LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
    - ftruncate
    - LUKS2_both_headers::secondary_header
    - LUKS2_both_headers::seqid
    - LUKS2_both_headers::primary_header
    - err
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::convert(const LUKS2_both_headers &headers,
      int fd)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - flag
    argTypes:
    - config_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 539
    functionName: LUKS2_proto::LUKS2ProtoConverter::config_flag_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::config_flag_to_string(config_flag
      flag)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - requirement
    argTypes:
    - config_requirement
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 548
    functionName: LUKS2_proto::LUKS2ProtoConverter::config_requirement_to_string
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LUKS2ProtoConverter::config_requirement_to_string(config_requirement
      requirement)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:552,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:554,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:554,1
    - Dst: std::to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:554,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:555,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:555,1
    - Dst: std::to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:555,1
    - Dst: config_description::config_flags
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:557,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:558,1
    - Dst: config_description::config_flags
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:560,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:561,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:562,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::config_flag_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:562,1
    - Dst: config_flag
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:562,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:566,1
    - Dst: config_description::requirements
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:569,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:570,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:571,1
    - Dst: config_description::requirements
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:573,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:574,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:575,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::config_requirement_to_string
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:575,1
    - Dst: config_requirement
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:575,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:579,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:580,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:583,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - config_desc
    - json_size
    - keyslots_size
    argTypes:
    - config_description
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 584
    functionName: LUKS2_proto::LUKS2ProtoConverter::generate_config
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 2
    functionsReached:
    - json_object_new_array
    - config_requirement
    - config_description::config_flags
    - json_object_object_add
    - json_object_array_add
    - LUKS2_proto::LUKS2ProtoConverter::config_flag_to_string
    - json_object_new_string
    - config_flag
    - json_object_new_object
    - std::to_string
    - config_description::requirements
    - LUKS2_proto::LUKS2ProtoConverter::config_requirement_to_string
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::generate_config(const config_description
      &config_desc, uint64_t json_size, uint64_t keyslots_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_put
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:587,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 590
    functionName: LUKS2ProtoConverter::~LUKS2ProtoConverter()
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - json_object_put
    linkageType: ''
    returnType: void
    signature: void LUKS2ProtoConverter::~LUKS2ProtoConverter()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mkostemp
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc:24,1
    - Dst: err
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc:27,1
    - Dst: LUKS2_proto::LUKS2ProtoConverter::convert
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc:30,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc:32,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc:33,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc:34,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc:36,1
    - Dst: unlink
      Src: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - headers
    argTypes:
    - LUKS2_proto::LUKS2_both_headers
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 21
    functionDepth: 5
    functionLinenumber: 21
    functionLinenumberEnd: 38
    functionName: DEFINE_PROTO_FUZZER
    functionSourceFile: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc
    functionUses: 0
    functionsReached:
    - crypt_load
    - mkostemp
    - close
    - unlink
    - crypt_free
    - crypt_init
    - LUKS2_proto::LUKS2ProtoConverter::convert
    - err
    linkageType: ''
    returnType: void
    signature: void DEFINE_PROTO_FUZZER(const LUKS2_proto::LUKS2_both_headers &headers)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc:34,1
    - Dst: google::protobuf::TextFormat::Parse
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc:42,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc:44,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc:47,1
    - Dst: open
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc:52,1
    - Dst: std::string::c_str
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc:52,1
    - Dst: LUKS2ProtoConverter::set_write_headers_only
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc:57,1
    - Dst: LUKS2ProtoConverter::convert
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc:58,1
    - Dst: close
      Src: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 62
    functionName: main
    functionSourceFile: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc
    functionUses: 0
    functionsReached:
    - LUKS2ProtoConverter::convert
    - close
    - std::string::c_str
    - LUKS2ProtoConverter::set_write_headers_only
    - open
    - google::protobuf::TextFormat::Parse
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - (
    - cd
    - ','
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: l_err
    functionSourceFile: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: l_err(cd, x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - (
    - cd
    - ','
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: l_dbg
    functionSourceFile: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: l_dbg(cd, x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: tools_cleanup
    functionSourceFile: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tools_cleanup(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: crypt_token_set_external_path
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:61,1
    - Dst: crypt_init
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:66,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:70,1
    - Dst: l_err
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:72,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:72,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:76,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:83,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:83,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:85,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:92,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:95,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:95,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:96,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:96,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:97,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:97,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:98,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:98,1
    - Dst: json_object_to_json_string_ext
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:100,1
    - Dst: l_dbg
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:106,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:108,1
    - Dst: l_err
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:110,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:110,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:115,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:117,1
    - Dst: json_object_put
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:121,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:122,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 57
    argCount: 7
    argNames:
    - device
    - server
    - user
    - path
    - keypath
    - plugin_path
    - keyslot
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 124
    functionName: token_add
    functionSourceFile: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - crypt_load
    - _
    - json_object_object_add
    - json_object_new_string
    - json_object_new_object
    - crypt_free
    - l_err
    - crypt_token_json_set
    - l_dbg
    - crypt_token_set_external_path
    - crypt_init
    - crypt_token_assign_keyslot
    - json_object_put
    - json_object_to_json_string_ext
    linkageType: ''
    returnType: int
    signature: "int token_add(\n\t\tconst char *device,\n\t\tconst char *server,\n\t\tconst
      char *user,\n\t\tconst char *path,\n\t\tconst char *keypath,\n\t\tconst char
      *plugin_path,\n\t\tint keyslot)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:192,1
    - Dst: argp_usage
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:205,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 3
    argNames:
    - key
    - arg
    - state
    argTypes:
    - int
    - char*
    - struct argp_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 217
    functionName: parse_opt
    functionSourceFile: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
    functionUses: 0
    functionsReached:
    - argp_usage
    - atoi
    linkageType: ''
    returnType: error_t
    signature: error_t parse_opt (int key, char *arg, struct argp_state *state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:228,1
    - Dst: fprintf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:232,1
    - Dst: fprintf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:235,1
    - Dst: fprintf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:239,1
    - Dst: fprintf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:243,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 3
    argNames:
    - level
    - msg
    - usrptr
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 246
    functionName: _log
    functionSourceFile: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
    functionUses: 4
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void _log(int level, const char *msg, void *usrptr)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:260,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:263,1
    - Dst: ssh_pki_import_privkey_file
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:265,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:268,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:268,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:269,1
    - Dst: _log
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:272,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:272,1
    - Dst: asprintf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:274,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:274,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:276,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:277,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:281,1
    - Dst: free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:283,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:284,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:285,1
    - Dst: get_keyslot_for_passphrase
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:290,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:292,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:293,1
    - Dst: free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:294,1
    - Dst: sshplugin_session_init
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:300,1
    - Dst: ssh_key_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:302,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:303,1
    - Dst: sshplugin_public_key_auth
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:307,1
    - Dst: ssh_key_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:308,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:311,1
    - Dst: sshplugin_download_password
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:315,1
    - Dst: ssh_disconnect
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:317,1
    - Dst: ssh_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:318,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:319,1
    - Dst: ssh_disconnect
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:323,1
    - Dst: ssh_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:324,1
    - Dst: crypt_load
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:326,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:328,1
    - Dst: free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:329,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:330,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:334,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:336,1
    - Dst: free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:337,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:338,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:344,1
    - Dst: free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:345,1
    - Dst: crypt_free
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:346,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 73
    argCount: 2
    argNames:
    - arguments
    - pin
    argTypes:
    - struct arguments*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 349
    functionName: get_keyslot_for_passphrase
    functionSourceFile: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
    functionUses: 1
    functionsReached:
    - crypt_load
    - ssh_key_free
    - sshplugin_download_password
    - crypt_free
    - ssh_free
    - tools_get_key
    - ssh_pki_import_privkey_file
    - ssh_disconnect
    - sshplugin_public_key_auth
    - free
    - get_keyslot_for_passphrase
    - crypt_set_log_callback
    - crypt_safe_memzero
    - crypt_safe_free
    - _log
    - sshplugin_session_init
    - crypt_log
    - _
    - crypt_activate_by_passphrase
    - asprintf
    - crypt_init
    linkageType: ''
    returnType: int
    signature: int get_keyslot_for_passphrase(struct arguments *arguments, const char
      *pin)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: setlocale
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:357,1
    - Dst: bindtextdomain
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:358,1
    - Dst: textdomain
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:359,1
    - Dst: argp_parse
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:361,1
    - Dst: printf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:363,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:363,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:367,1
    - Dst: crypt_set_debug_level
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:369,1
    - Dst: crypt_set_debug_level
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:371,1
    - Dst: printf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:374,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:374,1
    - Dst: strcmp
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:378,1
    - Dst: printf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:380,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:380,1
    - Dst: printf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:385,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:385,1
    - Dst: printf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:390,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:390,1
    - Dst: printf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:395,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:395,1
    - Dst: printf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:400,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:400,1
    - Dst: get_keyslot_for_passphrase
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:405,1
    - Dst: printf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:407,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:407,1
    - Dst: token_add
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:412,1
    - Dst: printf
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:424,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c:424,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 427
    functionName: main
    functionSourceFile: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
    functionUses: 1
    functionsReached:
    - _
    - setlocale
    - argp_parse
    - textdomain
    - crypt_set_debug_level
    - get_keyslot_for_passphrase
    - crypt_set_log_callback
    - bindtextdomain
    - printf
    - strcmp
    - token_add
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - (
    - cd
    - ','
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: l_dbg
    functionSourceFile: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: l_dbg(cd, x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: cryptsetup_token_version
    functionSourceFile: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *cryptsetup_token_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:52,1
    - Dst: free
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - buffer_len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: cryptsetup_token_buffer_free
    functionSourceFile: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
    functionUses: 0
    functionsReached:
    - crypt_safe_memzero
    - free
    linkageType: ''
    returnType: void
    signature: void cryptsetup_token_buffer_free(void *buffer, size_t buffer_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_token_json_get
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:61,1
    - Dst: json_tokener_parse
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - token
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 65
    functionName: get_token_jobj
    functionSourceFile: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
    functionUses: 0
    functionsReached:
    - json_tokener_parse
    - crypt_token_json_get
    linkageType: ''
    returnType: json_object
    signature: json_object *get_token_jobj(struct crypt_device *cd, int token)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_token_jobj
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:76,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:80,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:81,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:82,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:83,1
    - Dst: ssh_pki_import_privkey_file
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:85,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:85,1
    - Dst: json_object_put
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:87,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:89,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:92,1
    - Dst: sshplugin_session_init
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:96,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:96,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:97,1
    - Dst: json_object_put
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:99,1
    - Dst: ssh_key_free
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:100,1
    - Dst: sshplugin_public_key_auth
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:104,1
    - Dst: ssh_key_free
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:105,1
    - Dst: sshplugin_download_password
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:108,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:108,1
    - Dst: ssh_disconnect
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:111,1
    - Dst: ssh_free
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:112,1
    - Dst: json_object_put
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 7
    argNames:
    - cd
    - token
    - pin
    - pin_size
    - password
    - password_len
    - usrptr
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - char**
    - size_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 116
    functionName: cryptsetup_token_open_pin
    functionSourceFile: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
    functionUses: 0
    functionsReached:
    - crypt_log
    - sshplugin_public_key_auth
    - json_object_object_get_ex
    - ssh_key_free
    - sshplugin_download_password
    - ssh_free
    - get_token_jobj
    - sshplugin_session_init
    - ssh_pki_import_privkey_file
    - ssh_disconnect
    - json_object_get_string
    - json_object_put
    linkageType: ''
    returnType: int
    signature: "int cryptsetup_token_open_pin(struct crypt_device *cd, int token,
      const char *pin,\n\tsize_t pin_size __attribute__((unused)), char **password,
      size_t *password_len,\n\tvoid *usrptr __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cryptsetup_token_open_pin
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - cd
    - token
    - password
    - password_len
    - usrptr
    argTypes:
    - struct crypt_device*
    - int
    - char**
    - size_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 122
    functionName: cryptsetup_token_open
    functionSourceFile: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
    functionUses: 0
    functionsReached:
    - cryptsetup_token_open_pin
    linkageType: ''
    returnType: int
    signature: "int cryptsetup_token_open(struct crypt_device *cd, int token,\n\tchar
      **password, size_t *password_len, void *usrptr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_tokener_parse
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:129,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:133,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:134,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:135,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:136,1
    - Dst: snprintf
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:138,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:140,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:141,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:142,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:143,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:144,1
    - Dst: json_object_put
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - cd
    - json
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 147
    functionName: cryptsetup_token_dump
    functionSourceFile: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
    functionUses: 0
    functionsReached:
    - crypt_log
    - json_object_object_get_ex
    - snprintf
    - json_tokener_parse
    - json_object_get_string
    - json_object_put
    linkageType: ''
    returnType: void
    signature: void cryptsetup_token_dump(struct crypt_device *cd, const char *json)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_tokener_parse_verbose
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:155,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:159,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:160,1
    - Dst: l_dbg
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:161,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:165,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:166,1
    - Dst: l_dbg
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:167,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:171,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:172,1
    - Dst: l_dbg
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:173,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:177,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:178,1
    - Dst: l_dbg
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:179,1
    - Dst: json_object_put
      Src: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c:185,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 2
    argNames:
    - cd
    - json
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 187
    functionName: cryptsetup_token_validate
    functionSourceFile: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - l_dbg
    - json_object_is_type
    - json_object_put
    - json_tokener_parse_verbose
    linkageType: ''
    returnType: int
    signature: int cryptsetup_token_validate(struct crypt_device *cd, const char *json)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sftp_new
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:31,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:33,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:33,1
    - Dst: sftp_init
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:38,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:40,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:40,1
    - Dst: sftp_open
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:44,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:46,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:46,1
    - Dst: sftp_fstat
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:51,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:53,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:53,1
    - Dst: malloc
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:59,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:61,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:61,1
    - Dst: sftp_read
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:66,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:68,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:68,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:79,1
    - Dst: ssh_get_error
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:79,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:80,1
    - Dst: free
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:81,1
    - Dst: sftp_attributes_free
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:85,1
    - Dst: sftp_close
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:88,1
    - Dst: sftp_free
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:90,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 60
    argCount: 5
    argNames:
    - cd
    - ssh
    - path
    - password
    - password_len
    argTypes:
    - struct crypt_device*
    - ssh_session
    - char*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 92
    functionName: sshplugin_download_password
    functionSourceFile: /src/cryptsetup/tokens/ssh/ssh-utils.c
    functionUses: 2
    functionsReached:
    - sftp_new
    - sftp_free
    - crypt_log
    - _
    - free
    - sftp_fstat
    - sftp_init
    - ssh_get_error
    - malloc
    - sftp_open
    - sftp_close
    - sftp_attributes_free
    - sftp_read
    linkageType: ''
    returnType: int
    signature: "int sshplugin_download_password(struct crypt_device *cd, ssh_session
      ssh,\n\tconst char *path, char **password, size_t *password_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ssh_new
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:97,1
    - Dst: ssh_options_set
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:101,1
    - Dst: ssh_options_set
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:102,1
    - Dst: ssh_options_set
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:103,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:105,1
    - Dst: ssh_connect
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:107,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:109,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:109,1
    - Dst: ssh_session_is_known_server
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:114,1
    - Dst: ssh_is_server_known
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:116,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:119,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:119,1
    - Dst: ssh_userauth_none
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:127,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:130,1
    - Dst: ssh_get_error
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:130,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:131,1
    - Dst: ssh_disconnect
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:132,1
    - Dst: ssh_free
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:133,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 3
    argNames:
    - cd
    - host
    - user
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 138
    functionName: sshplugin_session_init
    functionSourceFile: /src/cryptsetup/tokens/ssh/ssh-utils.c
    functionUses: 2
    functionsReached:
    - crypt_log
    - _
    - ssh_options_set
    - ssh_is_server_known
    - ssh_get_error
    - ssh_free
    - ssh_new
    - ssh_userauth_none
    - ssh_connect
    - ssh_disconnect
    - ssh_session_is_known_server
    linkageType: ''
    returnType: ssh_session
    signature: ssh_session sshplugin_session_init(struct crypt_device *cd, const char
      *host, const char *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:144,1
    - Dst: ssh_userauth_list
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:146,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:147,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:147,1
    - Dst: ssh_userauth_try_publickey
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:151,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:153,1
    - Dst: ssh_userauth_publickey
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:154,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:158,1
    - Dst: _
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:158,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:159,1
    - Dst: ssh_get_error
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:159,1
    - Dst: crypt_log
      Src: /src/cryptsetup/tokens/ssh/ssh-utils.c:160,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - cd
    - ssh
    - pkey
    argTypes:
    - struct crypt_device*
    - ssh_session
    - ssh_key
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 164
    functionName: sshplugin_public_key_auth
    functionSourceFile: /src/cryptsetup/tokens/ssh/ssh-utils.c
    functionUses: 2
    functionsReached:
    - crypt_log
    - _
    - ssh_get_error
    - ssh_userauth_try_publickey
    - ssh_userauth_list
    - ssh_userauth_publickey
    linkageType: ''
    returnType: int
    signature: int sshplugin_public_key_auth(struct crypt_device *cd, ssh_session
      ssh, const ssh_key pkey)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: uuid_parse
      Src: /src/cryptsetup/src/utils_blockdev.c:26,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:27,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_blockdev.c:38,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - type
    - uuid
    - buf
    - buflen
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 44
    functionName: dm_prepare_uuid
    functionSourceFile: /src/cryptsetup/src/utils_blockdev.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - uuid_parse
    - snprintf
    linkageType: ''
    returnType: int
    signature: int dm_prepare_uuid(const char *type, const char *uuid, char *buf,
      size_t buflen)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_blockdev.c:60,1
    - Dst: major
      Src: /src/cryptsetup/src/utils_blockdev.c:60,1
    - Dst: minor
      Src: /src/cryptsetup/src/utils_blockdev.c:60,1
    - Dst: opendir
      Src: /src/cryptsetup/src/utils_blockdev.c:64,1
    - Dst: readdir
      Src: /src/cryptsetup/src/utils_blockdev.c:68,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/utils_blockdev.c:70,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_blockdev.c:80,1
    - Dst: dirfd
      Src: /src/cryptsetup/src/utils_blockdev.c:87,1
    - Dst: openat
      Src: /src/cryptsetup/src/utils_blockdev.c:90,1
    - Dst: openat
      Src: /src/cryptsetup/src/utils_blockdev.c:94,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:96,1
    - Dst: fstat
      Src: /src/cryptsetup/src/utils_blockdev.c:100,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/src/utils_blockdev.c:100,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:101,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:102,1
    - Dst: read_buffer
      Src: /src/cryptsetup/src/utils_blockdev.c:107,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:108,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/utils_blockdev.c:110,1
    - Dst: strlen
      Src: /src/cryptsetup/src/utils_blockdev.c:110,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:111,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:113,1
    - Dst: openat
      Src: /src/cryptsetup/src/utils_blockdev.c:117,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:119,1
    - Dst: fstat
      Src: /src/cryptsetup/src/utils_blockdev.c:123,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/src/utils_blockdev.c:123,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:124,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:125,1
    - Dst: read_buffer
      Src: /src/cryptsetup/src/utils_blockdev.c:130,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:131,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:132,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:135,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_blockdev.c:136,1
    - Dst: closedir
      Src: /src/cryptsetup/src/utils_blockdev.c:141,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 65
    argCount: 3
    argNames:
    - dm_uuid
    - devno
    - r_dm_name
    argTypes:
    - char*
    - dev_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 144
    functionName: lookup_holder_dm_name
    functionSourceFile: /src/cryptsetup/src/utils_blockdev.c
    functionUses: 0
    functionsReached:
    - closedir
    - read_buffer
    - opendir
    - snprintf
    - fstat
    - minor
    - major
    - strncmp
    - openat
    - S_ISREG
    - log_dbg
    - dirfd
    - strdup
    - close
    - strlen
    - readdir
    linkageType: ''
    returnType: int
    signature: int lookup_holder_dm_name(const char *dm_uuid, dev_t devno, char **r_dm_name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dm_prepare_uuid
      Src: /src/cryptsetup/src/utils_blockdev.c:153,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/src/utils_blockdev.c:153,1
    - Dst: strrchr
      Src: /src/cryptsetup/src/utils_blockdev.c:156,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:163,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_blockdev.c:165,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/src/utils_blockdev.c:168,1
    - Dst: lookup_holder_dm_name
      Src: /src/cryptsetup/src/utils_blockdev.c:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - cd
    - type
    - data_device_path
    - r_name
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 172
    functionName: tools_lookup_crypt_device
    functionSourceFile: /src/cryptsetup/src/utils_blockdev.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - lookup_holder_dm_name
    - log_dbg
    - strrchr
    - dm_prepare_uuid
    - stat
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: "int tools_lookup_crypt_device(struct crypt_device *cd, const char
      *type,\n\t\tconst char *data_device_path, char **r_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:177,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_blockdev.c:179,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - value
    - device
    - batch_mode
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 180
    functionName: report_partition
    functionSourceFile: /src/cryptsetup/src/utils_blockdev.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - _
    - log_std
    linkageType: ''
    returnType: void
    signature: void report_partition(const char *value, const char *device, bool batch_mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:185,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_blockdev.c:187,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - value
    - device
    - batch_mode
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 188
    functionName: report_superblock
    functionSourceFile: /src/cryptsetup/src/utils_blockdev.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - _
    - log_std
    linkageType: ''
    returnType: void
    signature: void report_superblock(const char *value, const char *device, bool
      batch_mode)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: blk_supported
      Src: /src/cryptsetup/src/utils_blockdev.c:203,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:204,1
    - Dst: blk_init_by_path
      Src: /src/cryptsetup/src/utils_blockdev.c:208,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_blockdev.c:209,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:209,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:215,1
    - Dst: blk_superblocks_filter_luks
      Src: /src/cryptsetup/src/utils_blockdev.c:216,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:218,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:223,1
    - Dst: blk_set_chains_for_full_print
      Src: /src/cryptsetup/src/utils_blockdev.c:224,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:227,1
    - Dst: blk_set_chains_for_fast_detection
      Src: /src/cryptsetup/src/utils_blockdev.c:228,1
    - Dst: blk_superblocks_only_luks
      Src: /src/cryptsetup/src/utils_blockdev.c:229,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:230,1
    - Dst: blk_probe
      Src: /src/cryptsetup/src/utils_blockdev.c:236,1
    - Dst: blk_is_partition
      Src: /src/cryptsetup/src/utils_blockdev.c:237,1
    - Dst: report_partition
      Src: /src/cryptsetup/src/utils_blockdev.c:238,1
    - Dst: blk_get_partition_type
      Src: /src/cryptsetup/src/utils_blockdev.c:238,1
    - Dst: blk_is_superblock
      Src: /src/cryptsetup/src/utils_blockdev.c:239,1
    - Dst: report_superblock
      Src: /src/cryptsetup/src/utils_blockdev.c:240,1
    - Dst: blk_get_superblock_type
      Src: /src/cryptsetup/src/utils_blockdev.c:240,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:242,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:252,1
    - Dst: blk_free
      Src: /src/cryptsetup/src/utils_blockdev.c:255,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 4
    argNames:
    - device
    - filter
    - count
    - batch_mode
    argTypes:
    - char*
    - tools_probe_filter_info
    - size_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 257
    functionName: tools_detect_signatures
    functionSourceFile: /src/cryptsetup/src/utils_blockdev.c
    functionUses: 0
    functionsReached:
    - blk_supported
    - _
    - blk_superblocks_only_luks
    - blk_is_superblock
    - report_partition
    - blk_set_chains_for_fast_detection
    - blk_get_partition_type
    - report_superblock
    - blk_set_chains_for_full_print
    - log_dbg
    - log_err
    - blk_probe
    - blk_free
    - blk_get_superblock_type
    - blk_is_partition
    - blk_init_by_path
    - blk_superblocks_filter_luks
    linkageType: ''
    returnType: int
    signature: "int tools_detect_signatures(const char *device, tools_probe_filter_info
      filter,\n\t\tsize_t *count,bool batch_mode)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: blk_supported
      Src: /src/cryptsetup/src/utils_blockdev.c:266,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:267,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_blockdev.c:271,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_blockdev.c:272,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:272,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/src/utils_blockdev.c:277,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_blockdev.c:282,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_blockdev.c:285,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:285,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_blockdev.c:287,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:287,1
    - Dst: blk_init_by_fd
      Src: /src/cryptsetup/src/utils_blockdev.c:291,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_blockdev.c:292,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:292,1
    - Dst: blk_set_chains_for_wipes
      Src: /src/cryptsetup/src/utils_blockdev.c:297,1
    - Dst: blk_superblocks_only_luks
      Src: /src/cryptsetup/src/utils_blockdev.c:298,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:303,1
    - Dst: blk_probe
      Src: /src/cryptsetup/src/utils_blockdev.c:305,1
    - Dst: blk_is_partition
      Src: /src/cryptsetup/src/utils_blockdev.c:306,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_blockdev.c:307,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:307,1
    - Dst: blk_get_partition_type
      Src: /src/cryptsetup/src/utils_blockdev.c:308,1
    - Dst: blk_is_superblock
      Src: /src/cryptsetup/src/utils_blockdev.c:309,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_blockdev.c:310,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:310,1
    - Dst: blk_get_superblock_type
      Src: /src/cryptsetup/src/utils_blockdev.c:311,1
    - Dst: blk_do_wipe
      Src: /src/cryptsetup/src/utils_blockdev.c:312,1
    - Dst: fsync
      Src: /src/cryptsetup/src/utils_blockdev.c:312,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_blockdev.c:313,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:313,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_blockdev.c:320,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:320,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_blockdev.c:324,1
    - Dst: blk_free
      Src: /src/cryptsetup/src/utils_blockdev.c:325,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 53
    argCount: 3
    argNames:
    - path
    - exclusive
    - only_luks
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 327
    functionName: tools_wipe_all_signatures
    functionSourceFile: /src/cryptsetup/src/utils_blockdev.c
    functionUses: 0
    functionsReached:
    - blk_probe
    - blk_free
    - blk_is_partition
    - open
    - log_verbose
    - blk_init_by_fd
    - log_dbg
    - close
    - blk_supported
    - fsync
    - log_err
    - S_ISBLK
    - blk_set_chains_for_wipes
    - _
    - blk_superblocks_only_luks
    - blk_is_superblock
    - blk_do_wipe
    - blk_get_superblock_type
    - stat
    - blk_get_partition_type
    linkageType: ''
    returnType: int
    signature: int tools_wipe_all_signatures(const char *path, bool exclusive, bool
      only_luks)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: blk_supported
      Src: /src/cryptsetup/src/utils_blockdev.c:338,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:339,1
    - Dst: blk_init_by_path
      Src: /src/cryptsetup/src/utils_blockdev.c:343,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_blockdev.c:344,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_blockdev.c:344,1
    - Dst: blk_set_chains_for_superblocks
      Src: /src/cryptsetup/src/utils_blockdev.c:348,1
    - Dst: blk_probe
      Src: /src/cryptsetup/src/utils_blockdev.c:350,1
    - Dst: blk_get_block_size
      Src: /src/cryptsetup/src/utils_blockdev.c:352,1
    - Dst: blk_get_superblock_type
      Src: /src/cryptsetup/src/utils_blockdev.c:356,1
    - Dst: strncpy
      Src: /src/cryptsetup/src/utils_blockdev.c:362,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_blockdev.c:365,1
    - Dst: blk_free
      Src: /src/cryptsetup/src/utils_blockdev.c:374,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 4
    argNames:
    - device
    - sb_name
    - sb_name_len
    - r_block_size
    argTypes:
    - char*
    - char*
    - size_t
    - unsigned*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 377
    functionName: tools_superblock_block_size
    functionSourceFile: /src/cryptsetup/src/utils_blockdev.c
    functionUses: 0
    functionsReached:
    - blk_supported
    - _
    - strncpy
    - log_dbg
    - log_err
    - blk_set_chains_for_superblocks
    - blk_probe
    - blk_get_block_size
    - blk_free
    - blk_get_superblock_type
    - blk_init_by_path
    linkageType: ''
    returnType: int
    signature: int tools_superblock_block_size(const char *device, char *sb_name,
      size_t sb_name_len, unsigned *r_block_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blk_supported
      Src: /src/cryptsetup/src/utils_blockdev.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 382
    functionName: tools_blkid_supported
    functionSourceFile: /src/cryptsetup/src/utils_blockdev.c
    functionUses: 0
    functionsReached:
    - blk_supported
    linkageType: ''
    returnType: bool
    signature: bool tools_blkid_supported(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:31,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:34,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:37,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:37,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:38,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:38,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 40
    functionName: _set_reencryption_flags
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - ARG_SET
    linkageType: ''
    returnType: void
    signature: void _set_reencryption_flags(uint32_t *flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/src/utils_reencrypt.c:48,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/src/utils_reencrypt.c:52,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:53,1
    - Dst: crypt_keyslot_set_encryption
      Src: /src/cryptsetup/src/utils_reencrypt.c:59,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:63,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:63,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:64,1
    - Dst: set_pbkdf_params
      Src: /src/cryptsetup/src/utils_reencrypt.c:65,1
    - Dst: crypt_keyslot_get_pbkdf
      Src: /src/cryptsetup/src/utils_reencrypt.c:67,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/src/utils_reencrypt.c:72,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 73
    functionName: set_keyslot_params
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_get_encryption
    - crypt_keyslot_get_pbkdf
    - crypt_keyslot_set_encryption
    - crypt_set_pbkdf_type
    - ARG_SET
    - log_dbg
    - set_pbkdf_params
    - crypt_is_cipher_null
    linkageType: ''
    returnType: int
    signature: int set_keyslot_params(struct crypt_device *cd, int keyslot)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:82,1
    - Dst: tools_lookup_crypt_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:84,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/utils_reencrypt.c:84,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:86,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:89,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:89,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:92,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_reencrypt.c:93,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:93,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:97,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:97,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:102,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_reencrypt.c:103,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:103,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/utils_reencrypt.c:105,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:105,1
    - Dst: noDialog
      Src: /src/cryptsetup/src/utils_reencrypt.c:111,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:111,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:112,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:114,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:114,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:119,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 3
    argNames:
    - cd
    - data_device
    - r_active_name
    argTypes:
    - struct crypt_device*
    - char*
    - char**
    assertStmts:
    - condition: (data_device)
      pos:
        line_end: 81
        line_start: 81
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 123
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 123
    functionName: get_active_device_name
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - free
    - log_std
    - ARG_SET
    - assert
    - log_dbg
    - log_err
    - tools_lookup_crypt_device
    - asprintf
    - noDialog
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: "int get_active_device_name(struct crypt_device *cd,\n\tconst char
      *data_device,\n\tchar **r_active_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:129,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:130,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:132,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_reencrypt.c:133,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:133,1
    - Dst: get_active_device_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cd
    - data_device
    - r_active_name
    argTypes:
    - struct crypt_device*
    - char*
    - char**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 128
        line_start: 128
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (r_active_name)
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 136
      start: 125
    functionDepth: 4
    functionLinenumber: 125
    functionLinenumberEnd: 136
    functionName: reencrypt_get_active_name
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - get_active_device_name
    - ARG_STR
    - ARG_SET
    - assert
    - strdup
    linkageType: ''
    returnType: int
    signature: "int reencrypt_get_active_name(struct crypt_device *cd,\n\tconst char
      *data_device,\n\tchar **r_active_name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:142,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:144,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:147,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:149,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:150,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:151,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:151,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:154,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:156,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:158,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:159,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:162,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:162,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - params
    argTypes:
    - struct crypt_params_reencrypt*
    assertStmts:
    - condition: (params)
      pos:
        line_end: 141
        line_start: 141
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 167
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 167
    functionName: decrypt_verify_and_set_params
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_STR
    - ARG_SET
    - assert
    - log_err
    - strcmp
    linkageType: ''
    returnType: int
    signature: int decrypt_verify_and_set_params(struct crypt_params_reencrypt *params)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:172,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:173,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:175,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:176,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:176,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:180,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:181,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:181,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:185,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:186,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:187,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:187,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:188,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:188,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:192,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:193,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:193,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:194,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:194,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:199,1
    - Dst: decrypt_verify_and_set_params
      Src: /src/cryptsetup/src/utils_reencrypt.c:201,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:203,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:203,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:204,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:204,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:208,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:211,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_reencrypt.c:213,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:220,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:221,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:222,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:225,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:226,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:230,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:231,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 45
    argCount: 2
    argNames:
    - params
    - r_hash
    argTypes:
    - struct crypt_params_reencrypt*
    - char**
    assertStmts:
    - condition: (params)
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (r_hash)
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 235
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 235
    functionName: reencrypt_verify_and_update_params
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_STR
    - ARG_SET
    - strncmp
    - assert
    - log_err
    - ARG_UINT64
    - strdup
    - decrypt_verify_and_set_params
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int reencrypt_verify_and_update_params(struct crypt_params_reencrypt
      *params,\n\tchar **r_hash)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:241,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:242,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:243,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt.c:246,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/src/utils_reencrypt.c:246,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:247,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:247,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - data_device
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 253
    functionName: reencrypt_hint_force_offline_reencrypt
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_SET
    - S_ISREG
    - log_err
    - stat
    linkageType: ''
    returnType: int
    signature: int reencrypt_hint_force_offline_reencrypt(const char *data_device)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:263,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:264,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:265,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:266,1
    - Dst: crypt_get_old_volume_key_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:268,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:269,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:271,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:272,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:273,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:274,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:276,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:277,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:277,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:281,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:282,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:282,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:286,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:287,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:288,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:289,1
    - Dst: luks_init_keyslot_contexts_by_volume_keys
      Src: /src/cryptsetup/src/utils_reencrypt.c:290,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:290,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:291,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:293,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:294,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:299,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:299,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:300,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:303,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:303,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:305,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:305,1
    - Dst: luks_try_token_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:307,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:307,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:308,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:309,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/utils_reencrypt.c:310,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:311,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:311,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:311,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:314,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/utils_reencrypt.c:319,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:321,1
    - Dst: luks_init_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:323,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/utils_reencrypt.c:323,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:327,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:327,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:328,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_reencrypt.c:331,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/utils_reencrypt.c:332,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_reencrypt.c:333,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:342,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:343,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 58
    argCount: 4
    argNames:
    - cd
    - params
    - r_kc1
    - r_kc2
    argTypes:
    - struct crypt_device*
    - struct crypt_params_reencrypt*
    - struct crypt_keyslot_context**
    - struct crypt_keyslot_context**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 262
        line_start: 262
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (r_kc2)
      pos:
        line_end: 265
        line_start: 265
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (r_kc1)
      pos:
        line_end: 264
        line_start: 264
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (params)
      pos:
        line_end: 263
        line_start: 263
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 347
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 347
    functionName: reencrypt_multi_key_unlock
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - luks_init_keyslot_context
    - verify_passphrase
    - ARG_UINT32
    - crypt_get_volume_key_size
    - crypt_get_old_volume_key_size
    - tools_passphrase_msg
    - luks_try_token_unlock
    - tools_keyslot_msg
    - luks_init_keyslot_contexts_by_volume_keys
    - check_signal
    - ARG_STR
    - set_tries_tty
    - log_err
    - crypt_activate_by_keyslot_context
    - _
    - ARG_SET
    - assert
    - crypt_keyslot_context_free
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: "int reencrypt_multi_key_unlock(struct crypt_device *cd,\n\t\t\t\t
      \      const struct crypt_params_reencrypt *params,\n\t\t\t\t       struct crypt_keyslot_context
      **r_kc1,\n\t\t\t\t       struct crypt_keyslot_context **r_kc2)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:356,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:357,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:359,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:359,1
    - Dst: crypt_get_old_volume_key_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:361,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:363,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:365,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:366,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:368,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:369,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:369,1
    - Dst: luks_init_keyslot_contexts_by_volume_keys
      Src: /src/cryptsetup/src/utils_reencrypt.c:373,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:373,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:377,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:382,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:382,1
    - Dst: luks_try_token_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:385,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:385,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:386,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:387,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/utils_reencrypt.c:388,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:389,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:389,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:389,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:392,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/utils_reencrypt.c:397,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:399,1
    - Dst: luks_init_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:401,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/utils_reencrypt.c:401,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:405,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:405,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_reencrypt.c:408,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/utils_reencrypt.c:409,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_reencrypt.c:410,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:418,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:420,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 46
    argCount: 3
    argNames:
    - cd
    - params
    - r_kc
    argTypes:
    - struct crypt_device*
    - struct crypt_params_reencrypt*
    - struct crypt_keyslot_context**
    assertStmts:
    - condition: (params)
      pos:
        line_end: 355
        line_start: 355
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (r_kc)
      pos:
        line_end: 356
        line_start: 356
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 423
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 423
    functionName: reencrypt_single_key_unlock
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - luks_init_keyslot_context
    - verify_passphrase
    - ARG_UINT32
    - crypt_get_volume_key_size
    - crypt_get_old_volume_key_size
    - tools_passphrase_msg
    - luks_try_token_unlock
    - tools_keyslot_msg
    - luks_init_keyslot_contexts_by_volume_keys
    - check_signal
    - ARG_STR
    - set_tries_tty
    - log_err
    - crypt_activate_by_keyslot_context
    - _
    - ARG_SET
    - assert
    - crypt_keyslot_context_free
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: "int reencrypt_single_key_unlock(struct crypt_device *cd,\n\t\t\t\t
      \      const struct crypt_params_reencrypt *params,\n\t\t\t\t       struct crypt_keyslot_context
      **r_kc)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/src/utils_reencrypt.c:434,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:436,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:436,1
    - Dst: reencrypt_verify_and_update_params
      Src: /src/cryptsetup/src/utils_reencrypt.c:441,1
    - Dst: reencrypt_hint_force_offline_reencrypt
      Src: /src/cryptsetup/src/utils_reencrypt.c:445,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:449,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:449,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/utils_reencrypt.c:450,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:450,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:452,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:452,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/utils_reencrypt.c:457,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:457,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:458,1
    - Dst: reencrypt_multi_key_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:464,1
    - Dst: reencrypt_single_key_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:466,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:470,1
    - Dst: reencrypt_get_active_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:471,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:473,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:474,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:475,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:478,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:479,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:480,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:481,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 2
    argNames:
    - cd
    - data_device
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 425
    functionDepth: 5
    functionLinenumber: 425
    functionLinenumberEnd: 483
    functionName: reencrypt_luks2_load
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_get_active_name
    - yesDialog
    - crypt_reencrypt_init_by_keyslot_context
    - _
    - free
    - reencrypt_multi_key_unlock
    - crypt_reencrypt_status
    - ARG_SET
    - log_err
    - reencrypt_hint_force_offline_reencrypt
    - crypt_get_metadata_device_name
    - reencrypt_single_key_unlock
    - crypt_get_device_name
    - crypt_keyslot_context_free
    - asprintf
    - reencrypt_verify_and_update_params
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int reencrypt_luks2_load(struct crypt_device *cd, const char *data_device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/src/utils_reencrypt.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 498
    functionName: luks2_reencrypt_in_progress
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_persistent_flags_get
    linkageType: ''
    returnType: int
    signature: int luks2_reencrypt_in_progress(struct crypt_device *cd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:514,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:515,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt.c:517,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:520,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:520,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/utils_reencrypt.c:523,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:524,1
    - Dst: reencrypt_luks1_in_progress
      Src: /src/cryptsetup/src/utils_reencrypt.c:529,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:529,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/utils_reencrypt.c:536,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/utils_reencrypt.c:536,1
    - Dst: luks2_reencrypt_in_progress
      Src: /src/cryptsetup/src/utils_reencrypt.c:537,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:539,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/utils_reencrypt.c:549,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/utils_reencrypt.c:549,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - r_cd
    - header_device
    - data_device
    argTypes:
    - struct crypt_device**
    - char*
    - char*
    assertStmts:
    - condition: (r_cd)
      pos:
        line_end: 513
        line_start: 513
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (data_device)
      pos:
        line_end: 514
        line_start: 514
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 550
      start: 506
    functionDepth: 2
    functionLinenumber: 506
    functionLinenumberEnd: 550
    functionName: load_luks
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - luks2_reencrypt_in_progress
    - reencrypt_luks1_in_progress
    - crypt_free
    - assert
    - isLUKS2
    - stat
    - uuid_or_device
    - crypt_get_type
    - crypt_init_data_device
    linkageType: ''
    returnType: enum device_status_info
    signature: "enum device_status_info load_luks(struct crypt_device **r_cd,\n\tconst
      char *header_device,\n\tconst char *data_device)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/src/utils_reencrypt.c:557,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:561,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:561,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:566,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:566,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/src/utils_reencrypt.c:571,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:572,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:572,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/utils_reencrypt.c:577,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:578,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:578,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 583
    functionName: luks2_reencrypt_eligible
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_get_cipher
    - crypt_persistent_flags_get
    - crypt_get_integrity_info
    - log_err
    linkageType: ''
    returnType: bool
    signature: bool luks2_reencrypt_eligible(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load_luks
      Src: /src/cryptsetup/src/utils_reencrypt.c:590,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - device
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 585
    functionDepth: 3
    functionLinenumber: 585
    functionLinenumberEnd: 594
    functionName: check_luks_device
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - load_luks
    - crypt_free
    linkageType: ''
    returnType: enum device_status_info
    signature: enum device_status_info check_luks_device(const char *device)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:602,1
    - Dst: tools_superblock_block_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:604,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:609,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:609,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - data_device
    - new_sector_size
    argTypes:
    - char*
    - uint32_t
    assertStmts:
    - condition: (data_device)
      pos:
        line_end: 601
        line_start: 601
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 616
      start: 596
    functionDepth: 2
    functionLinenumber: 596
    functionLinenumberEnd: 616
    functionName: reencrypt_check_data_sb_block_size
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - log_err
    - tools_superblock_block_size
    - _
    - assert
    linkageType: ''
    returnType: int
    signature: int reencrypt_check_data_sb_block_size(const char *data_device, uint32_t
      new_sector_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt.c:623,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/utils_reencrypt.c:623,1
    - Dst: reencrypt_check_data_sb_block_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - active_device
    - new_sector_size
    argTypes:
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 618
    functionDepth: 3
    functionLinenumber: 618
    functionLinenumberEnd: 628
    functionName: reencrypt_check_active_device_sb_block_size
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - snprintf
    - reencrypt_check_data_sb_block_size
    - crypt_get_dir
    linkageType: ''
    returnType: int
    signature: int reencrypt_check_active_device_sb_block_size(const char *active_device,
      uint32_t new_sector_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt.c:639,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:642,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/src/utils_reencrypt.c:645,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:646,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - header_device
    - data_device
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 648
    functionName: reencrypt_is_header_detached
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_free
    - crypt_header_is_detached
    - crypt_init_data_device
    - stat
    linkageType: ''
    returnType: int
    signature: int reencrypt_is_header_detached(const char *header_device, const char
      *data_device)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:657,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:662,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:663,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:664,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:665,1
    - Dst: _set_reencryption_flags
      Src: /src/cryptsetup/src/utils_reencrypt.c:671,1
    - Dst: reencrypt_is_header_detached
      Src: /src/cryptsetup/src/utils_reencrypt.c:674,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:674,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:678,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:678,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:685,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:685,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:686,1
    - Dst: imaxabs
      Src: /src/cryptsetup/src/utils_reencrypt.c:686,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:687,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:687,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:692,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:692,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:693,1
    - Dst: imaxabs
      Src: /src/cryptsetup/src/utils_reencrypt.c:693,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:694,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_reencrypt.c:697,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:697,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:697,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:700,1
    - Dst: uuid_parse
      Src: /src/cryptsetup/src/utils_reencrypt.c:700,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:700,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:701,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:701,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:705,1
    - Dst: reencrypt_check_data_sb_block_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:706,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:706,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:711,1
    - Dst: uuid_generate
      Src: /src/cryptsetup/src/utils_reencrypt.c:712,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/src/utils_reencrypt.c:713,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_reencrypt.c:714,1
    - Dst: ARG_SET_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:716,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:719,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt.c:720,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:720,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_reencrypt.c:724,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:727,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:727,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:729,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:729,1
    - Dst: posix_fallocate
      Src: /src/cryptsetup/src/utils_reencrypt.c:733,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_reencrypt.c:734,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:736,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:736,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_reencrypt.c:741,1
    - Dst: ARG_SET_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:745,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:751,1
    - Dst: ARG_SET_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:752,1
    - Dst: imaxabs
      Src: /src/cryptsetup/src/utils_reencrypt.c:752,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:756,1
    - Dst: ARG_SET_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:757,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:758,1
    - Dst: ARG_SET_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:759,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:759,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:760,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:760,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:761,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:761,1
    - Dst: luksFormat
      Src: /src/cryptsetup/src/utils_reencrypt.c:766,1
    - Dst: luks2_reencrypt_eligible
      Src: /src/cryptsetup/src/utils_reencrypt.c:770,1
    - Dst: imaxabs
      Src: /src/cryptsetup/src/utils_reencrypt.c:776,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:779,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:779,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:780,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/utils_reencrypt.c:782,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/utils_reencrypt.c:783,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/src/utils_reencrypt.c:786,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:792,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/utils_reencrypt.c:795,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/src/utils_reencrypt.c:797,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:800,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:800,1
    - Dst: set_activation_flags
      Src: /src/cryptsetup/src/utils_reencrypt.c:807,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:808,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:809,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_reencrypt.c:813,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:813,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/utils_reencrypt.c:813,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:820,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:822,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:827,1
    - Dst: unlink
      Src: /src/cryptsetup/src/utils_reencrypt.c:829,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 127
    argCount: 3
    argNames:
    - cd
    - data_device
    - device_name
    argTypes:
    - struct crypt_device**
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 650
    functionDepth: 3
    functionLinenumber: 650
    functionLinenumberEnd: 831
    functionName: encrypt_luks2_init
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_free
    - ARG_UINT32
    - uuid_parse
    - open
    - imaxabs
    - luks2_reencrypt_eligible
    - crypt_get_dir
    - uuid_unparse
    - set_activation_flags
    - crypt_keyslot_destroy
    - strdup
    - close
    - ARG_SET_UINT64
    - crypt_reencrypt_init_by_keyslot_context
    - log_std
    - ARG_STR
    - unlink
    - log_err
    - crypt_activate_by_keyslot_context
    - _set_reencryption_flags
    - _
    - snprintf
    - reencrypt_is_header_detached
    - crypt_get_cipher
    - uuid_generate
    - ARG_SET
    - ARG_UINT64
    - crypt_get_cipher_mode
    - posix_fallocate
    - ARG_SET_STR
    - luksFormat
    - crypt_init
    - crypt_keyslot_context_free
    - ARG_INT32
    - reencrypt_check_data_sb_block_size
    - crypt_header_restore
    linkageType: ''
    returnType: int
    signature: int encrypt_luks2_init(struct crypt_device **cd, const char *data_device,
      const char *device_name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:839,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:840,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt.c:842,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/utils_reencrypt.c:845,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/utils_reencrypt.c:849,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/utils_reencrypt.c:849,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:850,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:850,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:851,1
    - Dst: luks2_reencrypt_in_progress
      Src: /src/cryptsetup/src/utils_reencrypt.c:855,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:857,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - r_cd
    - active_name
    - header_device
    argTypes:
    - struct crypt_device**
    - char*
    - char*
    assertStmts:
    - condition: (r_cd)
      pos:
        line_end: 838
        line_start: 838
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (active_name)
      pos:
        line_end: 839
        line_start: 839
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 864
      start: 833
    functionDepth: 2
    functionLinenumber: 833
    functionLinenumberEnd: 864
    functionName: load_luks2_by_name
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - luks2_reencrypt_in_progress
    - _
    - crypt_init_by_name_and_header
    - isLUKS2
    - assert
    - log_err
    - crypt_free
    - stat
    - crypt_get_type
    linkageType: ''
    returnType: enum device_status_info
    signature: enum device_status_info load_luks2_by_name(struct crypt_device **r_cd,
      const char *active_name, const char *header_device)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:871,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:872,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:873,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:875,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_reencrypt.c:878,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:878,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/utils_reencrypt.c:880,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/src/utils_reencrypt.c:884,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:886,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - cd
    - data_device
    - header
    argTypes:
    - struct crypt_device**
    - char*
    - char*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 870
        line_start: 870
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (data_device)
      pos:
        line_end: 871
        line_start: 871
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (header)
      pos:
        line_end: 872
        line_start: 872
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 889
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 889
    functionName: reencrypt_restore_header
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - log_verbose
    - crypt_free
    - assert
    - log_err
    - crypt_init
    - crypt_header_restore
    linkageType: ''
    returnType: int
    signature: "int reencrypt_restore_header(struct crypt_device **cd,\n\tconst char
      *data_device, const char *header)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:902,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:903,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:904,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:909,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:910,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/src/utils_reencrypt.c:912,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_reencrypt.c:914,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:914,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:917,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/utils_reencrypt.c:918,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:918,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/utils_reencrypt.c:925,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:925,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:926,1
    - Dst: decrypt_verify_and_set_params
      Src: /src/cryptsetup/src/utils_reencrypt.c:931,1
    - Dst: reencrypt_hint_force_offline_reencrypt
      Src: /src/cryptsetup/src/utils_reencrypt.c:934,1
    - Dst: reencrypt_single_key_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:938,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/src/utils_reencrypt.c:942,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_reencrypt.c:948,1
    - Dst: fstat
      Src: /src/cryptsetup/src/utils_reencrypt.c:952,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_reencrypt.c:953,1
    - Dst: fchmod
      Src: /src/cryptsetup/src/utils_reencrypt.c:958,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_reencrypt.c:959,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:961,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:961,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:966,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:970,1
    - Dst: load_luks2_by_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:971,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:971,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:976,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/utils_reencrypt.c:978,1
    - Dst: _set_reencryption_flags
      Src: /src/cryptsetup/src/utils_reencrypt.c:982,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:984,1
    - Dst: reencrypt_get_active_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:985,1
    - Dst: tools_wipe_all_signatures
      Src: /src/cryptsetup/src/utils_reencrypt.c:990,1
    - Dst: reencrypt_restore_header
      Src: /src/cryptsetup/src/utils_reencrypt.c:993,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1000,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1001,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/src/utils_reencrypt.c:1004,1
    - Dst: reencrypt_restore_header
      Src: /src/cryptsetup/src/utils_reencrypt.c:1006,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1010,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1011,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1012,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt.c:1014,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/src/utils_reencrypt.c:1014,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1015,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1015,1
    - Dst: unlink
      Src: /src/cryptsetup/src/utils_reencrypt.c:1018,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 98
    argCount: 2
    argNames:
    - cd
    - expheader
    argTypes:
    - struct crypt_device**
    - char*
    assertStmts:
    - condition: (expheader)
      pos:
        line_end: 908
        line_start: 908
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (cd && *cd)
      pos:
        line_end: 909
        line_start: 909
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1021
      start: 891
    functionDepth: 5
    functionLinenumber: 891
    functionLinenumberEnd: 1021
    functionName: decrypt_luks2_datashift_init
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_get_active_name
    - yesDialog
    - crypt_load
    - crypt_header_backup
    - crypt_free
    - decrypt_verify_and_set_params
    - tools_wipe_all_signatures
    - open
    - crypt_init_data_device
    - load_luks2_by_name
    - free
    - strdup
    - crypt_get_device_name
    - close
    - crypt_reencrypt_init_by_keyslot_context
    - stat
    - ARG_STR
    - unlink
    - crypt_reencrypt_status
    - log_err
    - reencrypt_hint_force_offline_reencrypt
    - crypt_get_data_offset
    - reencrypt_restore_header
    - _set_reencryption_flags
    - _
    - fstat
    - fchmod
    - ARG_SET
    - ARG_UINT64
    - assert
    - S_ISREG
    - reencrypt_single_key_unlock
    - crypt_keyslot_context_free
    - asprintf
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: "int decrypt_luks2_datashift_init(struct crypt_device **cd,\n\tconst
      char *expheader)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1030,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1031,1
    - Dst: imaxabs
      Src: /src/cryptsetup/src/utils_reencrypt.c:1032,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:1033,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:1034,1
    - Dst: luks2_reencrypt_eligible
      Src: /src/cryptsetup/src/utils_reencrypt.c:1038,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:1041,1
    - Dst: crypt_header_is_detached
      Src: /src/cryptsetup/src/utils_reencrypt.c:1041,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/src/utils_reencrypt.c:1042,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1043,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1043,1
    - Dst: reencrypt_hint_force_offline_reencrypt
      Src: /src/cryptsetup/src/utils_reencrypt.c:1047,1
    - Dst: _set_reencryption_flags
      Src: /src/cryptsetup/src/utils_reencrypt.c:1051,1
    - Dst: reencrypt_single_key_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1053,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1057,1
    - Dst: reencrypt_get_active_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:1058,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1060,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1061,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1066,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1067,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - cd
    - data_device
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1023
    functionDepth: 5
    functionLinenumber: 1023
    functionLinenumberEnd: 1069
    functionName: decrypt_luks2_init
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_get_active_name
    - crypt_reencrypt_init_by_keyslot_context
    - crypt_header_is_detached
    - luks2_reencrypt_eligible
    - _
    - free
    - ARG_STR
    - ARG_SET
    - ARG_UINT64
    - ARG_INT32
    - log_err
    - reencrypt_hint_force_offline_reencrypt
    - crypt_get_metadata_device_name
    - reencrypt_single_key_unlock
    - crypt_keyslot_context_free
    - crypt_get_data_offset
    - _set_reencryption_flags
    - imaxabs
    linkageType: ''
    returnType: int
    signature: int decrypt_luks2_init(struct crypt_device *cd, const char *data_device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1116,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1117,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1118,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/utils_reencrypt.c:1118,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1119,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/src/utils_reencrypt.c:1124,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1125,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - cd
    - kcs
    - keyslot
    argTypes:
    - struct crypt_device*
    - struct keyslot_contexts*
    - int
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 1115
        line_start: 1115
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kcs)
      pos:
        line_end: 1116
        line_start: 1116
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kcs->last_tkn < ARRAY_SIZE(kcs->tkns))
      pos:
        line_end: 1117
        line_start: 1117
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (keyslot >= 0)
      pos:
        line_end: 1118
        line_start: 1118
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1132
      start: 1109
    functionDepth: 1
    functionLinenumber: 1109
    functionLinenumberEnd: 1132
    functionName: try_token
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - ARRAY_SIZE
    - assert
    - crypt_token_is_assigned
    - crypt_activate_by_keyslot_context
    - tools_keyslot_msg
    linkageType: ''
    returnType: struct crypt_keyslot_context
    signature: "struct crypt_keyslot_context *try_token(struct crypt_device *cd,\n\t\t\t\t\t
      \      struct keyslot_contexts *kcs,\n\t\t\t\t\t       int keyslot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - kcs
    - keyslot
    argTypes:
    - struct keyslot_contexts*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1134
    functionDepth: 0
    functionLinenumber: 1134
    functionLinenumberEnd: 1144
    functionName: reencrypt_keyslot_for_unlock
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool reencrypt_keyslot_for_unlock(struct keyslot_contexts *kcs, int
      keyslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - kcs
    - keyslot
    argTypes:
    - struct keyslot_contexts*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1146
    functionDepth: 0
    functionLinenumber: 1146
    functionLinenumberEnd: 1156
    functionName: reencrypt_keyslot_is_unlocked
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool reencrypt_keyslot_is_unlocked(struct keyslot_contexts *kcs, int
      keyslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - kcs
    - token
    argTypes:
    - struct keyslot_contexts*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1168
    functionName: reencrypt_token_for_unlock
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool reencrypt_token_for_unlock(struct keyslot_contexts *kcs, int token)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - kcs
    - token
    argTypes:
    - struct keyslot_contexts*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1170
    functionDepth: 0
    functionLinenumber: 1170
    functionLinenumberEnd: 1181
    functionName: reencrypt_get_token_context
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct crypt_keyslot_context
    signature: "struct crypt_keyslot_context *reencrypt_get_token_context(struct keyslot_contexts
      *kcs,\n\t\t\t\t\t\t\t\t int token)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1185,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1186,1
    - Dst: reencrypt_token_for_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1188,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - kcs
    - token
    argTypes:
    - struct keyslot_contexts*
    - int
    assertStmts:
    - condition: (kcs)
      pos:
        line_end: 1184
        line_start: 1184
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (token >= 0)
      pos:
        line_end: 1185
        line_start: 1185
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1194
      start: 1183
    functionDepth: 1
    functionLinenumber: 1183
    functionLinenumberEnd: 1194
    functionName: reencrypt_token_add_for_unlock
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - reencrypt_token_for_unlock
    - assert
    linkageType: ''
    returnType: void
    signature: void reencrypt_token_add_for_unlock(struct keyslot_contexts *kcs, int
      token)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1202,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1203,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1204,1
    - Dst: abort
      Src: /src/cryptsetup/src/utils_reencrypt.c:1213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - kcs
    - token
    - token_kc
    argTypes:
    - struct keyslot_contexts*
    - int
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kcs)
      pos:
        line_end: 1201
        line_start: 1201
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (token >= 0)
      pos:
        line_end: 1202
        line_start: 1202
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (token_kc)
      pos:
        line_end: 1203
        line_start: 1203
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1214
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1214
    functionName: reencrypt_token_add
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - abort
    - assert
    linkageType: ''
    returnType: void
    signature: "void reencrypt_token_add(struct keyslot_contexts *kcs,\n\t\t\t\tint
      token,\n\t\t\t\tstruct crypt_keyslot_context *token_kc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1222,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1223,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1224,1
    - Dst: abort
      Src: /src/cryptsetup/src/utils_reencrypt.c:1234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - kcs
    - keyslot
    - kc
    argTypes:
    - struct keyslot_contexts*
    - int
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kcs)
      pos:
        line_end: 1221
        line_start: 1221
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (keyslot >= 0)
      pos:
        line_end: 1223
        line_start: 1223
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kc)
      pos:
        line_end: 1222
        line_start: 1222
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1235
      start: 1216
    functionDepth: 0
    functionLinenumber: 1216
    functionLinenumberEnd: 1235
    functionName: reencrypt_keyslot_unlocked_by_context
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - abort
    - assert
    linkageType: ''
    returnType: void
    signature: "void reencrypt_keyslot_unlocked_by_context(struct keyslot_contexts
      *kcs,\n\t\t\t\t\t\t  int keyslot,\n\t\t\t\t\t\t  struct crypt_keyslot_context
      *kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1240,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - kcs
    - keyslot
    argTypes:
    - struct keyslot_contexts*
    - int
    assertStmts:
    - condition: (kcs)
      pos:
        line_end: 1239
        line_start: 1239
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (keyslot >= 0)
      pos:
        line_end: 1240
        line_start: 1240
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1245
      start: 1238
    functionDepth: 0
    functionLinenumber: 1238
    functionLinenumberEnd: 1245
    functionName: reencrypt_keyslot_add_for_unlock
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void reencrypt_keyslot_add_for_unlock(struct keyslot_contexts *kcs,
      int keyslot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1252,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1253,1
    - Dst: reencrypt_token_add
      Src: /src/cryptsetup/src/utils_reencrypt.c:1255,1
    - Dst: reencrypt_keyslot_unlocked_by_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - kcs
    - token
    - keyslot
    - token_kc
    argTypes:
    - struct keyslot_contexts*
    - int
    - int
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kcs)
      pos:
        line_end: 1251
        line_start: 1251
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (token_kc)
      pos:
        line_end: 1252
        line_start: 1252
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1257
      start: 1247
    functionDepth: 1
    functionLinenumber: 1247
    functionLinenumberEnd: 1257
    functionName: reencrypt_token_unlocks_keyslot
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_keyslot_unlocked_by_context
    - reencrypt_token_add
    - assert
    linkageType: ''
    returnType: void
    signature: "void reencrypt_token_unlocks_keyslot(struct keyslot_contexts *kcs,\n\t\t\t\t\t
      \   int token,\n\t\t\t\t\t    int keyslot,\n\t\t\t\t\t    struct crypt_keyslot_context
      *token_kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1263,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1264,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1265,1
    - Dst: reencrypt_keyslot_unlocked_by_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - kcs
    - keyslot
    - kc
    argTypes:
    - struct keyslot_contexts*
    - int
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kcs)
      pos:
        line_end: 1262
        line_start: 1262
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kc)
      pos:
        line_end: 1263
        line_start: 1263
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (keyslot >= 0)
      pos:
        line_end: 1264
        line_start: 1264
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1269
      start: 1259
    functionDepth: 1
    functionLinenumber: 1259
    functionLinenumberEnd: 1269
    functionName: reencrypt_keyslot_unlocked_by_context_new
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_keyslot_unlocked_by_context
    - assert
    linkageType: ''
    returnType: void
    signature: "void reencrypt_keyslot_unlocked_by_context_new(struct keyslot_contexts
      *kcs,\n\t\t\t\t\t\t      int keyslot,\n\t\t\t\t\t\t      struct crypt_keyslot_context
      *kc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/src/utils_reencrypt.c:1280,1
    - Dst: reencrypt_keyslot_is_unlocked
      Src: /src/cryptsetup/src/utils_reencrypt.c:1284,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1285,1
    - Dst: reencrypt_get_token_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1289,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1291,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1294,1
    - Dst: reencrypt_keyslot_unlocked_by_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1295,1
    - Dst: luks_try_token_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1301,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1302,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/utils_reencrypt.c:1303,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1305,1
    - Dst: reencrypt_token_unlocks_keyslot
      Src: /src/cryptsetup/src/utils_reencrypt.c:1306,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - cd
    - token
    - slot_to_check
    - kcs
    argTypes:
    - struct crypt_device*
    - int
    - int
    - struct keyslot_contexts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1272
    functionDepth: 2
    functionLinenumber: 1272
    functionLinenumberEnd: 1310
    functionName: single_token
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - ARG_STR
    - reencrypt_token_unlocks_keyslot
    - set_tries_tty
    - log_dbg
    - reencrypt_get_token_context
    - crypt_token_is_assigned
    - luks_try_token_unlock
    - reencrypt_keyslot_unlocked_by_context
    - crypt_activate_by_keyslot_context
    - reencrypt_keyslot_is_unlocked
    linkageType: ''
    returnType: int
    signature: "int single_token(struct crypt_device *cd,\n\t\t\tint token,\n\t\t\tint
      slot_to_check,\n\t\t\tstruct keyslot_contexts *kcs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1320,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1321,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1322,1
    - Dst: reencrypt_keyslot_is_unlocked
      Src: /src/cryptsetup/src/utils_reencrypt.c:1324,1
    - Dst: try_token
      Src: /src/cryptsetup/src/utils_reencrypt.c:1328,1
    - Dst: reencrypt_keyslot_unlocked_by_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1330,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/utils_reencrypt.c:1335,1
    - Dst: luks_init_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1337,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/utils_reencrypt.c:1337,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1341,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1343,1
    - Dst: reencrypt_keyslot_unlocked_by_context_new
      Src: /src/cryptsetup/src/utils_reencrypt.c:1345,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1349,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1350,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_reencrypt.c:1351,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - kcs
    - cd
    - msg
    - slot_to_check
    argTypes:
    - struct keyslot_contexts*
    - struct crypt_device*
    - char*
    - int
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 1319
        line_start: 1319
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kcs)
      pos:
        line_end: 1320
        line_start: 1320
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (slot_to_check >= 0)
      pos:
        line_end: 1321
        line_start: 1321
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1355
      start: 1312
    functionDepth: 2
    functionLinenumber: 1312
    functionLinenumberEnd: 1355
    functionName: reencrypt_unlock_keyslot
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - luks_init_keyslot_context
    - verify_passphrase
    - check_signal
    - set_tries_tty
    - assert
    - tools_passphrase_msg
    - crypt_keyslot_context_free
    - reencrypt_keyslot_unlocked_by_context_new
    - reencrypt_keyslot_unlocked_by_context
    - try_token
    - tools_keyslot_msg
    - crypt_activate_by_keyslot_context
    - reencrypt_keyslot_is_unlocked
    linkageType: ''
    returnType: int
    signature: "int reencrypt_unlock_keyslot(struct keyslot_contexts *kcs,\n\t\t\t
      \  struct crypt_device *cd,\n\t\t\t   const char *msg,\n\t\t\t   int slot_to_check)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1371,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1372,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1373,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/utils_reencrypt.c:1375,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/src/utils_reencrypt.c:1385,1
    - Dst: reencrypt_token_add_for_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1388,1
    - Dst: reencrypt_keyslot_for_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1391,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1394,1
    - Dst: reencrypt_keyslot_add_for_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1396,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - cd
    - kcs
    - token
    - keyslot
    argTypes:
    - struct crypt_device*
    - struct keyslot_contexts*
    - int
    - int
    assertStmts:
    - condition: (kcs)
      pos:
        line_end: 1370
        line_start: 1370
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (keyslot >= 0)
      pos:
        line_end: 1372
        line_start: 1372
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (token >= 0)
      pos:
        line_end: 1371
        line_start: 1371
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1398
      start: 1366
    functionDepth: 2
    functionLinenumber: 1366
    functionLinenumberEnd: 1398
    functionName: reencrypt_add_token_keyslot
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_keyslot_add_for_unlock
    - reencrypt_keyslot_for_unlock
    - assert
    - log_dbg
    - crypt_token_is_assigned
    - reencrypt_token_add_for_unlock
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: "int reencrypt_add_token_keyslot(struct crypt_device *cd,\n\t\tstruct
      keyslot_contexts *kcs,\n\t\tint token,\n\t\tint keyslot)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1410,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/src/utils_reencrypt.c:1412,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:1421,1
    - Dst: reencrypt_add_token_keyslot
      Src: /src/cryptsetup/src/utils_reencrypt.c:1425,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/utils_reencrypt.c:1427,1
    - Dst: reencrypt_add_token_keyslot
      Src: /src/cryptsetup/src/utils_reencrypt.c:1428,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 5
    argNames:
    - cd
    - kcs
    - token
    - keyslot
    - token_type
    argTypes:
    - struct crypt_device*
    - struct keyslot_contexts*
    - int
    - int
    - char*
    assertStmts:
    - condition: (token >= 0)
      pos:
        line_end: 1409
        line_start: 1409
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1437
      start: 1400
    functionDepth: 3
    functionLinenumber: 1400
    functionLinenumberEnd: 1437
    functionName: reencrypt_add_single_token_keyslots
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_max
    - crypt_token_status
    - assert
    - strcmp
    - reencrypt_add_token_keyslot
    linkageType: ''
    returnType: int
    signature: "int reencrypt_add_single_token_keyslots(struct crypt_device *cd,\n\t\tstruct
      keyslot_contexts *kcs,\n\t\tint token,\n\t\tint keyslot,\n\t\tconst char *token_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_add_single_token_keyslots
      Src: /src/cryptsetup/src/utils_reencrypt.c:1449,1
    - Dst: crypt_token_max
      Src: /src/cryptsetup/src/utils_reencrypt.c:1451,1
    - Dst: reencrypt_add_single_token_keyslots
      Src: /src/cryptsetup/src/utils_reencrypt.c:1452,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 5
    argNames:
    - cd
    - kcs
    - token
    - token_type
    - keyslot
    argTypes:
    - struct crypt_device*
    - struct keyslot_contexts*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1439
    functionDepth: 4
    functionLinenumber: 1439
    functionLinenumberEnd: 1461
    functionName: reencrypt_add_token_keyslots_for_unlock
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_add_single_token_keyslots
    - crypt_token_max
    linkageType: ''
    returnType: int
    signature: "int reencrypt_add_token_keyslots_for_unlock(struct crypt_device *cd,\n\t\t\t\t\t\t
      \  struct keyslot_contexts *kcs,\n\t\t\t\t\t\t   int token,\n\t\t\t\t\t\t   const
      char *token_type,\n\t\t\t\t\t\t   int keyslot)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/utils_reencrypt.c:1468,1
    - Dst: reencrypt_add_token_keyslots_for_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1478,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1478,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1479,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1480,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1487,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1487,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/utils_reencrypt.c:1494,1
    - Dst: reencrypt_keyslot_for_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1502,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1503,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1503,1
    - Dst: reencrypt_keyslot_add_for_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1504,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1506,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1519,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1519,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1526,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1528,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1528,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 4
    argNames:
    - cd
    - kcs
    - vk_change
    - only_token_keyslots
    argTypes:
    - struct crypt_device*
    - struct keyslot_contexts*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1463
    functionDepth: 5
    functionLinenumber: 1463
    functionLinenumberEnd: 1533
    functionName: reencrypt_add_keyslots_for_unlock
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - reencrypt_keyslot_add_for_unlock
    - crypt_keyslot_max
    - crypt_keyslot_status
    - ARG_STR
    - reencrypt_keyslot_for_unlock
    - ARG_SET
    - log_err
    - log_dbg
    - ARG_INT32
    - reencrypt_add_token_keyslots_for_unlock
    linkageType: ''
    returnType: int
    signature: "int reencrypt_add_keyslots_for_unlock(struct crypt_device *cd,\n\t\t\t\t\t
      \  struct keyslot_contexts *kcs,\n\t\t\t\t\t   bool vk_change,\n\t\t\t\t\t   bool
      only_token_keyslots)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1544,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1545,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1547,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1548,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1548,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1550,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/utils_reencrypt.c:1551,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/utils_reencrypt.c:1552,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1559,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1559,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt.c:1566,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1566,1
    - Dst: reencrypt_unlock_keyslot
      Src: /src/cryptsetup/src/utils_reencrypt.c:1568,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt.c:1579,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1579,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1580,1
    - Dst: reencrypt_unlock_keyslot
      Src: /src/cryptsetup/src/utils_reencrypt.c:1582,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1582,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 3
    argNames:
    - cd
    - kcs
    - vk_change
    argTypes:
    - struct crypt_device*
    - struct keyslot_contexts*
    - bool
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 1543
        line_start: 1543
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kcs)
      pos:
        line_end: 1544
        line_start: 1544
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1586
      start: 1535
    functionDepth: 3
    functionLinenumber: 1535
    functionLinenumberEnd: 1586
    functionName: reencrypt_unlock_keyslots
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - snprintf
    - crypt_keyslot_max
    - ARG_SET
    - assert
    - log_err
    - reencrypt_unlock_keyslot
    - ARG_INT32
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: "int reencrypt_unlock_keyslots(struct crypt_device *cd,\n\t\t\t\t     struct
      keyslot_contexts *kcs,\n\t\t\t\t     bool vk_change)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/src/utils_reencrypt.c:1590,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/src/utils_reencrypt.c:1593,1
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/src/utils_reencrypt.c:1596,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - cd
    - keyslot_old
    - keyslot_new
    argTypes:
    - struct crypt_device*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1601
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1601
    functionName: assign_tokens
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_token_assign_keyslot
    - crypt_token_is_assigned
    linkageType: ''
    returnType: int
    signature: int assign_tokens(struct crypt_device *cd, int keyslot_old, int keyslot_new)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1610,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1613,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - kcs
    argTypes:
    - struct keyslot_contexts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1603
    functionDepth: 1
    functionLinenumber: 1603
    functionLinenumberEnd: 1614
    functionName: reencrypt_keyslot_contexts_destroy
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_free
    linkageType: ''
    returnType: void
    signature: void reencrypt_keyslot_contexts_destroy(struct keyslot_contexts *kcs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - r
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1616
    functionDepth: 0
    functionLinenumber: 1616
    functionLinenumberEnd: 1619
    functionName: token_error_unavailable
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool token_error_unavailable(int r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1629,1
    - Dst: single_token
      Src: /src/cryptsetup/src/utils_reencrypt.c:1632,1
    - Dst: token_error_unavailable
      Src: /src/cryptsetup/src/utils_reencrypt.c:1633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - cd
    - token
    - kcs
    argTypes:
    - struct crypt_device*
    - int
    - struct keyslot_contexts*
    assertStmts:
    - condition: (kcs)
      pos:
        line_end: 1628
        line_start: 1628
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1640
      start: 1622
    functionDepth: 3
    functionLinenumber: 1622
    functionLinenumberEnd: 1640
    functionName: init_token_keyslot_context
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - single_token
    - token_error_unavailable
    - assert
    linkageType: ''
    returnType: int
    signature: "int init_token_keyslot_context(struct crypt_device *cd,\n\t\t\t\t
      \     int token,\n\t\t\t\t      struct keyslot_contexts *kcs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1648,1
    - Dst: init_token_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1651,1
    - Dst: token_error_unavailable
      Src: /src/cryptsetup/src/utils_reencrypt.c:1652,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - kcs
    argTypes:
    - struct crypt_device*
    - struct keyslot_contexts*
    assertStmts:
    - condition: (kcs)
      pos:
        line_end: 1647
        line_start: 1647
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1659
      start: 1642
    functionDepth: 4
    functionLinenumber: 1642
    functionLinenumberEnd: 1659
    functionName: reencrypt_unlock_keyslots_by_tokens
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - init_token_keyslot_context
    - token_error_unavailable
    - assert
    linkageType: ''
    returnType: int
    signature: "int reencrypt_unlock_keyslots_by_tokens(struct crypt_device *cd,\n\t\t\t\t\t
      \ struct keyslot_contexts *kcs)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1670,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1671,1
    - Dst: reencrypt_add_keyslots_for_unlock
      Src: /src/cryptsetup/src/utils_reencrypt.c:1692,1
    - Dst: reencrypt_unlock_keyslots_by_tokens
      Src: /src/cryptsetup/src/utils_reencrypt.c:1697,1
    - Dst: reencrypt_unlock_keyslots
      Src: /src/cryptsetup/src/utils_reencrypt.c:1709,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1715,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1716,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 6
    argNames:
    - cd
    - vk_generated
    - prefer_token
    - old_kc
    - new_kc
    - kcs
    argTypes:
    - struct crypt_device*
    - bool
    - bool
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - struct keyslot_contexts*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 1669
        line_start: 1669
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kcs)
      pos:
        line_end: 1670
        line_start: 1670
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kcs->ks[0].p_kc)
      pos:
        line_end: 1714
        line_start: 1714
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kcs->ks[0].id >= 0)
      pos:
        line_end: 1715
        line_start: 1715
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1722
      start: 1661
    functionDepth: 6
    functionLinenumber: 1661
    functionLinenumberEnd: 1722
    functionName: reencrypt_initialize_keyslot_contexts
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_unlock_keyslots
    - reencrypt_unlock_keyslots_by_tokens
    - reencrypt_add_keyslots_for_unlock
    - assert
    linkageType: ''
    returnType: int
    signature: "int reencrypt_initialize_keyslot_contexts(struct crypt_device *cd,\n\t\tbool
      vk_generated,\n\t\tbool prefer_token,\n\t\tstruct crypt_keyslot_context *old_kc,\n\t\tstruct
      crypt_keyslot_context *new_kc,\n\t\tstruct keyslot_contexts *kcs)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1729,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1730,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/utils_reencrypt.c:1730,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/utils_reencrypt.c:1730,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/utils_reencrypt.c:1732,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/utils_reencrypt.c:1733,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 1728
        line_start: 1728
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (isLUKS2(crypt_get_type(cd)))
      pos:
        line_end: 1729
        line_start: 1729
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1747
      start: 1724
    functionDepth: 1
    functionLinenumber: 1724
    functionLinenumberEnd: 1747
    functionName: reencrypt_active_keyslots_count
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_max
    - isLUKS2
    - assert
    - crypt_get_type
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: int reencrypt_active_keyslots_count(struct crypt_device *cd)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1758,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:1759,1
    - Dst: set_keyslot_params
      Src: /src/cryptsetup/src/utils_reencrypt.c:1775,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1781,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1784,1
    - Dst: crypt_keyslot_get_key_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:1794,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/utils_reencrypt.c:1798,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1802,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1807,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/src/utils_reencrypt.c:1811,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1814,1
    - Dst: assign_tokens
      Src: /src/cryptsetup/src/utils_reencrypt.c:1819,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1826,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_reencrypt.c:1829,1
    - Dst: assign_tokens
      Src: /src/cryptsetup/src/utils_reencrypt.c:1834,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 3
    argNames:
    - cd
    - prefer_token
    - kcs
    argTypes:
    - struct crypt_device*
    - bool
    - struct keyslot_contexts*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 1757
        line_start: 1757
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - condition: (kcs)
      pos:
        line_end: 1758
        line_start: 1758
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1841
      start: 1749
    functionDepth: 2
    functionLinenumber: 1749
    functionLinenumberEnd: 1841
    functionName: reencrypt_add_new_keyslots
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_volume_key_get_by_keyslot_context
    - crypt_keyslot_context_init_by_volume_key
    - assign_tokens
    - crypt_keyslot_get_key_size
    - assert
    - crypt_safe_free
    - set_keyslot_params
    - crypt_keyslot_add_by_keyslot_context
    - tools_keyslot_msg
    linkageType: ''
    returnType: int
    signature: "int reencrypt_add_new_keyslots(struct crypt_device *cd,\n\t\t\t\t
      \     bool prefer_token,\n\t\t\t\t      struct keyslot_contexts *kcs)"
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1846,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1846,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1846,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1859,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1860,1
    - Dst: imaxabs
      Src: /src/cryptsetup/src/utils_reencrypt.c:1861,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:1862,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt.c:1863,1
    - Dst: luks2_reencrypt_eligible
      Src: /src/cryptsetup/src/utils_reencrypt.c:1867,1
    - Dst: _set_reencryption_flags
      Src: /src/cryptsetup/src/utils_reencrypt.c:1870,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1873,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1874,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1875,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/src/utils_reencrypt.c:1875,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/utils_reencrypt.c:1875,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_reencrypt.c:1876,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1876,1
    - Dst: DEFAULT_CIPHER
      Src: /src/cryptsetup/src/utils_reencrypt.c:1876,1
    - Dst: DEFAULT_CIPHER
      Src: /src/cryptsetup/src/utils_reencrypt.c:1877,1
    - Dst: strncpy
      Src: /src/cryptsetup/src/utils_reencrypt.c:1881,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/utils_reencrypt.c:1881,1
    - Dst: strncpy
      Src: /src/cryptsetup/src/utils_reencrypt.c:1882,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/utils_reencrypt.c:1882,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/src/utils_reencrypt.c:1886,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1887,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1887,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:1892,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/utils_reencrypt.c:1892,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt.c:1892,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/utils_reencrypt.c:1892,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1897,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:1897,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:1898,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:1899,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:1902,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1903,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1904,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1905,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1907,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1907,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1912,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1913,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:1914,1
    - Dst: get_adjusted_key_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:1918,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1924,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1924,1
    - Dst: reencrypt_active_keyslots_count
      Src: /src/cryptsetup/src/utils_reencrypt.c:1930,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1936,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1942,1
    - Dst: tools_parse_vk_description
      Src: /src/cryptsetup/src/utils_reencrypt.c:1943,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1943,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/src/utils_reencrypt.c:1946,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1947,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1952,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/utils_reencrypt.c:1953,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1953,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/src/utils_reencrypt.c:1956,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1957,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:1963,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1966,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1966,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1975,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1976,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1977,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1977,1
    - Dst: tools_parse_vk_description
      Src: /src/cryptsetup/src/utils_reencrypt.c:1981,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:1981,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/src/utils_reencrypt.c:1985,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:1986,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1991,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1992,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1993,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1993,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:1997,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:1998,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:1998,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/utils_reencrypt.c:2002,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2002,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/src/utils_reencrypt.c:2006,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:2008,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:2015,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:2019,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/src/utils_reencrypt.c:2027,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2035,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2035,1
    - Dst: reencrypt_initialize_keyslot_contexts
      Src: /src/cryptsetup/src/utils_reencrypt.c:2041,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2046,1
    - Dst: tools_blkid_supported
      Src: /src/cryptsetup/src/utils_reencrypt.c:2046,1
    - Dst: reencrypt_hint_force_offline_reencrypt
      Src: /src/cryptsetup/src/utils_reencrypt.c:2047,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2052,1
    - Dst: reencrypt_add_new_keyslots
      Src: /src/cryptsetup/src/utils_reencrypt.c:2053,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2063,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2064,1
    - Dst: tools_blkid_supported
      Src: /src/cryptsetup/src/utils_reencrypt.c:2064,1
    - Dst: reencrypt_get_active_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:2065,1
    - Dst: tools_blkid_supported
      Src: /src/cryptsetup/src/utils_reencrypt.c:2070,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2071,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2072,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2072,1
    - Dst: reencrypt_check_active_device_sb_block_size
      Src: /src/cryptsetup/src/utils_reencrypt.c:2079,1
    - Dst: crypt_reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/src/utils_reencrypt.c:2084,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2085,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:2091,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:2092,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/src/utils_reencrypt.c:2093,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/src/utils_reencrypt.c:2096,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt.c:2097,1
    - Dst: reencrypt_keyslot_contexts_destroy
      Src: /src/cryptsetup/src/utils_reencrypt.c:2101,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:2102,1
    CyclomaticComplexity: 100
    EdgeCount: 100
    ICount: 184
    argCount: 2
    argNames:
    - cd
    - data_device
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2104
      start: 1843
    functionDepth: 7
    functionLinenumber: 1843
    functionLinenumberEnd: 2104
    functionName: reencrypt_luks2_init
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_get_active_name
    - reencrypt_keyslot_contexts_destroy
    - ARG_UINT32
    - imaxabs
    - luks2_reencrypt_eligible
    - free
    - reencrypt_active_keyslots_count
    - strncpy
    - crypt_get_volume_key_size
    - tools_blkid_supported
    - reencrypt_add_new_keyslots
    - crypt_keyslot_destroy
    - tools_parse_vk_description
    - log_dbg
    - crypt_parse_name_and_mode
    - strcmp
    - crypt_get_sector_size
    - crypt_reencrypt_init_by_keyslot_context
    - log_std
    - ARG_STR
    - crypt_reencrypt_status
    - crypt_safe_free
    - log_err
    - reencrypt_hint_force_offline_reencrypt
    - get_adjusted_key_size
    - crypt_is_cipher_null
    - tools_read_vk
    - crypt_activate_by_keyslot_context
    - _set_reencryption_flags
    - crypt_keyslot_context_init_by_vk_in_keyring
    - _
    - reencrypt_check_active_device_sb_block_size
    - crypt_get_cipher
    - crypt_keyslot_context_init_by_volume_key
    - ARG_SET
    - ARG_UINT64
    - crypt_get_cipher_mode
    - reencrypt_initialize_keyslot_contexts
    - crypt_keyslot_context_free
    - DEFAULT_CIPHER
    linkageType: ''
    returnType: int
    signature: int reencrypt_luks2_init(struct crypt_device *cd, const char *data_device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt.c:2111,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2112,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2113,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2114,1
    - Dst: tools_get_device_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:2115,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:2115,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2118,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2118,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_reencrypt.c:2119,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2119,1
    - Dst: set_int_handler
      Src: /src/cryptsetup/src/utils_reencrypt.c:2121,1
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/src/utils_reencrypt.c:2122,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt.c:2123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 2106
    functionDepth: 1
    functionLinenumber: 2106
    functionLinenumberEnd: 2125
    functionName: reencrypt_luks2_resume
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - set_int_handler
    - _
    - free
    - log_std
    - crypt_reencrypt_run
    - ARG_SET
    - tools_get_device_name
    - ARG_UINT32
    - crypt_get_device_name
    linkageType: ''
    returnType: int
    signature: int reencrypt_luks2_resume(struct crypt_device *cd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2132,1
    - Dst: tools_detect_signatures
      Src: /src/cryptsetup/src/utils_reencrypt.c:2135,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2135,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2138,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2138,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2142,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - device
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2147
      start: 2127
    functionDepth: 3
    functionLinenumber: 2127
    functionLinenumberEnd: 2147
    functionName: check_broken_luks_signature
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 0
    functionsReached:
    - tools_detect_signatures
    - log_err
    - _
    - ARG_SET
    linkageType: ''
    returnType: int
    signature: int check_broken_luks_signature(const char *device)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2158,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2158,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:2159,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2159,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2164,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt.c:2164,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2164,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2165,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2165,1
    - Dst: check_broken_luks_signature
      Src: /src/cryptsetup/src/utils_reencrypt.c:2166,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2172,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:2173,1
    - Dst: check_luks_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:2174,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2180,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2180,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2186,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2186,1
    - Dst: check_broken_luks_signature
      Src: /src/cryptsetup/src/utils_reencrypt.c:2191,1
    - Dst: crypt_get_default_type
      Src: /src/cryptsetup/src/utils_reencrypt.c:2197,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/src/utils_reencrypt.c:2199,1
    - Dst: reencrypt_is_header_detached
      Src: /src/cryptsetup/src/utils_reencrypt.c:2200,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2200,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2203,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2204,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2204,1
    - Dst: reencrypt_luks1
      Src: /src/cryptsetup/src/utils_reencrypt.c:2207,1
    - Dst: encrypt_luks2_init
      Src: /src/cryptsetup/src/utils_reencrypt.c:2209,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2210,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:2211,1
    - Dst: reencrypt_luks2_load
      Src: /src/cryptsetup/src/utils_reencrypt.c:2217,1
    - Dst: reencrypt_luks2_resume
      Src: /src/cryptsetup/src/utils_reencrypt.c:2223,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:2225,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 56
    argCount: 5
    argNames:
    - cd
    - type
    - dev_st
    - action_argc
    - action_argv
    argTypes:
    - struct crypt_device*
    - char*
    - enum device_status_info
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 2149
    functionDepth: 6
    functionLinenumber: 2149
    functionLinenumberEnd: 2227
    functionName: _encrypt
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 2
    functionsReached:
    - check_broken_luks_signature
    - check_luks_device
    - _
    - reencrypt_luks2_load
    - crypt_get_default_type
    - reencrypt_is_header_detached
    - ARG_STR
    - encrypt_luks2_init
    - isLUKS1
    - reencrypt_luks2_resume
    - ARG_SET
    - crypt_free
    - log_err
    - crypt_get_device_name
    - stat
    - uuid_or_device
    - reencrypt_luks1
    linkageType: ''
    returnType: int
    signature: int _encrypt(struct crypt_device *cd, const char *type, enum device_status_info
      dev_st, int action_argc, const char **action_argv)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt.c:2235,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2238,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2238,1
    - Dst: reencrypt_luks1
      Src: /src/cryptsetup/src/utils_reencrypt.c:2239,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2242,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt.c:2243,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2243,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2244,1
    - Dst: load_luks2_by_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:2245,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2245,1
    - Dst: load_luks
      Src: /src/cryptsetup/src/utils_reencrypt.c:2247,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:2247,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2254,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2254,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2255,1
    - Dst: reencrypt_luks2_load
      Src: /src/cryptsetup/src/utils_reencrypt.c:2263,1
    - Dst: luks2_reencrypt_eligible
      Src: /src/cryptsetup/src/utils_reencrypt.c:2266,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2268,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2269,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2269,1
    - Dst: decrypt_luks2_datashift_init
      Src: /src/cryptsetup/src/utils_reencrypt.c:2274,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2274,1
    - Dst: decrypt_luks2_init
      Src: /src/cryptsetup/src/utils_reencrypt.c:2276,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2278,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2281,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2281,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2282,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:2282,1
    - Dst: reencrypt_luks2_resume
      Src: /src/cryptsetup/src/utils_reencrypt.c:2286,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 37
    argCount: 3
    argNames:
    - cd
    - dev_st
    - data_device
    argTypes:
    - struct crypt_device**
    - enum device_status_info
    - char*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 2234
        line_start: 2234
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    constantsTouched: []
    func_position:
      end: 2288
      start: 2229
    functionDepth: 6
    functionLinenumber: 2229
    functionLinenumberEnd: 2288
    functionName: _decrypt
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 2
    functionsReached:
    - load_luks2_by_name
    - load_luks
    - _
    - reencrypt_luks2_load
    - luks2_reencrypt_eligible
    - ARG_STR
    - decrypt_luks2_init
    - reencrypt_luks2_resume
    - ARG_SET
    - assert
    - log_err
    - stat
    - decrypt_luks2_datashift_init
    - uuid_or_device
    - reencrypt_luks1
    linkageType: ''
    returnType: int
    signature: int _decrypt(struct crypt_device **cd, enum device_status_info dev_st,
      const char *data_device)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_luks1
      Src: /src/cryptsetup/src/utils_reencrypt.c:2295,1
    - Dst: reencrypt_luks2_load
      Src: /src/cryptsetup/src/utils_reencrypt.c:2297,1
    - Dst: reencrypt_luks2_init
      Src: /src/cryptsetup/src/utils_reencrypt.c:2300,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2301,1
    - Dst: reencrypt_luks2_resume
      Src: /src/cryptsetup/src/utils_reencrypt.c:2306,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - cd
    - dev_st
    - data_device
    argTypes:
    - struct crypt_device*
    - enum device_status_info
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2307
      start: 2290
    functionDepth: 8
    functionLinenumber: 2290
    functionLinenumberEnd: 2307
    functionName: _reencrypt
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 4
    functionsReached:
    - reencrypt_luks2_load
    - reencrypt_luks2_resume
    - ARG_SET
    - reencrypt_luks2_init
    - reencrypt_luks1
    linkageType: ''
    returnType: int
    signature: int _reencrypt(struct crypt_device *cd, enum device_status_info dev_st,
      const char *data_device)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: luksType
      Src: /src/cryptsetup/src/utils_reencrypt.c:2314,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2316,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2316,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2317,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2317,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2321,1
    - Dst: load_luks2_by_name
      Src: /src/cryptsetup/src/utils_reencrypt.c:2322,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2322,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2322,1
    - Dst: load_luks
      Src: /src/cryptsetup/src/utils_reencrypt.c:2324,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2324,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:2324,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/utils_reencrypt.c:2329,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2330,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2330,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:2331,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2331,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/utils_reencrypt.c:2335,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2336,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2336,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:2337,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2337,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/src/utils_reencrypt.c:2341,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2342,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2342,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:2343,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2343,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/src/utils_reencrypt.c:2347,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2348,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2348,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/utils_reencrypt.c:2349,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt.c:2349,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2353,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2354,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2354,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2359,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt.c:2361,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt.c:2361,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2366,1
    - Dst: _encrypt
      Src: /src/cryptsetup/src/utils_reencrypt.c:2367,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt.c:2368,1
    - Dst: _decrypt
      Src: /src/cryptsetup/src/utils_reencrypt.c:2369,1
    - Dst: _reencrypt
      Src: /src/cryptsetup/src/utils_reencrypt.c:2371,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt.c:2374,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 51
    argCount: 2
    argNames:
    - action_argc
    - action_argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2309
    functionDepth: 9
    functionLinenumber: 2309
    functionLinenumberEnd: 2376
    functionName: reencrypt
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt.c
    functionUses: 5
    functionsReached:
    - load_luks2_by_name
    - _
    - load_luks
    - ARG_STR
    - isLUKS1
    - ARG_SET
    - isLUKS2
    - _decrypt
    - log_err
    - crypt_free
    - luksType
    - uuid_or_device
    - _encrypt
    - _reencrypt
    linkageType: ''
    returnType: int
    signature: int reencrypt(int action_argc, const char **action_argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tools_args_free
      Src: /src/cryptsetup/src/integritysetup.c:24,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/integritysetup.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: tools_cleanup
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - ARRAY_SIZE
    - tools_args_free
    linkageType: ''
    returnType: void
    signature: void tools_cleanup(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:32,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/integritysetup.c:33,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:33,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:33,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:36,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:39,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/integritysetup.c:40,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:40,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:40,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/integritysetup.c:42,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:46,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:49,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/integritysetup.c:50,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:50,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:50,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/integritysetup.c:52,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/integritysetup.c:53,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:57,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - integrity_key
    - params
    argTypes:
    - char**
    - struct crypt_params_integrity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 64
    functionName: _read_keys
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - ARG_STR
    - ARG_SET
    - crypt_safe_free
    - ARG_UINT32
    - tools_read_vk
    linkageType: ''
    returnType: int
    signature: int _read_keys(char **integrity_key, struct crypt_params_integrity
      *params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:73,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:74,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:75,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:76,1
    - Dst: tools_get_device_name
      Src: /src/cryptsetup/src/integritysetup.c:77,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/integritysetup.c:77,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:80,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:81,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:81,1
    - Dst: uuid_generate
      Src: /src/cryptsetup/src/integritysetup.c:86,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/src/integritysetup.c:87,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/integritysetup.c:88,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/integritysetup.c:90,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/integritysetup.c:90,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/src/integritysetup.c:93,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:94,1
    - Dst: set_int_handler
      Src: /src/cryptsetup/src/integritysetup.c:99,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/src/integritysetup.c:100,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/src/integritysetup.c:102,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:103,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:103,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/integritysetup.c:104,1
    - Dst: free
      Src: /src/cryptsetup/src/integritysetup.c:107,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - cd
    - integrity_key
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 109
    functionName: _wipe_data_device
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - set_int_handler
    - _
    - snprintf
    - log_std
    - crypt_get_dir
    - uuid_unparse
    - crypt_deactivate
    - set_int_block
    - free
    - uuid_generate
    - ARG_SET
    - tools_get_device_name
    - ARG_UINT32
    - log_err
    - crypt_wipe
    - crypt_get_device_name
    - crypt_activate_by_volume_key
    linkageType: ''
    returnType: int
    signature: int _wipe_data_device(struct crypt_device *cd, const char *integrity_key)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:115,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:116,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:117,1
    - Dst: crypt_parse_hash_integrity_mode
      Src: /src/cryptsetup/src/integritysetup.c:124,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:124,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:126,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:126,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:131,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/integritysetup.c:132,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:133,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:135,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:135,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:135,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:136,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:136,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:136,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:138,1
    - Dst: crypt_parse_hash_integrity_mode
      Src: /src/cryptsetup/src/integritysetup.c:139,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:139,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:141,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:141,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:147,1
    - Dst: crypt_parse_hash_integrity_mode
      Src: /src/cryptsetup/src/integritysetup.c:148,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:148,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:150,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:150,1
    - Dst: _read_keys
      Src: /src/cryptsetup/src/integritysetup.c:158,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/integritysetup.c:162,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:162,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:166,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:167,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:167,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/integritysetup.c:168,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:168,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:170,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/integritysetup.c:172,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:172,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/integritysetup.c:178,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:178,1
    - Dst: free
      Src: /src/cryptsetup/src/integritysetup.c:179,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:184,1
    - Dst: tools_detect_signatures
      Src: /src/cryptsetup/src/integritysetup.c:185,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:185,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:188,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:188,1
    - Dst: tools_wipe_all_signatures
      Src: /src/cryptsetup/src/integritysetup.c:193,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:197,1
    - Dst: crypt_set_compatibility
      Src: /src/cryptsetup/src/integritysetup.c:198,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:200,1
    - Dst: crypt_set_compatibility
      Src: /src/cryptsetup/src/integritysetup.c:201,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:203,1
    - Dst: crypt_format_inline
      Src: /src/cryptsetup/src/integritysetup.c:204,1
    - Dst: crypt_format
      Src: /src/cryptsetup/src/integritysetup.c:207,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:212,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/src/integritysetup.c:212,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:213,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:213,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:214,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:214,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:216,1
    - Dst: _wipe_data_device
      Src: /src/cryptsetup/src/integritysetup.c:217,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/integritysetup.c:223,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/integritysetup.c:226,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 88
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 228
    functionName: action_format
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_set_compatibility
    - crypt_free
    - ARG_UINT32
    - crypt_parse_hash_integrity_mode
    - tools_wipe_all_signatures
    - crypt_init_data_device
    - free
    - crypt_format_inline
    - _wipe_data_device
    - crypt_format
    - log_std
    - ARG_STR
    - _read_keys
    - crypt_get_integrity_info
    - log_err
    - crypt_safe_free
    - tools_detect_signatures
    - _
    - ARG_SET
    - ARG_UINT64
    - asprintf
    linkageType: ''
    returnType: int
    signature: int action_format(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:241,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:242,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:243,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:244,1
    - Dst: tools_get_device_name
      Src: /src/cryptsetup/src/integritysetup.c:245,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/integritysetup.c:245,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:248,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/integritysetup.c:249,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:250,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/integritysetup.c:251,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/integritysetup.c:253,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/src/integritysetup.c:257,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/integritysetup.c:262,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/integritysetup.c:262,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/src/integritysetup.c:265,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/src/integritysetup.c:269,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:285,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:286,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/integritysetup.c:287,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:289,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:289,1
    - Dst: set_int_handler
      Src: /src/cryptsetup/src/integritysetup.c:293,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/src/integritysetup.c:294,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/integritysetup.c:297,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/integritysetup.c:299,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/src/integritysetup.c:301,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:303,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:303,1
    - Dst: free
      Src: /src/cryptsetup/src/integritysetup.c:307,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/integritysetup.c:308,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 310
    functionName: action_resize
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - set_int_block
    - crypt_free
    - ARG_UINT32
    - free
    - crypt_init_by_name_and_header
    - crypt_get_dir
    - tools_get_device_name
    - log_dbg
    - crypt_wipe
    - crypt_get_device_name
    - crypt_resize
    - log_std
    - log_err
    - set_int_handler
    - _
    - snprintf
    - ARG_SET
    - ARG_UINT64
    - crypt_activate_by_volume_key
    - crypt_get_active_device
    linkageType: ''
    returnType: int
    signature: int action_resize(void)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:317,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:317,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:317,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:318,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:318,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:318,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:319,1
    - Dst: crypt_parse_hash_integrity_mode
      Src: /src/cryptsetup/src/integritysetup.c:326,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:326,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:328,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:328,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:333,1
    - Dst: crypt_parse_hash_integrity_mode
      Src: /src/cryptsetup/src/integritysetup.c:334,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:334,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:336,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:336,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:343,1
    - Dst: crypt_parse_hash_integrity_mode
      Src: /src/cryptsetup/src/integritysetup.c:344,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:344,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:346,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:346,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:352,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:352,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:354,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:356,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:359,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:359,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:362,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:365,1
    - Dst: tools_check_newname
      Src: /src/cryptsetup/src/integritysetup.c:368,1
    - Dst: _read_keys
      Src: /src/cryptsetup/src/integritysetup.c:371,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/integritysetup.c:375,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/integritysetup.c:375,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/integritysetup.c:378,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:380,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:380,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:384,1
    - Dst: crypt_set_compatibility
      Src: /src/cryptsetup/src/integritysetup.c:385,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/src/integritysetup.c:387,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:388,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/integritysetup.c:390,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/integritysetup.c:393,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 395
    functionName: action_open
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - crypt_set_compatibility
    - crypt_load
    - _
    - ARG_STR
    - tools_check_newname
    - ARG_SET
    - _read_keys
    - ARG_UINT32
    - log_err
    - crypt_safe_free
    - crypt_free
    - crypt_parse_hash_integrity_mode
    - crypt_activate_by_volume_key
    - crypt_init_data_device
    linkageType: ''
    returnType: int
    signature: int action_open(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:404,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:406,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/src/integritysetup.c:409,1
    - Dst: crypt_deactivate_by_name
      Src: /src/cryptsetup/src/integritysetup.c:411,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:413,1
    - Dst: crypt_status
      Src: /src/cryptsetup/src/integritysetup.c:414,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:416,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:416,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/integritysetup.c:420,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 422
    functionName: action_close
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - crypt_deactivate_by_name
    - crypt_init_by_name
    - _
    - log_std
    - ARG_SET
    - crypt_free
    - crypt_status
    linkageType: ''
    returnType: int
    signature: int action_close(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/cryptsetup/src/integritysetup.c:435,1
    - Dst: crypt_status
      Src: /src/cryptsetup/src/integritysetup.c:438,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:445,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:447,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/integritysetup.c:447,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:453,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:456,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/integritysetup.c:456,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/integritysetup.c:459,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:463,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/integritysetup.c:463,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/src/integritysetup.c:465,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/src/integritysetup.c:470,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:474,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:475,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/integritysetup.c:476,1
    - Dst: crypt_get_metadata_device_name
      Src: /src/cryptsetup/src/integritysetup.c:477,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:478,1
    - Dst: crypt_loop_backing_file
      Src: /src/cryptsetup/src/integritysetup.c:479,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:480,1
    - Dst: free
      Src: /src/cryptsetup/src/integritysetup.c:481,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:484,1
    - Dst: crypt_loop_backing_file
      Src: /src/cryptsetup/src/integritysetup.c:485,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:486,1
    - Dst: free
      Src: /src/cryptsetup/src/integritysetup.c:487,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:490,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/src/integritysetup.c:490,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:491,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:492,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:493,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:496,1
    - Dst: crypt_get_active_integrity_failures
      Src: /src/cryptsetup/src/integritysetup.c:497,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:499,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:500,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:503,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:506,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:508,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:509,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:510,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:512,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:514,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:517,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/integritysetup.c:521,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 81
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 526
    functionName: action_status
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - free
    - crypt_init_by_name_and_header
    - crypt_get_dir
    - log_std
    - crypt_free
    - crypt_get_integrity_info
    - crypt_get_active_integrity_failures
    - crypt_get_metadata_device_name
    - crypt_get_active_device
    - crypt_loop_backing_file
    - crypt_status
    - crypt_get_device_name
    - crypt_get_type
    - crypt_get_sector_size
    - strchr
    linkageType: ''
    returnType: int
    signature: int action_status(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/integritysetup.c:534,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/integritysetup.c:537,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/src/integritysetup.c:539,1
    - Dst: log_err
      Src: /src/cryptsetup/src/integritysetup.c:541,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:541,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/integritysetup.c:543,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 545
    functionName: action_dump
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - crypt_dump
    - crypt_free
    - log_err
    - crypt_init
    linkageType: ''
    returnType: int
    signature: int action_dump(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tools_package_version
      Src: /src/cryptsetup/src/integritysetup.c:572,1
    - Dst: poptPrintHelp
      Src: /src/cryptsetup/src/integritysetup.c:573,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:574,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:574,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:577,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:577,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:577,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:578,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:578,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/integritysetup.c:581,1
    - Dst: log_std
      Src: /src/cryptsetup/src/integritysetup.c:583,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:583,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/integritysetup.c:587,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/integritysetup.c:588,1
    - Dst: exit
      Src: /src/cryptsetup/src/integritysetup.c:589,1
    - Dst: tools_package_version
      Src: /src/cryptsetup/src/integritysetup.c:591,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/integritysetup.c:592,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/integritysetup.c:593,1
    - Dst: exit
      Src: /src/cryptsetup/src/integritysetup.c:594,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:596,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 5
    argNames:
    - popt_context
    - reason
    - key
    - arg
    - data
    argTypes:
    - poptContext
    - enum poptCallbackReason
    - struct poptOption*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 597
    functionName: help
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 1
    functionsReached:
    - _
    - tools_cleanup
    - log_std
    - crypt_get_dir
    - exit
    - usage
    - tools_package_version
    - poptPrintHelp
    - poptFreeContext
    linkageType: ''
    returnType: void
    signature: "void help(poptContext popt_context,\n\t\t enum poptCallbackReason
      reason __attribute__((unused)),\n\t\t struct poptOption *key,\n\t\t const char
      *arg __attribute__((unused)),\n\t\t void *data __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/integritysetup.c:603,1
    - Dst: struct action_type*::handler
      Src: /src/cryptsetup/src/integritysetup.c:605,1
    - Dst: show_status
      Src: /src/cryptsetup/src/integritysetup.c:607,1
    - Dst: translate_errno
      Src: /src/cryptsetup/src/integritysetup.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - action
    argTypes:
    - struct action_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 609
    functionName: run_action
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - struct action_type*::handler
    - translate_errno
    - show_status
    linkageType: ''
    returnType: int
    signature: int run_action(struct action_type *action)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - arg_id
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 614
    functionName: needs_size_conversion
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool needs_size_conversion(unsigned int arg_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: tools_parse_arg_value
      Src: /src/cryptsetup/src/integritysetup.c:624,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/integritysetup.c:639,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/integritysetup.c:640,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:640,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:643,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:644,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - popt_context
    - reason
    - key
    - arg
    - data
    argTypes:
    - poptContext
    - enum poptCallbackReason
    - struct poptOption*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 647
    functionName: basic_options_cb
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 0
    functionsReached:
    - _
    - snprintf
    - usage
    - ARG_UINT32
    - tools_parse_arg_value
    - poptGetInvocationName
    linkageType: ''
    returnType: void
    signature: "void basic_options_cb(poptContext popt_context,\n\t\t enum poptCallbackReason
      reason __attribute__((unused)),\n\t\t struct poptOption *key,\n\t\t const char
      *arg,\n\t\t void *data __attribute__((unused)))"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: N_
      Src: /src/cryptsetup/src/integritysetup.c:654,1
    - Dst: N_
      Src: /src/cryptsetup/src/integritysetup.c:655,1
    - Dst: N_
      Src: /src/cryptsetup/src/integritysetup.c:656,1
    - Dst: ARG
      Src: /src/cryptsetup/src/integritysetup.c:661,1
    - Dst: N_
      Src: /src/cryptsetup/src/integritysetup.c:667,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/src/integritysetup.c:676,1
    - Dst: setlocale
      Src: /src/cryptsetup/src/integritysetup.c:678,1
    - Dst: bindtextdomain
      Src: /src/cryptsetup/src/integritysetup.c:679,1
    - Dst: textdomain
      Src: /src/cryptsetup/src/integritysetup.c:680,1
    - Dst: poptGetContext
      Src: /src/cryptsetup/src/integritysetup.c:682,1
    - Dst: exit
      Src: /src/cryptsetup/src/integritysetup.c:684,1
    - Dst: poptSetOtherOptionHelp
      Src: /src/cryptsetup/src/integritysetup.c:686,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:687,1
    - Dst: poptGetNextOpt
      Src: /src/cryptsetup/src/integritysetup.c:690,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:694,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/integritysetup.c:694,1
    - Dst: poptBadOption
      Src: /src/cryptsetup/src/integritysetup.c:695,1
    - Dst: poptGetArg
      Src: /src/cryptsetup/src/integritysetup.c:697,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:698,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:698,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:699,1
    - Dst: poptGetArgs
      Src: /src/cryptsetup/src/integritysetup.c:702,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/integritysetup.c:712,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/integritysetup.c:720,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/integritysetup.c:725,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:729,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:729,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:730,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/integritysetup.c:734,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:734,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:736,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:737,1
    - Dst: tools_check_args
      Src: /src/cryptsetup/src/integritysetup.c:740,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/integritysetup.c:740,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:742,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:742,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:743,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:743,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:744,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:746,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:746,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:747,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:747,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:748,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:749,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:749,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:750,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:750,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:751,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:753,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:753,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:754,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:754,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:755,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:756,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:756,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:757,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:757,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:758,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:760,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:760,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:761,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:761,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:762,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:764,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:765,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:766,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:766,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:767,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:768,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:768,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:769,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:771,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:772,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:772,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:773,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:773,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:774,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:776,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:776,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:777,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:777,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:778,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:778,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:779,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:779,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:780,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:782,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:782,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:783,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:783,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:784,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:786,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:786,1
    - Dst: usage
      Src: /src/cryptsetup/src/integritysetup.c:787,1
    - Dst: _
      Src: /src/cryptsetup/src/integritysetup.c:788,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/integritysetup.c:789,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/integritysetup.c:791,1
    - Dst: crypt_set_debug_level
      Src: /src/cryptsetup/src/integritysetup.c:792,1
    - Dst: dbg_version_and_cmd
      Src: /src/cryptsetup/src/integritysetup.c:793,1
    - Dst: run_action
      Src: /src/cryptsetup/src/integritysetup.c:796,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/integritysetup.c:797,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/integritysetup.c:798,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 72
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 800
    functionName: main
    functionSourceFile: /src/cryptsetup/src/integritysetup.c
    functionUses: 2
    functionsReached:
    - poptBadOption
    - poptGetContext
    - poptStrerror
    - dbg_version_and_cmd
    - N_
    - exit
    - poptGetNextOpt
    - crypt_set_log_callback
    - bindtextdomain
    - strcmp
    - ARG
    - tools_cleanup
    - usage
    - poptGetArgs
    - run_action
    - poptFreeContext
    - poptGetArg
    - tools_check_args
    - _
    - snprintf
    - setlocale
    - textdomain
    - crypt_set_debug_level
    - ARRAY_SIZE
    - ARG_SET
    - poptSetOtherOptionHelp
    - poptGetInvocationName
    linkageType: ''
    returnType: int
    signature: int main(int argc, const char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_password.c:21,1
    - Dst: pwquality_default_settings
      Src: /src/cryptsetup/src/utils_password.c:22,1
    - Dst: pwquality_read_config
      Src: /src/cryptsetup/src/utils_password.c:26,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:28,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:28,1
    - Dst: pwquality_strerror
      Src: /src/cryptsetup/src/utils_password.c:29,1
    - Dst: pwquality_free_settings
      Src: /src/cryptsetup/src/utils_password.c:30,1
    - Dst: pwquality_check
      Src: /src/cryptsetup/src/utils_password.c:34,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:36,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:36,1
    - Dst: pwquality_strerror
      Src: /src/cryptsetup/src/utils_password.c:37,1
    - Dst: pwquality_free_settings
      Src: /src/cryptsetup/src/utils_password.c:42,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - password
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 44
    functionName: tools_check_pwquality
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 0
    functionsReached:
    - pwquality_read_config
    - pwquality_free_settings
    - _
    - pwquality_strerror
    - pwquality_check
    - log_dbg
    - log_err
    - pwquality_default_settings
    linkageType: ''
    returnType: int
    signature: int tools_check_pwquality(const char *password)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: passwdqc_params_reset
      Src: /src/cryptsetup/src/utils_password.c:56,1
    - Dst: passwdqc_params_load
      Src: /src/cryptsetup/src/utils_password.c:58,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:59,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:59,1
    - Dst: passwdqc_check
      Src: /src/cryptsetup/src/utils_password.c:64,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:66,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:66,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_password.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - password
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 77
    functionName: tools_check_passwdqc
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 0
    functionsReached:
    - passwdqc_check
    - passwdqc_params_load
    - _
    - passwdqc_params_reset
    - free
    - log_err
    linkageType: ''
    returnType: int
    signature: int tools_check_passwdqc(const char *password)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tools_check_pwquality
      Src: /src/cryptsetup/src/utils_password.c:84,1
    - Dst: tools_check_passwdqc
      Src: /src/cryptsetup/src/utils_password.c:86,1
    - Dst: UNUSED
      Src: /src/cryptsetup/src/utils_password.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - password
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: tools_check_password
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 0
    functionsReached:
    - tools_check_passwdqc
    - tools_check_pwquality
    - UNUSED
    linkageType: ''
    returnType: int
    signature: int tools_check_password(const char *password)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/cryptsetup/src/utils_password.c:105,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 3
    argNames:
    - fd
    - pass
    - maxlen
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 118
    functionName: read_tty_eol
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t read_tty_eol(int fd, char *pass, size_t maxlen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_tty_eol
      Src: /src/cryptsetup/src/utils_password.c:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - fd
    - pass
    - maxlen
    - realsize
    argTypes:
    - int
    - char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 137
    functionName: untimed_read
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 0
    functionsReached:
    - read_tty_eol
    linkageType: ''
    returnType: int
    signature: int untimed_read(int fd, char *pass, size_t maxlen, size_t *realsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/cryptsetup/src/utils_password.c:145,1
    - Dst: FD_SET
      Src: /src/cryptsetup/src/utils_password.c:146,1
    - Dst: select
      Src: /src/cryptsetup/src/utils_password.c:150,1
    - Dst: untimed_read
      Src: /src/cryptsetup/src/utils_password.c:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - fd
    - pass
    - maxlen
    - realsize
    - timeout
    argTypes:
    - int
    - char*
    - size_t
    - size_t*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 154
    functionName: timed_read
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 1
    functionsReached:
    - FD_ZERO
    - FD_SET
    - untimed_read
    - select
    linkageType: ''
    returnType: int
    signature: int timed_read(int fd, char *pass, size_t maxlen, size_t *realsize,
      long timeout)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/src/utils_password.c:169,1
    - Dst: tcgetattr
      Src: /src/cryptsetup/src/utils_password.c:178,1
    - Dst: memcpy
      Src: /src/cryptsetup/src/utils_password.c:181,1
    - Dst: write
      Src: /src/cryptsetup/src/utils_password.c:184,1
    - Dst: strlen
      Src: /src/cryptsetup/src/utils_password.c:184,1
    - Dst: tcsetattr
      Src: /src/cryptsetup/src/utils_password.c:187,1
    - Dst: timed_read
      Src: /src/cryptsetup/src/utils_password.c:189,1
    - Dst: untimed_read
      Src: /src/cryptsetup/src/utils_password.c:191,1
    - Dst: tcsetattr
      Src: /src/cryptsetup/src/utils_password.c:192,1
    - Dst: write
      Src: /src/cryptsetup/src/utils_password.c:194,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:197,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:197,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_password.c:200,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 4
    argNames:
    - prompt
    - pass
    - maxlen
    - timeout
    argTypes:
    - char*
    - char*
    - size_t
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 202
    functionName: interactive_pass
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 0
    functionsReached:
    - _
    - memcpy
    - close
    - untimed_read
    - log_err
    - write
    - open
    - strlen
    - timed_read
    - tcsetattr
    - tcgetattr
    linkageType: ''
    returnType: int
    signature: "int interactive_pass(const char *prompt, char *pass, size_t maxlen,\n\t\tlong
      timeout)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_password.c:215,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/utils_password.c:217,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:219,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:219,1
    - Dst: interactive_pass
      Src: /src/cryptsetup/src/utils_password.c:223,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:224,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:224,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/utils_password.c:229,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:231,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:231,1
    - Dst: interactive_pass
      Src: /src/cryptsetup/src/utils_password.c:236,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:236,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:238,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:238,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/utils_password.c:242,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:243,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:243,1
    - Dst: strlen
      Src: /src/cryptsetup/src/utils_password.c:251,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_password.c:254,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_password.c:256,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 5
    argNames:
    - prompt
    - key
    - key_size
    - timeout
    - verify
    argTypes:
    - char*
    - char**
    - size_t*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 204
    functionDepth: 4
    functionLinenumber: 204
    functionLinenumberEnd: 258
    functionName: crypt_get_key_tty
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - _
    - interactive_pass
    - strncmp
    - crypt_safe_free
    - log_dbg
    - log_err
    - strlen
    linkageType: ''
    returnType: int
    signature: "int crypt_get_key_tty(const char *prompt,\n\t\t\t     char **key,
      size_t *key_size,\n\t\t\t     int timeout, int verify)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: tools_signals_blocked
      Src: /src/cryptsetup/src/utils_password.c:274,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_password.c:276,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/utils_password.c:278,1
    - Dst: isatty
      Src: /src/cryptsetup/src/utils_password.c:279,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:281,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:281,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/utils_password.c:284,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_password.c:285,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:285,1
    - Dst: crypt_loop_backing_file
      Src: /src/cryptsetup/src/utils_password.c:287,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/utils_password.c:287,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_password.c:288,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:288,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/utils_password.c:288,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_password.c:289,1
    - Dst: crypt_get_key_tty
      Src: /src/cryptsetup/src/utils_password.c:292,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_password.c:297,1
    - Dst: crypt_keyfile_device_read
      Src: /src/cryptsetup/src/utils_password.c:299,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_password.c:304,1
    - Dst: crypt_keyfile_device_read
      Src: /src/cryptsetup/src/utils_password.c:305,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_password.c:310,1
    - Dst: tools_check_password
      Src: /src/cryptsetup/src/utils_password.c:314,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 10
    argNames:
    - prompt
    - key
    - key_size
    - keyfile_offset
    - keyfile_size_max
    - key_file
    - timeout
    - verify
    - pwquality
    - cd
    argTypes:
    - char*
    - char**
    - size_t*
    - uint64_t
    - size_t
    - char*
    - int
    - int
    - int
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 264
    functionDepth: 5
    functionLinenumber: 264
    functionLinenumberEnd: 317
    functionName: tools_get_key
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 1
    functionsReached:
    - _
    - snprintf
    - free
    - set_int_block
    - tools_check_password
    - tools_signals_blocked
    - isatty
    - log_err
    - tools_is_stdin
    - crypt_get_key_tty
    - log_dbg
    - crypt_keyfile_device_read
    - crypt_get_device_name
    - crypt_loop_backing_file
    linkageType: ''
    returnType: int
    signature: "int tools_get_key(const char *prompt,\n\t\t  char **key, size_t *key_size,\n\t\t
      \ uint64_t keyfile_offset, size_t keyfile_size_max,\n\t\t  const char *key_file,\n\t\t
      \ int timeout, int verify, int pwquality,\n\t\t  struct crypt_device *cd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:322,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:322,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_password.c:324,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_password.c:324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - r
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 325
    functionName: tools_passphrase_msg
    functionSourceFile: /src/cryptsetup/src/utils_password.c
    functionUses: 3
    functionsReached:
    - log_err
    - _
    linkageType: ''
    returnType: void
    signature: void tools_passphrase_msg(int r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_luks.c:18,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_luks.c:21,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_luks.c:24,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 31
    functionName: luksType
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: char
    signature: char *luksType(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_luks.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: isLUKS1
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool isLUKS1(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_luks.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: isLUKS2
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 4
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool isLUKS2(const char *type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:47,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:49,1
    - Dst: isatty
      Src: /src/cryptsetup/src/utils_luks.c:53,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:54,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_luks.c:55,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:55,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - def
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 60
    functionName: verify_passphrase
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 3
    functionsReached:
    - log_err
    - _
    - ARG_SET
    - isatty
    linkageType: ''
    returnType: int
    signature: int verify_passphrase(int def)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:64,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:67,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:70,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:73,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:76,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:79,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:82,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:85,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:89,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:93,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:94,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:94,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:97,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:100,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:104,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 27
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 106
    functionName: set_activation_flags
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 1
    functionsReached:
    - ARG_SET
    linkageType: ''
    returnType: void
    signature: void set_activation_flags(uint32_t *flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_pbkdf_default
      Src: /src/cryptsetup/src/utils_luks.c:113,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_luks.c:118,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_luks.c:119,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_luks.c:120,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_luks.c:121,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_luks.c:122,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:125,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_luks.c:126,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/src/utils_luks.c:131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - cd
    - dev_type
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 132
    functionName: set_pbkdf_params
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 1
    functionsReached:
    - ARG_STR
    - crypt_set_pbkdf_type
    - ARG_SET
    - ARG_UINT32
    - crypt_get_pbkdf_default
    - strcmp
    linkageType: ''
    returnType: int
    signature: int set_pbkdf_params(struct crypt_device *cd, const char *dev_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:136,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/utils_luks.c:139,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_luks.c:139,1
    - Dst: isatty
      Src: /src/cryptsetup/src/utils_luks.c:139,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_luks.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - keyring
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: set_tries_tty
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 4
    functionsReached:
    - ARG_STR
    - ARG_SET
    - ARG_UINT32
    - isatty
    - tools_is_stdin
    linkageType: ''
    returnType: int
    signature: int set_tries_tty(bool keyring)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/src/utils_luks.c:146,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/utils_luks.c:146,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 5
    argNames:
    - cipher
    - cipher_mode
    - keysize_bits
    - default_size_bits
    - integrity_keysize
    argTypes:
    - char*
    - char*
    - uint32_t
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 154
    functionName: get_adjusted_key_size
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 1
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: "int get_adjusted_key_size(const char *cipher, const char *cipher_mode,
      uint32_t keysize_bits,\n\t\t\t  uint32_t default_size_bits, int integrity_keysize)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: tools_signals_blocked
      Src: /src/cryptsetup/src/utils_luks.c:168,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_luks.c:170,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/utils_luks.c:172,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_luks.c:174,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_luks.c:176,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_luks.c:177,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_luks.c:179,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:179,1
    - Dst: malloc
      Src: /src/cryptsetup/src/utils_luks.c:186,1
    - Dst: isatty
      Src: /src/cryptsetup/src/utils_luks.c:192,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_luks.c:193,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:193,1
    - Dst: read_buffer_intr
      Src: /src/cryptsetup/src/utils_luks.c:197,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_luks.c:200,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:200,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_luks.c:203,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_luks.c:205,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:205,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_luks.c:214,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_luks.c:216,1
    - Dst: memset
      Src: /src/cryptsetup/src/utils_luks.c:218,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_luks.c:219,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 4
    argNames:
    - file
    - json
    - json_size
    - batch_mode
    argTypes:
    - char*
    - char**
    - size_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 222
    functionName: tools_read_json_file
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 0
    functionsReached:
    - memset
    - _
    - free
    - log_std
    - close
    - check_signal
    - set_int_block
    - tools_signals_blocked
    - malloc
    - log_dbg
    - tools_is_stdin
    - log_err
    - isatty
    - open
    - read_buffer_intr
    linkageType: ''
    returnType: int
    signature: int tools_read_json_file(const char *file, char **json, size_t *json_size,
      bool batch_mode)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/src/utils_luks.c:230,1
    - Dst: tools_signals_blocked
      Src: /src/cryptsetup/src/utils_luks.c:233,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_luks.c:235,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/utils_luks.c:237,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_luks.c:239,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_luks.c:241,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_luks.c:242,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_luks.c:246,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:246,1
    - Dst: write_buffer_intr
      Src: /src/cryptsetup/src/utils_luks.c:252,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_luks.c:253,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_luks.c:255,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:255,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_luks.c:259,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:259,1
    - Dst: isatty
      Src: /src/cryptsetup/src/utils_luks.c:264,1
    - Dst: write_buffer_intr
      Src: /src/cryptsetup/src/utils_luks.c:265,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_luks.c:268,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_luks.c:270,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 42
    argCount: 2
    argNames:
    - file
    - json
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 272
    functionName: tools_write_json_file
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 0
    functionsReached:
    - _
    - close
    - check_signal
    - set_int_block
    - tools_signals_blocked
    - write_buffer_intr
    - log_dbg
    - tools_is_stdin
    - log_err
    - isatty
    - open
    - strlen
    linkageType: ''
    returnType: int
    signature: int tools_write_json_file(const char *file, const char *json)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_luks.c:283,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_luks.c:284,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:286,1
    - Dst: crypt_keyslot_context_init_by_keyring
      Src: /src/cryptsetup/src/utils_luks.c:287,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_luks.c:287,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_luks.c:288,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/utils_luks.c:288,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_luks.c:288,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/src/utils_luks.c:289,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_luks.c:289,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_luks.c:290,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_luks.c:291,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/utils_luks.c:293,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_luks.c:293,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_luks.c:294,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_luks.c:294,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_luks.c:295,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/src/utils_luks.c:298,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_luks.c:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 5
    argNames:
    - cd
    - msg
    - verify
    - pwquality
    - r_kc
    argTypes:
    - struct crypt_device*
    - char*
    - bool
    - bool
    - struct crypt_keyslot_context**
    assertStmts:
    - condition: (r_kc)
      pos:
        line_end: 283
        line_start: 283
        source_file: /src/cryptsetup/src/utils_luks.c
    - condition: (cd)
      pos:
        line_end: 282
        line_start: 282
        source_file: /src/cryptsetup/src/utils_luks.c
    constantsTouched: []
    func_position:
      end: 303
      start: 274
    functionDepth: 6
    functionLinenumber: 274
    functionLinenumberEnd: 303
    functionName: luks_init_keyslot_context
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 3
    functionsReached:
    - ARG_STR
    - ARG_SET
    - crypt_keyslot_context_init_by_keyring
    - assert
    - ARG_UINT32
    - tools_is_stdin
    - ARG_UINT64
    - tools_get_key
    - crypt_keyslot_context_init_by_passphrase
    - crypt_safe_free
    - crypt_keyslot_context_init_by_keyfile
    linkageType: ''
    returnType: int
    signature: "int luks_init_keyslot_context(struct crypt_device *cd,\n\t\t\t      const
      char *msg,\n\t\t\t      bool verify, bool pwquality,\n\t\t\t      struct crypt_keyslot_context
      **r_kc)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_luks.c:321,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_luks.c:322,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_luks.c:323,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/src/utils_luks.c:325,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_luks.c:330,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/src/utils_luks.c:332,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_luks.c:334,1
    - Dst: tools_token_error_msg
      Src: /src/cryptsetup/src/utils_luks.c:335,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_luks.c:342,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:342,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_luks.c:344,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_luks.c:344,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/utils_luks.c:351,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_luks.c:352,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/utils_luks.c:352,1
    - Dst: crypt_keyslot_context_set_pin
      Src: /src/cryptsetup/src/utils_luks.c:356,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_luks.c:357,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/utils_luks.c:362,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/src/utils_luks.c:365,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_luks.c:367,1
    - Dst: tools_token_error_msg
      Src: /src/cryptsetup/src/utils_luks.c:368,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_luks.c:369,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_luks.c:375,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 44
    argCount: 10
    argNames:
    - cd
    - keyslot
    - token_id
    - activated_name
    - token_type
    - activate_flags
    - tries
    - activation
    - retry_with_pin
    - r_kc
    argTypes:
    - struct crypt_device*
    - int
    - int
    - char*
    - char*
    - uint32_t
    - int
    - bool
    - bool
    - struct crypt_keyslot_context**
    assertStmts:
    - condition: (token_id >= 0 || token_id == CRYPT_ANY_TOKEN)
      pos:
        line_end: 321
        line_start: 321
        source_file: /src/cryptsetup/src/utils_luks.c
    - condition: (tries >= 1)
      pos:
        line_end: 320
        line_start: 320
        source_file: /src/cryptsetup/src/utils_luks.c
    - condition: (keyslot >= 0 || keyslot == CRYPT_ANY_SLOT)
      pos:
        line_end: 322
        line_start: 322
        source_file: /src/cryptsetup/src/utils_luks.c
    constantsTouched: []
    func_position:
      end: 378
      start: 305
    functionDepth: 6
    functionLinenumber: 305
    functionLinenumberEnd: 378
    functionName: luks_try_token_unlock
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 3
    functionsReached:
    - tools_token_error_msg
    - _
    - snprintf
    - verify_passphrase
    - crypt_keyslot_context_set_pin
    - check_signal
    - assert
    - ARG_UINT32
    - crypt_safe_free
    - tools_get_key
    - crypt_keyslot_context_free
    - crypt_resume_by_keyslot_context
    - crypt_activate_by_keyslot_context
    - tools_keyslot_msg
    - crypt_keyslot_context_init_by_token
    linkageType: ''
    returnType: int
    signature: "int luks_try_token_unlock(struct crypt_device *cd,\n\t\t\t  int keyslot,\n\t\t\t
      \ int token_id,\n\t\t\t  const char *activated_name,\n\t\t\t  const char *token_type,\n\t\t\t
      \ uint32_t activate_flags,\n\t\t\t  int tries,\n\t\t\t  bool activation,\n\t\t\t
      \ bool retry_with_pin,\n\t\t\t  struct crypt_keyslot_context **r_kc)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_luks.c:395,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_luks.c:396,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_luks.c:397,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/utils_luks.c:400,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/src/utils_luks.c:404,1
    - Dst: tools_parse_vk_description
      Src: /src/cryptsetup/src/utils_luks.c:411,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/src/utils_luks.c:414,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_luks.c:420,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/utils_luks.c:422,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/src/utils_luks.c:426,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_luks.c:433,1
    - Dst: tools_parse_vk_description
      Src: /src/cryptsetup/src/utils_luks.c:435,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/src/utils_luks.c:438,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_luks.c:441,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_luks.c:442,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_luks.c:445,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/utils_luks.c:446,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 56
    argCount: 9
    argNames:
    - cd
    - vk_file1
    - vk_file2
    - keysize1_bytes
    - keysize2_bytes
    - vk_in_keyring1
    - vk_in_keyring2
    - r_kc1
    - r_kc2
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - int
    - int
    - char*
    - char*
    - struct crypt_keyslot_context**
    - struct crypt_keyslot_context**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 394
        line_start: 394
        source_file: /src/cryptsetup/src/utils_luks.c
    - condition: (r_kc2)
      pos:
        line_end: 396
        line_start: 396
        source_file: /src/cryptsetup/src/utils_luks.c
    - condition: (r_kc1)
      pos:
        line_end: 395
        line_start: 395
        source_file: /src/cryptsetup/src/utils_luks.c
    constantsTouched: []
    func_position:
      end: 453
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 453
    functionName: luks_init_keyslot_contexts_by_volume_keys
    functionSourceFile: /src/cryptsetup/src/utils_luks.c
    functionUses: 2
    functionsReached:
    - crypt_keyslot_context_init_by_vk_in_keyring
    - free
    - crypt_keyslot_context_init_by_volume_key
    - assert
    - crypt_safe_free
    - tools_parse_vk_description
    - crypt_keyslot_context_free
    - tools_read_vk
    linkageType: ''
    returnType: int
    signature: "int luks_init_keyslot_contexts_by_volume_keys(struct crypt_device
      *cd,\n\t\t\t\t\t      const char *vk_file1,\n\t\t\t\t\t      const char *vk_file2,\n\t\t\t\t\t
      \     int keysize1_bytes,\n\t\t\t\t\t      int keysize2_bytes,\n\t\t\t\t\t      const
      char *vk_in_keyring1,\n\t\t\t\t\t      const char *vk_in_keyring2,\n\t\t\t\t\t
      \     struct crypt_keyslot_context **r_kc1,\n\t\t\t\t\t      struct crypt_keyslot_context
      **r_kc2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: ARG_SET
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_SET(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 20
    functionName: ARG_STR
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_STR(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: ARG_INT32
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_INT32(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: ARG_UINT32
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_UINT32(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: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: ARG_INT64
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_INT64(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: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: ARG_UINT64
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_UINT64(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: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: ARG_SET_TRUE
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_SET_TRUE(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: 54
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: ARG_SET_STR
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_SET_STR(X, Y)
  - 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: 61
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: ARG_SET_INT32
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_SET_INT32(X, Y)
  - 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: 68
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: ARG_SET_UINT32
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_SET_UINT32(X, Y)
  - 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: 75
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: ARG_SET_INT64
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_SET_INT64(X, Y)
  - 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: 82
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 82
    functionName: ARG_SET_UINT64
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_SET_UINT64(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: 89
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: ARG_INIT_ALIAS
    functionSourceFile: /src/cryptsetup/src/utils_arg_macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_INIT_ALIAS(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tools_args_free
      Src: /src/cryptsetup/src/cryptsetup.c:49,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/cryptsetup.c:49,1
    - Dst: FREE_AND_NULL
      Src: /src/cryptsetup/src/cryptsetup.c:51,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:54,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:56,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:58,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 63
    functionName: tools_cleanup
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 2
    functionsReached:
    - ARRAY_SIZE
    - FREE_AND_NULL
    - tools_args_free
    - free
    linkageType: ''
    returnType: void
    signature: void tools_cleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:68,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/cryptsetup.c:70,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - data_device
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: uuid_or_device_header
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - ARG_STR
    - uuid_or_device
    - ARG_SET
    linkageType: ''
    returnType: char
    signature: char *uuid_or_device_header(const char **data_device)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/cryptsetup.c:75,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/src/cryptsetup.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: isLUKS
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - isLUKS1
    - isLUKS2
    linkageType: ''
    returnType: bool
    signature: bool isLUKS(const char *type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:80,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:83,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:83,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/cryptsetup.c:86,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:87,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:87,1
    - Dst: crypt_keyslot_set_encryption
      Src: /src/cryptsetup/src/cryptsetup.c:91,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:91,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:91,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:93,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:93,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 96
    functionName: _set_keyslot_encryption_params
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_keyslot_set_encryption
    - ARG_STR
    - ARG_SET
    - isLUKS2
    - ARG_UINT32
    - log_err
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: int _set_keyslot_encryption_params(struct crypt_device *cd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:107,1
    - Dst: crypt_keyslot_context_init_by_keyring
      Src: /src/cryptsetup/src/cryptsetup.c:108,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:108,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:109,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/cryptsetup.c:109,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:109,1
    - Dst: crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/src/cryptsetup.c:110,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:110,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:111,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:112,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:114,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:114,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:115,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:115,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:116,1
    - Dst: crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:119,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - cd
    - msg
    - verify
    - pwquality
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - bool
    - bool
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 98
    functionDepth: 6
    functionLinenumber: 98
    functionLinenumberEnd: 124
    functionName: init_new_keyslot_context
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - ARG_STR
    - ARG_SET
    - crypt_keyslot_context_init_by_keyring
    - ARG_UINT32
    - ARG_UINT64
    - tools_is_stdin
    - crypt_keyslot_context_init_by_passphrase
    - tools_get_key
    - crypt_safe_free
    - crypt_keyslot_context_init_by_keyfile
    linkageType: ''
    returnType: int
    signature: "int init_new_keyslot_context(struct crypt_device *cd,\n\t\t\t\tconst
      char *msg,\n\t\t\t\tbool verify, bool pwquality,\n\t\t\t\tstruct crypt_keyslot_context
      **kc)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:133,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:133,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:134,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:135,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:136,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:142,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/src/cryptsetup.c:147,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:147,1
    - Dst: DEFAULT_CIPHER
      Src: /src/cryptsetup/src/cryptsetup.c:147,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:150,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:150,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:159,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:159,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:160,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:160,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:164,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:164,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:164,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:165,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:165,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:169,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:169,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:172,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/cryptsetup.c:172,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:172,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:174,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:174,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:175,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:175,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:179,1
    - Dst: tools_parse_vk_description
      Src: /src/cryptsetup/src/cryptsetup.c:180,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:180,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:185,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:188,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:188,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/cryptsetup.c:188,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:188,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:188,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:189,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:189,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:192,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/cryptsetup.c:194,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/src/cryptsetup.c:197,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/src/cryptsetup.c:202,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/src/cryptsetup.c:203,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/src/cryptsetup.c:205,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:206,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:208,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:208,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:213,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/cryptsetup.c:214,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:217,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:221,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:221,1
    - Dst: tools_detect_signatures
      Src: /src/cryptsetup/src/cryptsetup.c:223,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:223,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:226,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:226,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:231,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/cryptsetup.c:232,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:232,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:238,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:238,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:239,1
    - Dst: tools_check_newname
      Src: /src/cryptsetup/src/cryptsetup.c:248,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:251,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:252,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:253,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:254,1
    - Dst: crypt_format
      Src: /src/cryptsetup/src/cryptsetup.c:256,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:261,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:265,1
    - Dst: set_activation_flags
      Src: /src/cryptsetup/src/cryptsetup.c:268,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:270,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/src/cryptsetup.c:271,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:275,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/cryptsetup.c:277,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:277,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:283,1
    - Dst: crypt_activate_by_keyfile_device_offset
      Src: /src/cryptsetup/src/cryptsetup.c:284,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:285,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:286,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:288,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:288,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:289,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:290,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:291,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:291,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:292,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:296,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:300,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:301,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:302,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:303,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:304,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 124
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 126
    functionDepth: 6
    functionLinenumber: 126
    functionLinenumberEnd: 307
    functionName: action_open_plain
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_get_iv_offset
    - verify_passphrase
    - tools_check_newname
    - crypt_free
    - ARG_UINT32
    - tools_get_key
    - crypt_activate_by_keyfile_device_offset
    - free
    - crypt_init_by_name_and_header
    - set_activation_flags
    - crypt_get_volume_key_size
    - tools_is_stdin
    - tools_parse_vk_description
    - crypt_get_device_name
    - crypt_parse_name_and_mode
    - strcmp
    - crypt_get_sector_size
    - crypt_format
    - log_std
    - check_signal
    - ARG_STR
    - crypt_safe_free
    - log_err
    - crypt_get_data_offset
    - crypt_activate_by_keyslot_context
    - tools_detect_signatures
    - crypt_keyslot_context_init_by_vk_in_keyring
    - _
    - crypt_get_cipher
    - ARG_SET
    - ARG_UINT64
    - crypt_get_cipher_mode
    - crypt_activate_by_passphrase
    - crypt_keyslot_context_free
    - asprintf
    - crypt_init
    - DEFAULT_CIPHER
    - crypt_get_active_device
    linkageType: ''
    returnType: int
    signature: int action_open_plain(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:313,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:314,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:315,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:315,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:315,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:317,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:322,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:323,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:323,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:327,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/src/cryptsetup.c:329,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:334,1
    - Dst: crypt_format
      Src: /src/cryptsetup/src/cryptsetup.c:337,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:337,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:339,1
    - Dst: tools_check_newname
      Src: /src/cryptsetup/src/cryptsetup.c:344,1
    - Dst: set_activation_flags
      Src: /src/cryptsetup/src/cryptsetup.c:347,1
    - Dst: crypt_activate_by_keyfile_device_offset
      Src: /src/cryptsetup/src/cryptsetup.c:349,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/cryptsetup.c:350,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:350,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:350,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:350,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:351,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:353,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 356
    functionName: action_open_loopaes
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_init_by_name
    - _
    - check_signal
    - ARG_STR
    - tools_check_newname
    - ARG_SET
    - ARG_UINT64
    - ARG_UINT32
    - log_err
    - set_activation_flags
    - tools_is_stdin
    - crypt_free
    - crypt_init
    - crypt_activate_by_keyfile_device_offset
    - crypt_format
    linkageType: ''
    returnType: int
    signature: int action_open_loopaes(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/cryptsetup.c:362,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:365,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/src/cryptsetup.c:365,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:366,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:367,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:371,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:377,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:377,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:379,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:380,1
    - Dst: strtoull
      Src: /src/cryptsetup/src/cryptsetup.c:384,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:386,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:386,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:389,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:389,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:392,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:392,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:395,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/src/cryptsetup.c:400,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:403,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:406,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:409,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:412,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:415,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:415,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:424,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 50
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct crypt_params_tcrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 358
    functionDepth: 6
    functionLinenumber: 358
    functionLinenumberEnd: 432
    functionName: tcrypt_load
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - verify_passphrase
    - check_signal
    - set_tries_tty
    - ARG_SET
    - ARG_UINT32
    - log_err
    - crypt_safe_free
    - tools_get_key
    - strtoull
    - CONST_CAST
    - crypt_safe_memzero
    linkageType: ''
    returnType: int
    signature: int tcrypt_load(struct crypt_device *cd, struct crypt_params_tcrypt
      *params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CONST_CAST
      Src: /src/cryptsetup/src/cryptsetup.c:438,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:441,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:442,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:443,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:444,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:450,1
    - Dst: tools_check_newname
      Src: /src/cryptsetup/src/cryptsetup.c:451,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/cryptsetup.c:454,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:454,1
    - Dst: tcrypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:458,1
    - Dst: set_activation_flags
      Src: /src/cryptsetup/src/cryptsetup.c:462,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:465,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:467,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:468,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/src/cryptsetup.c:468,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/src/cryptsetup.c:469,1
    - Dst: action_open_bitlk
      Src: /src/cryptsetup/src/cryptsetup.c:473,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:483,1
    - Dst: tools_check_newname
      Src: /src/cryptsetup/src/cryptsetup.c:484,1
    - Dst: out
      Src: /src/cryptsetup/src/cryptsetup.c:485,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:487,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:490,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:492,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:492,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:500,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:500,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:504,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/cryptsetup.c:506,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:506,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:509,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/cryptsetup.c:516,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:519,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:519,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:519,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:520,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:520,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:524,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:527,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 434
    functionDepth: 7
    functionLinenumber: 434
    functionLinenumberEnd: 530
    functionName: action_open_tcrypt
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - tcrypt_load
    - action_open_bitlk
    - crypt_load
    - out
    - verify_passphrase
    - tools_check_newname
    - crypt_free
    - ARG_UINT32
    - CONST_CAST
    - crypt_init_data_device
    - set_activation_flags
    - crypt_safe_memzero
    - check_signal
    - ARG_STR
    - set_tries_tty
    - crypt_safe_free
    - log_err
    - tools_read_vk
    - _
    - ARG_SET
    - ARG_UINT64
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_init
    linkageType: ''
    returnType: int
    signature: int action_open_tcrypt(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:545,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:545,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:546,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:552,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/cryptsetup.c:553,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/src/cryptsetup.c:557,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:561,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:561,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:562,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:562,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:563,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/cryptsetup.c:563,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:564,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/src/cryptsetup.c:564,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:565,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:566,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/src/cryptsetup.c:567,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:568,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:570,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 572
    functionName: tcryptDump_with_volume_key
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_safe_alloc
    - _
    - crypt_volume_key_get
    - log_std
    - crypt_get_cipher
    - ARG_SET
    - crypt_get_cipher_mode
    - crypt_log_hex
    - crypt_get_volume_key_size
    - crypt_safe_free
    - crypt_get_device_name
    - crypt_get_data_offset
    linkageType: ''
    returnType: int
    signature: int tcryptDump_with_volume_key(struct crypt_device *cd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CONST_CAST
      Src: /src/cryptsetup/src/cryptsetup.c:578,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:581,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:582,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:583,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:584,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/cryptsetup.c:587,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:587,1
    - Dst: tcrypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:591,1
    - Dst: out
      Src: /src/cryptsetup/src/cryptsetup.c:593,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:595,1
    - Dst: tcryptDump_with_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:596,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/src/cryptsetup.c:598,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:600,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:601,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/src/cryptsetup.c:601,1
    - Dst: bitlkDump_with_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:605,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:612,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:612,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:613,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:619,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/cryptsetup.c:620,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/src/cryptsetup.c:624,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:627,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:628,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:628,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:628,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:629,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/src/cryptsetup.c:633,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:637,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:638,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:641,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:643,1
    - Dst: tools_write_mk
      Src: /src/cryptsetup/src/cryptsetup.c:644,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:644,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:649,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:649,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:650,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:650,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:651,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/cryptsetup.c:651,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:652,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/src/cryptsetup.c:652,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:653,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:654,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:655,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:655,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:658,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/src/cryptsetup.c:659,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:660,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:662,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:663,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:672,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:675,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 574
    functionDepth: 7
    functionLinenumber: 574
    functionLinenumberEnd: 679
    functionName: action_tcryptDump
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - tcrypt_load
    - yesDialog
    - crypt_safe_alloc
    - crypt_load
    - crypt_free
    - ARG_UINT32
    - crypt_init
    - tools_get_key
    - CONST_CAST
    - crypt_init_data_device
    - tools_write_mk
    - bitlkDump_with_volume_key
    - crypt_log_hex
    - crypt_get_volume_key_size
    - tools_passphrase_msg
    - crypt_get_device_name
    - tools_keyslot_msg
    - tcryptDump_with_volume_key
    - crypt_volume_key_get
    - log_std
    - check_signal
    - ARG_STR
    - crypt_safe_free
    - crypt_get_uuid
    - _
    - crypt_get_cipher
    - crypt_dump
    - ARG_SET
    - ARG_UINT64
    - crypt_get_cipher_mode
    - out
    linkageType: ''
    returnType: int
    signature: int action_tcryptDump(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:698,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:698,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:699,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:705,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/cryptsetup.c:706,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:710,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:711,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:711,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:712,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:712,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/src/cryptsetup.c:716,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:717,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:718,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:722,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:724,1
    - Dst: tools_write_mk
      Src: /src/cryptsetup/src/cryptsetup.c:725,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:725,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/src/cryptsetup.c:730,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:734,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/src/cryptsetup.c:735,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:736,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:738,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:739,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 690
    functionDepth: 6
    functionLinenumber: 690
    functionLinenumberEnd: 741
    functionName: fvault2Dump_with_volume_key
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_safe_alloc
    - _
    - tools_write_mk
    - crypt_volume_key_get
    - log_std
    - check_signal
    - ARG_STR
    - crypt_dump
    - ARG_SET
    - ARG_UINT64
    - ARG_UINT32
    - crypt_get_volume_key_size
    - crypt_log_hex
    - crypt_safe_free
    - tools_get_key
    - tools_passphrase_msg
    - tools_keyslot_msg
    linkageType: ''
    returnType: int
    signature: int fvault2Dump_with_volume_key(struct crypt_device *cd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:748,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:752,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:754,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:754,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:758,1
    - Dst: fvault2Dump_with_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:759,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/src/cryptsetup.c:761,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:763,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 743
    functionDepth: 7
    functionLinenumber: 743
    functionLinenumberEnd: 765
    functionName: action_fvault2Dump
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - crypt_dump
    - ARG_SET
    - crypt_free
    - log_err
    - fvault2Dump_with_volume_key
    - crypt_init
    linkageType: ''
    returnType: int
    signature: int action_fvault2Dump(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:777,1
    - Dst: tools_check_newname
      Src: /src/cryptsetup/src/cryptsetup.c:778,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:781,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:784,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:786,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:786,1
    - Dst: set_activation_flags
      Src: /src/cryptsetup/src/cryptsetup.c:789,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:791,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:792,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:793,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:794,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:794,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:798,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/cryptsetup.c:800,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:800,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:803,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/cryptsetup.c:805,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:807,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:808,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:808,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:809,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:809,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:810,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:814,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:816,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:817,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:818,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:823,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:824,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:825,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 767
    functionDepth: 6
    functionLinenumber: 767
    functionLinenumberEnd: 827
    functionName: action_open_fvault2
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - verify_passphrase
    - tools_check_newname
    - crypt_free
    - ARG_UINT32
    - tools_get_key
    - set_activation_flags
    - crypt_get_volume_key_size
    - tools_passphrase_msg
    - check_signal
    - ARG_STR
    - set_tries_tty
    - crypt_safe_free
    - log_err
    - tools_read_vk
    - _
    - ARG_SET
    - ARG_UINT64
    - crypt_activate_by_passphrase
    - crypt_activate_by_volume_key
    - crypt_init
    linkageType: ''
    returnType: int
    signature: int action_open_fvault2(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:836,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:838,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/cryptsetup.c:841,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:841,1
    - Dst: crypt_deactivate_by_name
      Src: /src/cryptsetup/src/cryptsetup.c:843,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:845,1
    - Dst: crypt_status
      Src: /src/cryptsetup/src/cryptsetup.c:846,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:848,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:848,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:852,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 854
    functionName: action_close
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_deactivate_by_name
    - _
    - crypt_init_by_name_and_header
    - log_std
    - ARG_STR
    - ARG_SET
    - crypt_free
    - crypt_status
    linkageType: ''
    returnType: int
    signature: int action_close(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/cryptsetup.c:864,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:864,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/src/cryptsetup.c:869,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:873,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:874,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:875,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:876,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:878,1
    - Dst: crypt_token_set_external_path
      Src: /src/cryptsetup/src/cryptsetup.c:879,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:879,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:881,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:881,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:882,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:888,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:890,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:890,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/cryptsetup.c:895,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:895,1
    - Dst: luks_try_token_unlock
      Src: /src/cryptsetup/src/cryptsetup.c:897,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:897,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:898,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:899,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:902,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:902,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:902,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:905,1
    - Dst: luks_init_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:908,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:908,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:912,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:912,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:915,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:916,1
    - Dst: crypt_resize
      Src: /src/cryptsetup/src/cryptsetup.c:922,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:924,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:925,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 856
    functionDepth: 7
    functionLinenumber: 856
    functionLinenumberEnd: 927
    functionName: action_resize
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - luks_init_keyslot_context
    - verify_passphrase
    - crypt_free
    - crypt_init_by_name_and_header
    - isLUKS2
    - tools_passphrase_msg
    - crypt_resize
    - luks_try_token_unlock
    - tools_keyslot_msg
    - ARG_STR
    - log_err
    - crypt_token_set_external_path
    - crypt_activate_by_keyslot_context
    - _
    - ARG_SET
    - ARG_UINT64
    - crypt_keyslot_context_free
    - ARG_INT32
    - crypt_get_type
    - crypt_get_active_device
    linkageType: ''
    returnType: int
    signature: int action_resize(void)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/cryptsetup/src/cryptsetup.c:941,1
    - Dst: crypt_status
      Src: /src/cryptsetup/src/cryptsetup.c:944,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:951,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:953,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/cryptsetup.c:953,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:959,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:962,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/cryptsetup.c:962,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/cryptsetup.c:965,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:965,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:969,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:969,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:972,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/src/cryptsetup.c:975,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:977,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/src/cryptsetup.c:979,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/src/cryptsetup.c:983,1
    - Dst: crypt_get_hw_encryption_type
      Src: /src/cryptsetup/src/cryptsetup.c:987,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:994,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:994,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/cryptsetup.c:994,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:995,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:995,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:996,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:998,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:999,1
    - Dst: crypt_get_hw_encryption_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:999,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1001,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1002,1
    - Dst: crypt_get_hw_encryption_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:1002,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1003,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:1003,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/cryptsetup.c:1003,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1004,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:1004,1
    - Dst: crypt_get_hw_encryption_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:1004,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1005,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1009,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1011,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1013,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:1015,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1016,1
    - Dst: crypt_loop_backing_file
      Src: /src/cryptsetup/src/cryptsetup.c:1017,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1018,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:1019,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1021,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/src/cryptsetup.c:1021,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1022,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1023,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1025,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1026,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1035,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:1044,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 87
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 1048
    functionName: action_status
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_free
    - free
    - crypt_init_by_name_and_header
    - crypt_get_dir
    - strchr
    - crypt_get_volume_key_size
    - crypt_status
    - crypt_get_device_name
    - crypt_get_sector_size
    - log_std
    - ARG_STR
    - crypt_reencrypt_status
    - crypt_get_integrity_info
    - crypt_loop_backing_file
    - crypt_get_hw_encryption_key_size
    - crypt_get_hw_encryption_type
    - crypt_get_cipher
    - crypt_get_cipher_mode
    - crypt_get_type
    - crypt_get_active_device
    linkageType: ''
    returnType: int
    signature: int action_status(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:1055,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1057,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1057,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/cryptsetup.c:1059,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - time_ms
    - usrptr
    argTypes:
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1050
    functionDepth: 1
    functionLinenumber: 1050
    functionLinenumberEnd: 1063
    functionName: benchmark_callback
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - check_signal
    - log_err
    - _
    - log_dbg
    linkageType: ''
    returnType: int
    signature: int benchmark_callback(uint32_t time_ms, void *usrptr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:1068,1
    - Dst: crypt_benchmark_pbkdf
      Src: /src/cryptsetup/src/cryptsetup.c:1075,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1078,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1078,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1080,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1080,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1085,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1086,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1087,1
    - Dst: crypt_benchmark_pbkdf
      Src: /src/cryptsetup/src/cryptsetup.c:1090,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1094,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1094,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1096,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1096,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - kdf
    - hash
    - key_size
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1065
    functionDepth: 1
    functionLinenumber: 1065
    functionLinenumberEnd: 1104
    functionName: action_benchmark_kdf
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - log_std
    - ARG_UINT32
    - strcmp
    - crypt_benchmark_pbkdf
    linkageType: ''
    returnType: int
    signature: int action_benchmark_kdf(const char *kdf, const char *hash, size_t
      key_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_benchmark
      Src: /src/cryptsetup/src/cryptsetup.c:1113,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1120,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - cipher
    - cipher_mode
    - volume_key_size
    - encryption_mbs
    - decryption_mbs
    argTypes:
    - char*
    - char*
    - size_t
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1106
    functionDepth: 1
    functionLinenumber: 1106
    functionLinenumberEnd: 1127
    functionName: benchmark_cipher_loop
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - log_err
    - crypt_benchmark
    - _
    linkageType: ''
    returnType: int
    signature: "int benchmark_cipher_loop(const char *cipher, const char *cipher_mode,\n\t\t\t\t
      size_t volume_key_size,\n\t\t\t\t double *encryption_mbs, double *decryption_mbs)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1165,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1170,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1170,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1171,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1172,1
    - Dst: action_benchmark_kdf
      Src: /src/cryptsetup/src/cryptsetup.c:1174,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1174,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1175,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/src/cryptsetup.c:1176,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1176,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1178,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1178,1
    - Dst: strchr
      Src: /src/cryptsetup/src/cryptsetup.c:1181,1
    - Dst: benchmark_cipher_loop
      Src: /src/cryptsetup/src/cryptsetup.c:1184,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/cryptsetup.c:1186,1
    - Dst: strlen
      Src: /src/cryptsetup/src/cryptsetup.c:1189,1
    - Dst: strlen
      Src: /src/cryptsetup/src/cryptsetup.c:1190,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1195,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1195,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1197,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1200,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1203,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1203,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1203,1
    - Dst: action_benchmark_kdf
      Src: /src/cryptsetup/src/cryptsetup.c:1206,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:1207,1
    - Dst: benchmark_cipher_loop
      Src: /src/cryptsetup/src/cryptsetup.c:1213,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:1215,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1222,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1222,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/cryptsetup.c:1224,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1229,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1232,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1233,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1233,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1240,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1240,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1242,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1242,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1129
    functionDepth: 2
    functionLinenumber: 1129
    functionLinenumberEnd: 1246
    functionName: action_benchmark
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - benchmark_cipher_loop
    - _
    - snprintf
    - log_std
    - check_signal
    - ARG_STR
    - action_benchmark_kdf
    - ARG_SET
    - ARG_UINT32
    - log_err
    - strncmp
    - crypt_parse_name_and_mode
    - strlen
    - strchr
    linkageType: ''
    returnType: int
    signature: int action_benchmark(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1257,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:1258,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1258,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1261,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:1264,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1264,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:1265,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1266,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1266,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1266,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1267,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1271,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1272,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1272,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:1273,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1277,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1277,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:1279,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:1284,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1248
    functionDepth: 6
    functionLinenumber: 1248
    functionLinenumberEnd: 1286
    functionName: reencrypt_metadata_repair
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - _
    - verify_passphrase
    - ARG_STR
    - ARG_SET
    - ARG_UINT64
    - ARG_UINT32
    - crypt_safe_free
    - tools_get_key
    - crypt_activate_by_passphrase
    - crypt_reencrypt_init_by_passphrase
    - tools_passphrase_msg
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int reencrypt_metadata_repair(struct crypt_device *cd)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/src/cryptsetup.c:1296,1
    - Dst: reencrypt_metadata_repair
      Src: /src/cryptsetup/src/cryptsetup.c:1299,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1307,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:1308,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1308,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1309,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1317,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1319,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:1321,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:1321,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1322,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1322,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1322,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1323,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1327,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1327,1
    - Dst: crypt_reencrypt_init_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1337,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1338,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1338,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:1343,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1288
    functionDepth: 7
    functionLinenumber: 1288
    functionLinenumberEnd: 1346
    functionName: luks2_reencrypt_repair
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - _
    - verify_passphrase
    - ARG_STR
    - crypt_reencrypt_status
    - ARG_SET
    - ARG_UINT64
    - ARG_UINT32
    - crypt_safe_free
    - tools_get_key
    - crypt_activate_by_passphrase
    - crypt_reencrypt_init_by_passphrase
    - reencrypt_metadata_repair
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int luks2_reencrypt_repair(struct crypt_device *cd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:1354,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/cryptsetup.c:1356,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/src/cryptsetup.c:1359,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:1360,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:1360,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/src/cryptsetup.c:1361,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/cryptsetup.c:1362,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:1362,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/cryptsetup.c:1367,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1367,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1371,1
    - Dst: tools_detect_signatures
      Src: /src/cryptsetup/src/cryptsetup.c:1372,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1372,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1375,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1375,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1380,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:1381,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1381,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1382,1
    - Dst: crypt_repair
      Src: /src/cryptsetup/src/cryptsetup.c:1385,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:1385,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/cryptsetup.c:1388,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:1388,1
    - Dst: luks2_reencrypt_repair
      Src: /src/cryptsetup/src/cryptsetup.c:1389,1
    - Dst: luks_check_keyslots
      Src: /src/cryptsetup/src/cryptsetup.c:1393,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:1395,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1348
    functionDepth: 8
    functionLinenumber: 1348
    functionLinenumberEnd: 1397
    functionName: action_luksRepair
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_load
    - log_verbose
    - _
    - luks2_reencrypt_repair
    - crypt_repair
    - ARG_SET
    - isLUKS2
    - crypt_free
    - crypt_set_log_callback
    - tools_detect_signatures
    - log_err
    - luksType
    - uuid_or_device_header
    - luks_check_keyslots
    - crypt_get_type
    - crypt_init_data_device
    linkageType: ''
    returnType: int
    signature: int action_luksRepair(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1406,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1407,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1408,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1409,1
    - Dst: tools_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:1410,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:1410,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1413,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:1414,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1414,1
    - Dst: uuid_generate
      Src: /src/cryptsetup/src/cryptsetup.c:1419,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/src/cryptsetup.c:1420,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/cryptsetup.c:1421,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/cryptsetup.c:1423,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/cryptsetup.c:1423,1
    - Dst: crypt_activate_by_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:1426,1
    - Dst: set_int_handler
      Src: /src/cryptsetup/src/cryptsetup.c:1432,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/src/cryptsetup.c:1433,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/src/cryptsetup.c:1435,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1436,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1436,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/cryptsetup.c:1437,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:1440,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1399
    functionDepth: 1
    functionLinenumber: 1399
    functionLinenumberEnd: 1442
    functionName: _wipe_data_device
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 1
    functionsReached:
    - set_int_handler
    - _
    - snprintf
    - log_std
    - crypt_get_dir
    - uuid_unparse
    - crypt_deactivate
    - set_int_block
    - free
    - uuid_generate
    - ARG_SET
    - tools_get_device_name
    - ARG_UINT32
    - log_err
    - crypt_wipe
    - crypt_get_device_name
    - crypt_activate_by_volume_key
    linkageType: ''
    returnType: int
    signature: int _wipe_data_device(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:1446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - expected
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1444
    functionDepth: 0
    functionLinenumber: 1444
    functionLinenumberEnd: 1447
    functionName: strcmp_or_null
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int strcmp_or_null(const char *str, const char *expected)
  - BBCount: 62
    BranchProfiles: []
    Callsites:
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1460,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1461,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1462,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1467,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1468,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1469,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:1478,1
    - Dst: crypt_get_default_type
      Src: /src/cryptsetup/src/cryptsetup.c:1480,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/src/cryptsetup.c:1482,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1483,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1483,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1483,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1484,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1484,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/src/cryptsetup.c:1488,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1491,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1492,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1492,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1496,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1497,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1497,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1501,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1501,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1502,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1502,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1506,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1506,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1507,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1507,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1511,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1512,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1512,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1519,1
    - Dst: stat
      Src: /src/cryptsetup/src/cryptsetup.c:1519,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1519,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1520,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:1521,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1521,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1522,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/cryptsetup.c:1525,1
    - Dst: open
      Src: /src/cryptsetup/src/cryptsetup.c:1527,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1527,1
    - Dst: posix_fallocate
      Src: /src/cryptsetup/src/cryptsetup.c:1528,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1529,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1529,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1529,1
    - Dst: close
      Src: /src/cryptsetup/src/cryptsetup.c:1535,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1540,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/src/cryptsetup.c:1542,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1542,1
    - Dst: DEFAULT_CIPHER
      Src: /src/cryptsetup/src/cryptsetup.c:1542,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1545,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1545,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1549,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1550,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1551,1
    - Dst: crypt_parse_integrity_mode
      Src: /src/cryptsetup/src/cryptsetup.c:1552,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1552,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1555,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1555,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1556,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1557,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1557,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/src/cryptsetup.c:1570,1
    - Dst: ARG_SET_TRUE
      Src: /src/cryptsetup/src/cryptsetup.c:1571,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:1573,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1574,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1575,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1575,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1579,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1579,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/src/cryptsetup.c:1580,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:1580,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:1580,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1582,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1582,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1587,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/src/cryptsetup.c:1588,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:1588,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1594,1
    - Dst: tools_detect_signatures
      Src: /src/cryptsetup/src/cryptsetup.c:1595,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1595,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1598,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1598,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1603,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/cryptsetup.c:1604,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1604,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:1610,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1610,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:1611,1
    - Dst: get_adjusted_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:1616,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1616,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1619,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1621,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1624,1
    - Dst: crypt_set_rng_type
      Src: /src/cryptsetup/src/cryptsetup.c:1625,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1626,1
    - Dst: crypt_set_rng_type
      Src: /src/cryptsetup/src/cryptsetup.c:1627,1
    - Dst: luks_init_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:1629,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1629,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1630,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1634,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1634,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:1635,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/src/cryptsetup.c:1635,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1637,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1637,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1637,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1641,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1641,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1647,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/cryptsetup.c:1648,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1648,1
    - Dst: set_pbkdf_params
      Src: /src/cryptsetup/src/cryptsetup.c:1653,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1655,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1655,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1660,1
    - Dst: tools_wipe_all_signatures
      Src: /src/cryptsetup/src/cryptsetup.c:1661,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1664,1
    - Dst: crypt_set_compatibility
      Src: /src/cryptsetup/src/cryptsetup.c:1665,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1667,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1667,1
    - Dst: crypt_format_luks2_opal
      Src: /src/cryptsetup/src/cryptsetup.c:1668,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1669,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1670,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1671,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1672,1
    - Dst: crypt_format_inline
      Src: /src/cryptsetup/src/cryptsetup.c:1673,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1674,1
    - Dst: crypt_format
      Src: /src/cryptsetup/src/cryptsetup.c:1676,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1677,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:1678,1
    - Dst: _set_keyslot_encryption_params
      Src: /src/cryptsetup/src/cryptsetup.c:1682,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/cryptsetup.c:1687,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:1693,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:1698,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:1702,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:1705,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1706,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:1711,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1713,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1713,1
    - Dst: strcmp_or_null
      Src: /src/cryptsetup/src/cryptsetup.c:1714,1
    - Dst: _wipe_data_device
      Src: /src/cryptsetup/src/cryptsetup.c:1715,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:1721,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:1722,1
    - Dst: crypt_get_hw_encryption_type
      Src: /src/cryptsetup/src/cryptsetup.c:1725,1
    - Dst: crypt_wipe_hw_opal
      Src: /src/cryptsetup/src/cryptsetup.c:1728,1
    - Dst: tools_wipe_all_signatures
      Src: /src/cryptsetup/src/cryptsetup.c:1733,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:1744,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:1745,1
    CyclomaticComplexity: 101
    EdgeCount: 101
    ICount: 222
    argCount: 2
    argNames:
    - r_cd
    - r_kc
    argTypes:
    - struct crypt_device**
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1449
    functionDepth: 7
    functionLinenumber: 1449
    functionLinenumberEnd: 1748
    functionName: luksFormat
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 1
    functionsReached:
    - yesDialog
    - luks_init_keyslot_context
    - crypt_set_compatibility
    - crypt_safe_alloc
    - crypt_get_default_type
    - verify_passphrase
    - crypt_set_metadata_size
    - crypt_free
    - ARG_UINT32
    - set_pbkdf_params
    - tools_get_key
    - tools_wipe_all_signatures
    - open
    - CONST_CAST
    - crypt_volume_key_get_by_keyslot_context
    - free
    - crypt_set_data_offset
    - _set_keyslot_encryption_params
    - isLUKS2
    - crypt_format_luks2_opal
    - log_dbg
    - luksType
    - crypt_parse_name_and_mode
    - crypt_format_inline
    - close
    - tools_keyslot_msg
    - _wipe_data_device
    - crypt_format
    - crypt_wipe_hw_opal
    - ARG_SET_TRUE
    - check_signal
    - ARG_STR
    - crypt_safe_free
    - log_err
    - get_adjusted_key_size
    - crypt_is_cipher_null
    - tools_read_vk
    - crypt_keyslot_add_by_keyslot_context
    - tools_detect_signatures
    - asprintf
    - _
    - strcmp_or_null
    - crypt_get_hw_encryption_type
    - crypt_keyslot_context_init_by_volume_key
    - isLUKS1
    - ARG_SET
    - ARG_UINT64
    - posix_fallocate
    - crypt_parse_integrity_mode
    - crypt_set_rng_type
    - crypt_keyslot_context_free
    - stat
    - crypt_init
    - ARG_INT32
    - DEFAULT_CIPHER
    linkageType: ''
    returnType: int
    signature: int luksFormat(struct crypt_device **r_cd, struct crypt_keyslot_context
      **r_kc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luksFormat
      Src: /src/cryptsetup/src/cryptsetup.c:1752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1753
      start: 1750
    functionDepth: 8
    functionLinenumber: 1750
    functionLinenumberEnd: 1753
    functionName: action_luksFormat
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - luksFormat
    linkageType: ''
    returnType: int
    signature: int action_luksFormat(void)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1765,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/cryptsetup.c:1767,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1767,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:1772,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1774,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/cryptsetup.c:1776,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:1779,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:1779,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1780,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1780,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/src/cryptsetup.c:1785,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1785,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1786,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1786,1
    - Dst: stat
      Src: /src/cryptsetup/src/cryptsetup.c:1791,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:1791,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/src/cryptsetup.c:1791,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/src/cryptsetup.c:1792,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1793,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1793,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:1794,1
    - Dst: tools_check_newname
      Src: /src/cryptsetup/src/cryptsetup.c:1800,1
    - Dst: set_activation_flags
      Src: /src/cryptsetup/src/cryptsetup.c:1803,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1805,1
    - Dst: crypt_token_set_external_path
      Src: /src/cryptsetup/src/cryptsetup.c:1806,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1806,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1808,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1808,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1809,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1814,1
    - Dst: tools_parse_vk_and_keyring_description
      Src: /src/cryptsetup/src/cryptsetup.c:1815,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1826,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1826,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:1830,1
    - Dst: crypt_get_old_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:1832,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1835,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1835,1
    - Dst: luks_init_keyslot_contexts_by_volume_keys
      Src: /src/cryptsetup/src/cryptsetup.c:1842,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:1851,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1854,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1854,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1856,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1856,1
    - Dst: luks_try_token_unlock
      Src: /src/cryptsetup/src/cryptsetup.c:1858,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1858,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1859,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1860,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/cryptsetup.c:1861,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1862,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1862,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1862,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1865,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/cryptsetup.c:1868,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:1870,1
    - Dst: luks_init_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:1872,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1872,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:1876,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1876,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:1879,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:1880,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:1881,1
    - Dst: crypt_get_hw_encryption_type
      Src: /src/cryptsetup/src/cryptsetup.c:1888,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1889,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1889,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1891,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/src/cryptsetup.c:1892,1
    - Dst: crypt_persistent_flags_set
      Src: /src/cryptsetup/src/cryptsetup.c:1893,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1894,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1894,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:1896,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:1897,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:1898,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 104
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1901
      start: 1755
    functionDepth: 7
    functionLinenumber: 1755
    functionLinenumberEnd: 1901
    functionName: action_open_luks
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - luks_init_keyslot_context
    - crypt_load
    - tools_parse_vk_and_keyring_description
    - verify_passphrase
    - tools_check_newname
    - crypt_free
    - crypt_init_data_device
    - crypt_init_by_name_and_header
    - set_activation_flags
    - crypt_get_volume_key_size
    - crypt_get_old_volume_key_size
    - luksType
    - crypt_get_device_name
    - tools_passphrase_msg
    - luks_try_token_unlock
    - crypt_persistent_flags_set
    - tools_keyslot_msg
    - luks_init_keyslot_contexts_by_volume_keys
    - check_signal
    - ARG_STR
    - set_tries_tty
    - log_err
    - crypt_token_set_external_path
    - uuid_or_device_header
    - crypt_get_data_offset
    - crypt_activate_by_keyslot_context
    - _
    - crypt_get_hw_encryption_type
    - ARG_SET
    - S_ISREG
    - crypt_keyslot_context_free
    - stat
    - ARG_INT32
    - crypt_get_active_device
    linkageType: ''
    returnType: int
    signature: int action_open_luks(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1912,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1913,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:1913,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:1916,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1917,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1918,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1924,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/cryptsetup.c:1928,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:1928,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/cryptsetup.c:1936,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:1938,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:1948,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:1950,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 32
    argCount: 9
    argNames:
    - cd
    - key_slot
    - ki
    - msg_last
    - msg_pass
    - msg_fail
    - key_file
    - keyfile_offset
    - keyfile_size
    argTypes:
    - struct crypt_device*
    - int
    - crypt_keyslot_info
    - char*
    - char*
    - char*
    - char*
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1903
    functionDepth: 6
    functionLinenumber: 1903
    functionLinenumberEnd: 1952
    functionName: verify_keyslot
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_keyslot_max
    - verify_passphrase
    - ARG_SET
    - ARG_UINT32
    - crypt_safe_free
    - tools_get_key
    - crypt_activate_by_passphrase
    - tools_passphrase_msg
    - crypt_get_type
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: "int verify_keyslot(struct crypt_device *cd, int key_slot, crypt_keyslot_info
      ki,\n\t\t\t  char *msg_last, char *msg_pass, char *msg_fail,\n\t\t\t  const
      char *key_file, uint64_t keyfile_offset,\n\t\t\t  int keyfile_size)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:1960,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:1960,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:1963,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:1963,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1964,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1964,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:1965,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/cryptsetup.c:1969,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1969,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/cryptsetup.c:1974,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1974,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1974,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:1977,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1977,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1977,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1984,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1984,1
    - Dst: isatty
      Src: /src/cryptsetup/src/cryptsetup.c:1984,1
    - Dst: verify_keyslot
      Src: /src/cryptsetup/src/cryptsetup.c:1985,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:1985,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1986,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1987,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:1988,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1989,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:1989,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:1989,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:1990,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:1992,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/cryptsetup.c:1992,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:1992,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/cryptsetup.c:1993,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/src/cryptsetup.c:2001,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2001,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2002,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2002,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2004,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2006
      start: 1954
    functionDepth: 7
    functionLinenumber: 1954
    functionLinenumberEnd: 2006
    functionName: action_luksKillSlot
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - crypt_free
    - ARG_UINT32
    - crypt_keyslot_status
    - log_verbose
    - crypt_keyslot_destroy
    - log_dbg
    - tools_is_stdin
    - luksType
    - tools_keyslot_msg
    - ARG_STR
    - isatty
    - log_err
    - uuid_or_device_header
    - _
    - verify_keyslot
    - ARG_SET
    - ARG_UINT64
    - crypt_init
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int action_luksKillSlot(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2015,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2015,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:2018,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:2018,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2019,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2019,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2020,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:2024,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2024,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:2026,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2026,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2026,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2027,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2028,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2033,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2035,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:2036,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2039,1
    - Dst: ARG_SET_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2041,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/cryptsetup.c:2042,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2042,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2042,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/cryptsetup.c:2044,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2044,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2045,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:2046,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2046,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2048,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/src/cryptsetup.c:2053,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2053,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2054,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2054,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2056,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2057,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2008
    functionDepth: 6
    functionLinenumber: 2008
    functionLinenumberEnd: 2059
    functionName: action_luksRemoveKey
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_load
    - verify_passphrase
    - crypt_free
    - ARG_UINT32
    - tools_get_key
    - crypt_keyslot_status
    - log_verbose
    - crypt_keyslot_destroy
    - luksType
    - tools_passphrase_msg
    - tools_keyslot_msg
    - ARG_SET_INT32
    - check_signal
    - ARG_STR
    - crypt_safe_free
    - log_err
    - uuid_or_device_header
    - _
    - ARG_SET
    - ARG_UINT64
    - crypt_activate_by_passphrase
    - crypt_init
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int action_luksRemoveKey(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2070,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2070,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:2073,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2074,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2074,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2075,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2079,1
    - Dst: crypt_token_set_external_path
      Src: /src/cryptsetup/src/cryptsetup.c:2080,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2080,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2082,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2082,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2083,1
    - Dst: _set_keyslot_encryption_params
      Src: /src/cryptsetup/src/cryptsetup.c:2088,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/src/cryptsetup.c:2093,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:2093,1
    - Dst: ARG_SET_TRUE
      Src: /src/cryptsetup/src/cryptsetup.c:2094,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2096,1
    - Dst: set_pbkdf_params
      Src: /src/cryptsetup/src/cryptsetup.c:2097,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2097,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2099,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2099,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2103,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/cryptsetup.c:2104,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2104,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:2108,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:2113,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2113,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:2115,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2115,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2116,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2117,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2117,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/src/cryptsetup.c:2121,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2121,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2123,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2125,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2126,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2127,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2129
      start: 2061
    functionDepth: 6
    functionLinenumber: 2061
    functionLinenumberEnd: 2129
    functionName: luksAddUnboundKey
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - verify_passphrase
    - crypt_free
    - ARG_UINT32
    - set_pbkdf_params
    - tools_get_key
    - crypt_keyslot_add_by_key
    - _set_keyslot_encryption_params
    - tools_keyslot_msg
    - ARG_SET_TRUE
    - check_signal
    - ARG_STR
    - crypt_safe_free
    - log_err
    - crypt_token_set_external_path
    - uuid_or_device_header
    - tools_read_vk
    - crypt_is_cipher_null
    - _
    - crypt_get_cipher
    - ARG_SET
    - ARG_UINT64
    - crypt_init
    - ARG_INT32
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: int luksAddUnboundKey(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/cryptsetup.c:2140,1
    - Dst: assert
      Src: /src/cryptsetup/src/cryptsetup.c:2141,1
    - Dst: crypt_keyslot_context_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2143,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/cryptsetup.c:2147,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2147,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/cryptsetup.c:2149,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2149,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:2153,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2154,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2154,1
    - Dst: crypt_keyslot_context_set_pin
      Src: /src/cryptsetup/src/cryptsetup.c:2158,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2159,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - cd
    - token_id
    - kc
    argTypes:
    - struct crypt_device*
    - int
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 2139
        line_start: 2139
        source_file: /src/cryptsetup/src/cryptsetup.c
    - condition: (token_id >= 0 || token_id == CRYPT_ANY_TOKEN)
      pos:
        line_end: 2140
        line_start: 2140
        source_file: /src/cryptsetup/src/cryptsetup.c
    constantsTouched: []
    func_position:
      end: 2161
      start: 2131
    functionDepth: 6
    functionLinenumber: 2131
    functionLinenumberEnd: 2161
    functionName: _ask_for_pin
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - snprintf
    - verify_passphrase
    - assert
    - ARG_UINT32
    - crypt_safe_free
    - tools_get_key
    - crypt_keyslot_context_get_type
    - crypt_keyslot_context_set_pin
    linkageType: ''
    returnType: int
    signature: "int _ask_for_pin(struct crypt_device *cd,\n\tint token_id,\n\tstruct
      crypt_keyslot_context *kc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2173,1
    - Dst: crypt_keyslot_context_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2174,1
    - Dst: tools_token_error_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2175,1
    - Dst: crypt_keyslot_context_get_error
      Src: /src/cryptsetup/src/cryptsetup.c:2175,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2175,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2176,1
    - Dst: crypt_keyslot_context_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2177,1
    - Dst: tools_token_error_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2178,1
    - Dst: crypt_keyslot_context_get_error
      Src: /src/cryptsetup/src/cryptsetup.c:2178,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 7
    argNames:
    - cd
    - keyslot_existing
    - keyslot_new
    - kc
    - kc_new
    - pin_provided
    - new_pin_provided
    argTypes:
    - struct crypt_device*
    - int
    - int
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2181
      start: 2163
    functionDepth: 1
    functionLinenumber: 2163
    functionLinenumberEnd: 2181
    functionName: try_keyslot_add
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - ARG_STR
    - crypt_keyslot_context_get_error
    - crypt_keyslot_context_get_type
    - ARG_INT32
    - crypt_keyslot_add_by_keyslot_context
    - tools_token_error_msg
    linkageType: ''
    returnType: int
    signature: "int try_keyslot_add(struct crypt_device *cd,\n\tint keyslot_existing,\n\tint
      keyslot_new,\n\tstruct crypt_keyslot_context *kc,\n\tstruct crypt_keyslot_context
      *kc_new,\n\tbool pin_provided,\n\tbool new_pin_provided)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2192,1
    - Dst: luksAddUnboundKey
      Src: /src/cryptsetup/src/cryptsetup.c:2193,1
    - Dst: ARG_SET_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2197,1
    - Dst: strdup
      Src: /src/cryptsetup/src/cryptsetup.c:2197,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2199,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2200,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2206,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2206,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2207,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2208,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2208,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2210,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2213,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2213,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:2216,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:2216,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2217,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2217,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2218,1
    - Dst: _set_keyslot_encryption_params
      Src: /src/cryptsetup/src/cryptsetup.c:2222,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2226,1
    - Dst: crypt_token_set_external_path
      Src: /src/cryptsetup/src/cryptsetup.c:2227,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2227,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2229,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2229,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2230,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/src/cryptsetup.c:2236,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:2236,1
    - Dst: ARG_SET_TRUE
      Src: /src/cryptsetup/src/cryptsetup.c:2237,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:2239,1
    - Dst: set_pbkdf_params
      Src: /src/cryptsetup/src/cryptsetup.c:2240,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2240,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2242,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2242,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2246,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2247,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2248,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2248,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2252,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/cryptsetup.c:2254,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2254,1
    - Dst: crypt_volume_key_verify
      Src: /src/cryptsetup/src/cryptsetup.c:2258,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2260,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2260,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:2261,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2263,1
    - Dst: crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:2266,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2267,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2268,1
    - Dst: tools_parse_vk_description
      Src: /src/cryptsetup/src/cryptsetup.c:2269,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2269,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/src/cryptsetup.c:2272,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:2273,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2276,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2278,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2278,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2279,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2279,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2279,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/src/cryptsetup.c:2280,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2281,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2282,1
    - Dst: luks_init_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2285,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2285,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2286,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2291,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:2292,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2293,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2296,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2302,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2303,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2303,1
    - Dst: crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/src/cryptsetup.c:2306,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2307,1
    - Dst: init_new_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2312,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2312,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2313,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2313,1
    - Dst: try_keyslot_add
      Src: /src/cryptsetup/src/cryptsetup.c:2320,1
    - Dst: crypt_keyslot_context_get_error
      Src: /src/cryptsetup/src/cryptsetup.c:2324,1
    - Dst: _ask_for_pin
      Src: /src/cryptsetup/src/cryptsetup.c:2325,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2325,1
    - Dst: try_keyslot_add
      Src: /src/cryptsetup/src/cryptsetup.c:2331,1
    - Dst: crypt_keyslot_context_get_error
      Src: /src/cryptsetup/src/cryptsetup.c:2336,1
    - Dst: _ask_for_pin
      Src: /src/cryptsetup/src/cryptsetup.c:2337,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2337,1
    - Dst: try_keyslot_add
      Src: /src/cryptsetup/src/cryptsetup.c:2340,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2343,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:2344,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:2345,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2346,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 141
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2348
      start: 2183
    functionDepth: 7
    functionLinenumber: 2183
    functionLinenumberEnd: 2348
    functionName: action_luksAddKey
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - luks_init_keyslot_context
    - crypt_load
    - verify_passphrase
    - crypt_free
    - ARG_UINT32
    - set_pbkdf_params
    - try_keyslot_add
    - crypt_volume_key_verify
    - crypt_keyslot_context_init_by_token
    - free
    - luksAddUnboundKey
    - _set_keyslot_encryption_params
    - crypt_get_volume_key_size
    - strdup
    - luksType
    - tools_parse_vk_description
    - tools_passphrase_msg
    - tools_keyslot_msg
    - ARG_SET_TRUE
    - log_std
    - check_signal
    - ARG_STR
    - crypt_safe_free
    - log_err
    - crypt_token_set_external_path
    - uuid_or_device_header
    - tools_read_vk
    - crypt_is_cipher_null
    - crypt_activate_by_keyslot_context
    - crypt_keyslot_context_init_by_vk_in_keyring
    - _
    - crypt_get_cipher
    - crypt_keyslot_context_init_by_volume_key
    - init_new_keyslot_context
    - ARG_SET
    - crypt_keyslot_context_get_error
    - ARG_SET_STR
    - _ask_for_pin
    - crypt_init
    - crypt_keyslot_context_free
    - ARG_INT32
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: int action_luksAddKey(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2358,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2358,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:2361,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:2361,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2362,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2362,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2363,1
    - Dst: _set_keyslot_encryption_params
      Src: /src/cryptsetup/src/cryptsetup.c:2367,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/src/cryptsetup.c:2372,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:2372,1
    - Dst: ARG_SET_TRUE
      Src: /src/cryptsetup/src/cryptsetup.c:2373,1
    - Dst: set_pbkdf_params
      Src: /src/cryptsetup/src/cryptsetup.c:2375,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2375,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2377,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2377,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:2381,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2381,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:2383,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2383,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2383,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2384,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2384,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2389,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2389,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2391,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:2392,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2395,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:2397,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2397,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:2399,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2399,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2401,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2401,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2401,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2405,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2405,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2405,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2407,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2409,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2410,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2411,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2413
      start: 2350
    functionDepth: 6
    functionLinenumber: 2350
    functionLinenumberEnd: 2413
    functionName: action_luksChangeKey
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - verify_passphrase
    - crypt_free
    - ARG_UINT32
    - set_pbkdf_params
    - tools_get_key
    - _set_keyslot_encryption_params
    - luksType
    - tools_passphrase_msg
    - tools_keyslot_msg
    - ARG_SET_TRUE
    - crypt_keyslot_change_by_passphrase
    - check_signal
    - ARG_STR
    - crypt_safe_free
    - log_err
    - uuid_or_device_header
    - crypt_is_cipher_null
    - _
    - crypt_get_cipher
    - ARG_SET
    - ARG_UINT64
    - crypt_activate_by_passphrase
    - crypt_init
    - ARG_INT32
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: int action_luksChangeKey(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2422,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2422,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:2425,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2426,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2426,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2427,1
    - Dst: _set_keyslot_encryption_params
      Src: /src/cryptsetup/src/cryptsetup.c:2431,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/cryptsetup.c:2435,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2435,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2437,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2437,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2437,1
    - Dst: set_pbkdf_params
      Src: /src/cryptsetup/src/cryptsetup.c:2441,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2441,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2443,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2443,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:2447,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2447,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:2449,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2449,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2449,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2450,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2450,1
    - Dst: crypt_keyslot_change_by_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2454,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2454,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2454,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2456,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2457,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2459,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2460,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2462
      start: 2415
    functionDepth: 6
    functionLinenumber: 2415
    functionLinenumberEnd: 2462
    functionName: action_luksConvertKey
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - verify_passphrase
    - crypt_free
    - ARG_UINT32
    - set_pbkdf_params
    - tools_get_key
    - crypt_keyslot_status
    - _set_keyslot_encryption_params
    - tools_passphrase_msg
    - tools_keyslot_msg
    - crypt_keyslot_change_by_passphrase
    - ARG_STR
    - crypt_safe_free
    - log_err
    - uuid_or_device_header
    - _
    - ARG_UINT64
    - crypt_init
    - ARG_INT32
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: int action_luksConvertKey(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2471,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2471,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2475,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2475,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/src/cryptsetup.c:2478,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:2479,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:2479,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2481,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2483
      start: 2464
    functionDepth: 2
    functionLinenumber: 2464
    functionLinenumberEnd: 2483
    functionName: action_isLuks
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - crypt_free
    - log_err
    - crypt_set_log_callback
    - luksType
    - crypt_init
    - uuid_or_device_header
    linkageType: ''
    returnType: int
    signature: int action_isLuks(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2491,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2491,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2494,1
    - Dst: crypt_set_confirm_callback
      Src: /src/cryptsetup/src/cryptsetup.c:2495,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2495,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:2497,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:2497,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2500,1
    - Dst: crypt_set_uuid
      Src: /src/cryptsetup/src/cryptsetup.c:2501,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2501,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/src/cryptsetup.c:2503,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2504,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2508,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2510
      start: 2485
    functionDepth: 2
    functionLinenumber: 2485
    functionLinenumberEnd: 2510
    functionName: action_luksUUID
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - crypt_load
    - _
    - log_std
    - ARG_STR
    - ARG_SET
    - crypt_free
    - crypt_set_uuid
    - luksType
    - crypt_init
    - crypt_set_confirm_callback
    - uuid_or_device_header
    linkageType: ''
    returnType: int
    signature: int action_luksUUID(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2519,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:2519,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2520,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:2526,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/cryptsetup.c:2527,1
    - Dst: luks_init_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2531,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2535,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2536,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:2537,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2540,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2542,1
    - Dst: tools_write_mk
      Src: /src/cryptsetup/src/cryptsetup.c:2543,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2543,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2548,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:2548,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2549,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/cryptsetup.c:2549,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2550,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/cryptsetup.c:2550,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2551,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/src/cryptsetup.c:2551,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2552,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/src/cryptsetup.c:2552,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2553,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2554,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2555,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2555,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2558,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/src/cryptsetup.c:2559,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2560,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:2562,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2563,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2512
    functionDepth: 7
    functionLinenumber: 2512
    functionLinenumberEnd: 2565
    functionName: luksDump_with_volume_key
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_safe_alloc
    - luks_init_keyslot_context
    - crypt_volume_key_get_by_keyslot_context
    - tools_write_mk
    - crypt_log_hex
    - crypt_get_volume_key_size
    - tools_passphrase_msg
    - crypt_get_device_name
    - tools_keyslot_msg
    - log_std
    - check_signal
    - ARG_STR
    - crypt_safe_free
    - crypt_get_data_offset
    - crypt_get_uuid
    - _
    - crypt_get_cipher
    - ARG_SET
    - crypt_get_cipher_mode
    - crypt_keyslot_context_free
    linkageType: ''
    returnType: int
    signature: int luksDump_with_volume_key(struct crypt_device *cd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/cryptsetup.c:2574,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2574,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2576,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2576,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2576,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2580,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:2580,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2581,1
    - Dst: crypt_keyslot_get_key_size
      Src: /src/cryptsetup/src/cryptsetup.c:2586,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2586,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/cryptsetup.c:2590,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:2594,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:2595,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2595,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2595,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2596,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/src/cryptsetup.c:2600,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2600,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2602,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:2603,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2606,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2608,1
    - Dst: tools_write_mk
      Src: /src/cryptsetup/src/cryptsetup.c:2609,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2609,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2614,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/src/cryptsetup.c:2614,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2615,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/src/cryptsetup.c:2615,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2616,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2616,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2617,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2618,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2619,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2619,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2622,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/src/cryptsetup.c:2623,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:2624,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2626,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2627,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2629
      start: 2567
    functionDepth: 6
    functionLinenumber: 2567
    functionLinenumberEnd: 2629
    functionName: luksDump_with_unbound_key
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_safe_alloc
    - ARG_UINT32
    - tools_get_key
    - crypt_keyslot_status
    - tools_write_mk
    - crypt_log_hex
    - tools_passphrase_msg
    - crypt_get_device_name
    - tools_keyslot_msg
    - crypt_volume_key_get
    - log_std
    - check_signal
    - ARG_STR
    - crypt_safe_free
    - log_err
    - crypt_get_uuid
    - _
    - ARG_SET
    - crypt_keyslot_get_key_size
    - ARG_UINT64
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int luksDump_with_unbound_key(struct crypt_device *cd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2636,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2636,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:2639,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:2639,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2640,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2640,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2641,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2645,1
    - Dst: crypt_token_set_external_path
      Src: /src/cryptsetup/src/cryptsetup.c:2646,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2646,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2648,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2648,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2649,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2654,1
    - Dst: luksDump_with_volume_key
      Src: /src/cryptsetup/src/cryptsetup.c:2655,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2656,1
    - Dst: luksDump_with_unbound_key
      Src: /src/cryptsetup/src/cryptsetup.c:2657,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2658,1
    - Dst: crypt_dump_json
      Src: /src/cryptsetup/src/cryptsetup.c:2659,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/src/cryptsetup.c:2661,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2663,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2665
      start: 2631
    functionDepth: 8
    functionLinenumber: 2631
    functionLinenumberEnd: 2665
    functionName: action_luksDump
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - ARG_STR
    - crypt_dump
    - ARG_SET
    - crypt_free
    - luksDump_with_volume_key
    - log_err
    - luksDump_with_unbound_key
    - luksType
    - crypt_token_set_external_path
    - crypt_init
    - crypt_dump_json
    - uuid_or_device_header
    linkageType: ''
    returnType: int
    signature: int action_luksDump(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/cryptsetup.c:2672,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/cryptsetup.c:2672,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2672,1
    - Dst: crypt_suspend
      Src: /src/cryptsetup/src/cryptsetup.c:2674,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2676,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2676,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2679,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2681
      start: 2667
    functionDepth: 1
    functionLinenumber: 2667
    functionLinenumberEnd: 2681
    functionName: action_luksSuspend
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_init_by_name_and_header
    - ARG_STR
    - crypt_free
    - log_err
    - crypt_suspend
    - uuid_or_device
    linkageType: ''
    returnType: int
    signature: int action_luksSuspend(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:2689,1
    - Dst: isLUKS
      Src: /src/cryptsetup/src/cryptsetup.c:2692,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/cryptsetup.c:2695,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/cryptsetup.c:2695,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2695,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2698,1
    - Dst: tools_parse_vk_and_keyring_description
      Src: /src/cryptsetup/src/cryptsetup.c:2699,1
    - Dst: isLUKS
      Src: /src/cryptsetup/src/cryptsetup.c:2706,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2706,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2707,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2707,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2711,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2711,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2712,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2712,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/src/cryptsetup.c:2716,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2721,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2721,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2726,1
    - Dst: crypt_token_set_external_path
      Src: /src/cryptsetup/src/cryptsetup.c:2727,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2727,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2729,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2729,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2730,1
    - Dst: luks_try_token_unlock
      Src: /src/cryptsetup/src/cryptsetup.c:2736,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2736,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2736,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2737,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/cryptsetup.c:2738,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2739,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2739,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2739,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2742,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2745,1
    - Dst: tools_parse_vk_description
      Src: /src/cryptsetup/src/cryptsetup.c:2746,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2746,1
    - Dst: crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/src/cryptsetup.c:2749,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:2750,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2753,1
    - Dst: set_tries_tty
      Src: /src/cryptsetup/src/cryptsetup.c:2757,1
    - Dst: luks_init_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2759,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2759,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/src/cryptsetup.c:2763,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:2763,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:2764,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2767,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:2768,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2769,1
    - Dst: crypt_keyslot_context_free
      Src: /src/cryptsetup/src/cryptsetup.c:2773,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2774,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2776
      start: 2683
    functionDepth: 7
    functionLinenumber: 2683
    functionLinenumberEnd: 2776
    functionName: action_luksResume
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - luks_init_keyslot_context
    - tools_parse_vk_and_keyring_description
    - verify_passphrase
    - crypt_free
    - crypt_resume_by_keyslot_context
    - free
    - crypt_init_by_name_and_header
    - isLUKS
    - luksType
    - tools_parse_vk_description
    - tools_passphrase_msg
    - luks_try_token_unlock
    - strcmp
    - tools_keyslot_msg
    - check_signal
    - ARG_STR
    - set_tries_tty
    - log_err
    - crypt_token_set_external_path
    - uuid_or_device
    - crypt_keyslot_context_init_by_vk_in_keyring
    - _
    - ARG_SET
    - crypt_keyslot_context_free
    - ARG_INT32
    - crypt_get_type
    - crypt_get_active_device
    linkageType: ''
    returnType: int
    signature: int action_luksResume(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2783,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2784,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2784,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2788,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2788,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/src/cryptsetup.c:2791,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2791,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2793,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2795
      start: 2778
    functionDepth: 2
    functionLinenumber: 2778
    functionLinenumberEnd: 2795
    functionName: action_luksBackup
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_STR
    - crypt_header_backup
    - ARG_SET
    - crypt_free
    - log_err
    - crypt_init
    - uuid_or_device_header
    linkageType: ''
    returnType: int
    signature: int action_luksBackup(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2802,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2803,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2803,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:2807,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2807,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2810,1
    - Dst: crypt_set_confirm_callback
      Src: /src/cryptsetup/src/cryptsetup.c:2811,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/src/cryptsetup.c:2812,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2812,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2814,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2816
      start: 2797
    functionDepth: 2
    functionLinenumber: 2797
    functionLinenumberEnd: 2816
    functionName: action_luksRestore
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_header_restore
    - _
    - ARG_STR
    - ARG_SET
    - crypt_free
    - log_err
    - crypt_init
    - crypt_set_confirm_callback
    - uuid_or_device_header
    linkageType: ''
    returnType: int
    signature: int action_luksRestore(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/cryptsetup.c:2828,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2828,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2831,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2833,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2834,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2834,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/cryptsetup.c:2838,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2840,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2842,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2845,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2845,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2849,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2852
      start: 2818
    functionDepth: 1
    functionLinenumber: 2818
    functionLinenumberEnd: 2852
    functionName: _get_device_type
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_init_by_name_and_header
    - ARG_STR
    - strncmp
    - crypt_free
    - log_err
    - strcmp
    - crypt_get_type
    linkageType: ''
    returnType: char
    signature: char *_get_device_type(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2858,1
    - Dst: _get_device_type
      Src: /src/cryptsetup/src/cryptsetup.c:2860,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2865,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2866,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2867,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2868,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2868,1
    - Dst: action_open_luks
      Src: /src/cryptsetup/src/cryptsetup.c:2870,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2871,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2872,1
    - Dst: action_open_plain
      Src: /src/cryptsetup/src/cryptsetup.c:2874,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2875,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2876,1
    - Dst: action_open_loopaes
      Src: /src/cryptsetup/src/cryptsetup.c:2878,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2879,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2880,1
    - Dst: action_open_tcrypt
      Src: /src/cryptsetup/src/cryptsetup.c:2882,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2883,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2884,1
    - Dst: action_open_bitlk
      Src: /src/cryptsetup/src/cryptsetup.c:2886,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:2887,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2888,1
    - Dst: action_open_fvault2
      Src: /src/cryptsetup/src/cryptsetup.c:2890,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2895,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2895,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2897,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2897,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2900
      start: 2854
    functionDepth: 8
    functionLinenumber: 2854
    functionLinenumberEnd: 2900
    functionName: action_open
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - action_open_bitlk
    - action_open_fvault2
    - _
    - action_open_tcrypt
    - action_open_luks
    - _get_device_type
    - action_open_loopaes
    - ARG_SET
    - log_err
    - action_open_plain
    - strcmp
    linkageType: ''
    returnType: int
    signature: int action_open(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2908,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2909,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/cryptsetup.c:2911,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/cryptsetup.c:2915,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2915,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2915,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:2916,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2917,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:2918,1
    - Dst: verify_passphrase
      Src: /src/cryptsetup/src/cryptsetup.c:2918,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2922,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:2923,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2923,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2924,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2925,1
    - Dst: crypt_wipe_hw_opal
      Src: /src/cryptsetup/src/cryptsetup.c:2929,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/cryptsetup.c:2932,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - cd
    - factory_reset
    argTypes:
    - struct crypt_device*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2934
      start: 2902
    functionDepth: 6
    functionLinenumber: 2902
    functionLinenumberEnd: 2934
    functionName: opal_erase
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - _
    - verify_passphrase
    - ARG_STR
    - ARG_SET
    - ARG_UINT64
    - ARG_UINT32
    - log_dbg
    - crypt_safe_free
    - tools_get_key
    - crypt_wipe_hw_opal
    linkageType: ''
    returnType: int
    signature: int opal_erase(struct crypt_device *cd, bool factory_reset)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/cryptsetup.c:2943,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/cryptsetup.c:2943,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:2943,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2947,1
    - Dst: opal_erase
      Src: /src/cryptsetup/src/cryptsetup.c:2948,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:2952,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:2952,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:2953,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2953,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2954,1
    - Dst: crypt_get_hw_encryption_type
      Src: /src/cryptsetup/src/cryptsetup.c:2958,1
    - Dst: opal_erase
      Src: /src/cryptsetup/src/cryptsetup.c:2962,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/cryptsetup.c:2966,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2966,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:2968,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:2973,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:2973,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:2973,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/cryptsetup.c:2979,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:2979,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/cryptsetup.c:2986,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/src/cryptsetup.c:2988,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/cryptsetup.c:2991,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:2995,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:2996,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2998
      start: 2936
    functionDepth: 7
    functionLinenumber: 2936
    functionLinenumberEnd: 2998
    functionName: action_luksErase
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_load
    - crypt_keyslot_max
    - crypt_free
    - crypt_keyslot_status
    - crypt_init_data_device
    - free
    - crypt_keyslot_destroy
    - luksType
    - tools_keyslot_msg
    - ARG_STR
    - opal_erase
    - log_err
    - uuid_or_device_header
    - _
    - crypt_get_hw_encryption_type
    - ARG_SET
    - asprintf
    - uuid_or_device
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: int action_luksErase(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3007,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3009,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3012,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3012,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:3016,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:3016,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:3019,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/cryptsetup.c:3020,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3021,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3021,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:3022,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:3023,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3027,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3028,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3028,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:3029,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3034,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/cryptsetup.c:3035,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3035,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:3036,1
    - Dst: yesDialog
      Src: /src/cryptsetup/src/cryptsetup.c:3038,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3038,1
    - Dst: crypt_convert
      Src: /src/cryptsetup/src/cryptsetup.c:3042,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:3044,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:3045,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3047
      start: 3000
    functionDepth: 2
    functionLinenumber: 3000
    functionLinenumberEnd: 3047
    functionName: action_luksConvert
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - yesDialog
    - crypt_load
    - _
    - free
    - crypt_convert
    - ARG_SET
    - crypt_free
    - log_err
    - asprintf
    - crypt_init
    - strcmp
    - crypt_get_type
    - uuid_or_device_header
    linkageType: ''
    returnType: int
    signature: int action_luksConvert(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3054,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3054,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3056,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3056,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3058,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3058,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/cryptsetup.c:3061,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3061,1
    - Dst: crypt_keyslot_set_priority
      Src: /src/cryptsetup/src/cryptsetup.c:3063,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3063,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3065
      start: 3049
    functionDepth: 1
    functionLinenumber: 3049
    functionLinenumberEnd: 3065
    functionName: _config_priority
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - ARG_STR
    - ARG_INT32
    - crypt_keyslot_set_priority
    - strcmp
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: int _config_priority(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_set_label
      Src: /src/cryptsetup/src/cryptsetup.c:3069,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3069,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3069,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3070
      start: 3067
    functionDepth: 1
    functionLinenumber: 3067
    functionLinenumberEnd: 3070
    functionName: _config_labels
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - ARG_STR
    - crypt_set_label
    linkageType: ''
    returnType: int
    signature: int _config_labels(struct crypt_device *cd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3077,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3077,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3077,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3078,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3078,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:3082,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:3082,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:3085,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3086,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3086,1
    - Dst: uuid_or_device_header
      Src: /src/cryptsetup/src/cryptsetup.c:3087,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3091,1
    - Dst: _config_priority
      Src: /src/cryptsetup/src/cryptsetup.c:3091,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3094,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3094,1
    - Dst: _config_labels
      Src: /src/cryptsetup/src/cryptsetup.c:3094,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:3097,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3099
      start: 3072
    functionDepth: 2
    functionLinenumber: 3072
    functionLinenumberEnd: 3099
    functionName: action_luksConfig
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - _config_labels
    - ARG_SET
    - crypt_free
    - log_err
    - _config_priority
    - crypt_init
    - uuid_or_device_header
    linkageType: ''
    returnType: int
    signature: int action_luksConfig(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3106,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3109,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/src/cryptsetup.c:3110,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3110,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3112,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3112,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3112,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3114,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3115,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3115,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3115,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/cryptsetup.c:3120,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3120,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3121,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3121,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3121,1
    - Dst: crypt_token_luks2_keyring_set
      Src: /src/cryptsetup/src/cryptsetup.c:3125,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3125,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3127,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3127,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3127,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3133,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/src/cryptsetup.c:3136,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3136,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3138,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3138,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3138,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/src/cryptsetup.c:3139,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3144
      start: 3101
    functionDepth: 1
    functionLinenumber: 3101
    functionLinenumberEnd: 3144
    functionName: _token_add
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 1
    functionsReached:
    - _
    - ARG_STR
    - crypt_token_status
    - ARG_SET
    - crypt_token_luks2_keyring_set
    - log_err
    - crypt_token_json_set
    - crypt_token_assign_keyslot
    - ARG_INT32
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: int _token_add(struct crypt_device *cd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_token_status
      Src: /src/cryptsetup/src/cryptsetup.c:3150,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3150,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3152,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3152,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3152,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3155,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3155,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3155,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/src/cryptsetup.c:3159,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3160
      start: 3146
    functionDepth: 1
    functionLinenumber: 3146
    functionLinenumberEnd: 3160
    functionName: _token_remove
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_token_status
    - log_err
    - crypt_token_json_set
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int _token_remove(struct crypt_device *cd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3169,1
    - Dst: crypt_token_status
      Src: /src/cryptsetup/src/cryptsetup.c:3170,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3170,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3172,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3172,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3172,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3174,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3175,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3175,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3175,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/cryptsetup.c:3180,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3180,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3181,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3181,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3181,1
    - Dst: tools_read_json_file
      Src: /src/cryptsetup/src/cryptsetup.c:3185,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3185,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3185,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/src/cryptsetup.c:3189,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3189,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:3190,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3192,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3192,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3198,1
    - Dst: crypt_token_assign_keyslot
      Src: /src/cryptsetup/src/cryptsetup.c:3199,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3199,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3201,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3201,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3201,1
    - Dst: crypt_token_json_set
      Src: /src/cryptsetup/src/cryptsetup.c:3202,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3208
      start: 3162
    functionDepth: 2
    functionLinenumber: 3162
    functionLinenumberEnd: 3208
    functionName: _token_import
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - free
    - tools_read_json_file
    - ARG_STR
    - crypt_token_status
    - ARG_SET
    - log_err
    - crypt_token_json_set
    - crypt_token_assign_keyslot
    - ARG_INT32
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: int _token_import(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_token_json_get
      Src: /src/cryptsetup/src/cryptsetup.c:3215,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3215,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3217,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3217,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3217,1
    - Dst: tools_write_json_file
      Src: /src/cryptsetup/src/cryptsetup.c:3221,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3222
      start: 3210
    functionDepth: 2
    functionLinenumber: 3210
    functionLinenumberEnd: 3222
    functionName: _token_export
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_token_json_get
    - ARG_STR
    - log_err
    - tools_write_json_file
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int _token_export(struct crypt_device *cd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_token_is_assigned
      Src: /src/cryptsetup/src/cryptsetup.c:3226,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3226,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3226,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3230,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3230,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3230,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3230,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3232,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3232,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3232,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3232,1
    - Dst: crypt_token_unassign_keyslot
      Src: /src/cryptsetup/src/cryptsetup.c:3237,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3237,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3237,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3239,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3239,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3239,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3239,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3242
      start: 3224
    functionDepth: 1
    functionLinenumber: 3224
    functionLinenumberEnd: 3242
    functionName: _token_unassign
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - log_err
    - crypt_token_is_assigned
    - crypt_token_unassign_keyslot
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int _token_unassign(struct crypt_device *cd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/cryptsetup.c:3249,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/cryptsetup.c:3249,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3249,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/cryptsetup.c:3252,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3253,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3253,1
    - Dst: uuid_or_device
      Src: /src/cryptsetup/src/cryptsetup.c:3254,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3254,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:3255,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3259,1
    - Dst: crypt_token_set_external_path
      Src: /src/cryptsetup/src/cryptsetup.c:3260,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3260,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3262,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3262,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3263,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:3264,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3271,1
    - Dst: _token_add
      Src: /src/cryptsetup/src/cryptsetup.c:3272,1
    - Dst: tools_token_msg
      Src: /src/cryptsetup/src/cryptsetup.c:3273,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3274,1
    - Dst: _token_remove
      Src: /src/cryptsetup/src/cryptsetup.c:3275,1
    - Dst: tools_token_msg
      Src: /src/cryptsetup/src/cryptsetup.c:3276,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3277,1
    - Dst: _token_import
      Src: /src/cryptsetup/src/cryptsetup.c:3278,1
    - Dst: tools_token_msg
      Src: /src/cryptsetup/src/cryptsetup.c:3279,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3280,1
    - Dst: _token_export
      Src: /src/cryptsetup/src/cryptsetup.c:3281,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3282,1
    - Dst: _token_unassign
      Src: /src/cryptsetup/src/cryptsetup.c:3283,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/cryptsetup.c:3285,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3288
      start: 3244
    functionDepth: 3
    functionLinenumber: 3244
    functionLinenumberEnd: 3288
    functionName: action_token
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - strcmp
    - _token_add
    - crypt_load
    - _
    - _token_import
    - _token_unassign
    - ARG_STR
    - _token_remove
    - ARG_SET
    - crypt_free
    - log_err
    - _token_export
    - tools_token_msg
    - crypt_token_set_external_path
    - crypt_init
    - uuid_or_device
    linkageType: ''
    returnType: int
    signature: int action_token(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt
      Src: /src/cryptsetup/src/cryptsetup.c:3292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3293
      start: 3290
    functionDepth: 10
    functionLinenumber: 3290
    functionLinenumberEnd: 3293
    functionName: action_reencrypt
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - reencrypt
    linkageType: ''
    returnType: int
    signature: int action_reencrypt(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3297,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3297,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3297,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3297,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3298,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3300,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3300,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3300,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3301,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3303,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3303,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3304,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3306,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3307,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3308,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3309,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3310,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3314
      start: 3295
    functionDepth: 1
    functionLinenumber: 3295
    functionLinenumberEnd: 3314
    functionName: verify_tcryptdump
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - strcmp
    - _
    - ARG_SET
    linkageType: ''
    returnType: char
    signature: char *verify_tcryptdump(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3318,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3318,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3319,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3321,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3321,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3322,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3324,1
    - Dst: strcmp_or_null
      Src: /src/cryptsetup/src/cryptsetup.c:3324,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3325,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3327,1
    - Dst: strcmp_or_null
      Src: /src/cryptsetup/src/cryptsetup.c:3327,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3327,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3328,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3330,1
    - Dst: strcmp_or_null
      Src: /src/cryptsetup/src/cryptsetup.c:3330,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3330,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3331,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3333,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3333,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3334,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3336,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3337,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3338,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3340,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3340,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3341,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3342,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3344,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/cryptsetup.c:3345,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3345,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3346,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3346,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3347,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3349,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3349,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3350,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3352,1
    - Dst: strncmp
      Src: /src/cryptsetup/src/cryptsetup.c:3352,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3353,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3355,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3355,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3356,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3358,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3358,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3359,1
    - Dst: strcmp_or_null
      Src: /src/cryptsetup/src/cryptsetup.c:3359,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3360,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3363,1
    - Dst: verify_tcryptdump
      Src: /src/cryptsetup/src/cryptsetup.c:3366,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3367
      start: 3316
    functionDepth: 2
    functionLinenumber: 3316
    functionLinenumberEnd: 3367
    functionName: verify_open
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - strcmp_or_null
    - verify_tcryptdump
    - ARG_SET
    - strncmp
    - ARG_UINT32
    - strcmp
    linkageType: ''
    returnType: char
    signature: char *verify_open(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3371,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3371,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3375
      start: 3369
    functionDepth: 1
    functionLinenumber: 3369
    functionLinenumberEnd: 3375
    functionName: verify_close
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_SET
    linkageType: ''
    returnType: char
    signature: char *verify_close(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3379,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3379,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3383
      start: 3377
    functionDepth: 1
    functionLinenumber: 3377
    functionLinenumberEnd: 3383
    functionName: verify_resize
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_SET
    linkageType: ''
    returnType: char
    signature: char *verify_resize(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS1
      Src: /src/cryptsetup/src/cryptsetup.c:3387,1
    - Dst: luksType
      Src: /src/cryptsetup/src/cryptsetup.c:3387,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3387,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3388,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3390,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3390,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3391,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3393,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3393,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3394,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3396,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3396,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3397,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3400
      start: 3385
    functionDepth: 1
    functionLinenumber: 3385
    functionLinenumberEnd: 3400
    functionName: verify_reencrypt
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - luksType
    - isLUKS1
    - _
    - ARG_SET
    linkageType: ''
    returnType: char
    signature: char *verify_reencrypt(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3404,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3404,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3408
      start: 3402
    functionDepth: 1
    functionLinenumber: 3402
    functionLinenumberEnd: 3408
    functionName: verify_config
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - ARG_INT32
    - _
    - ARG_SET
    linkageType: ''
    returnType: char
    signature: char *verify_config(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3412,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3412,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3413,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3415,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3415,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3416,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3418,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3418,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3419,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3422
      start: 3410
    functionDepth: 1
    functionLinenumber: 3410
    functionLinenumberEnd: 3422
    functionName: verify_format
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_SET
    linkageType: ''
    returnType: char
    signature: char *verify_format(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3426,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3426,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3427,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3430
      start: 3424
    functionDepth: 1
    functionLinenumber: 3424
    functionLinenumberEnd: 3430
    functionName: verify_addkey
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_SET
    - ARG_UINT32
    linkageType: ''
    returnType: char
    signature: char *verify_addkey(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3434,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3434,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3438
      start: 3432
    functionDepth: 1
    functionLinenumber: 3432
    functionLinenumberEnd: 3438
    functionName: verify_luksDump
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - ARG_INT32
    - _
    - ARG_SET
    linkageType: ''
    returnType: char
    signature: char *verify_luksDump(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3442,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3443,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3444,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3445,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3446,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3447,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3449,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3449,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3450,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3452,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3453,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3453,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3454,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3456,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3457,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3458,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3459,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3460,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3463,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3464,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3465,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3466,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3467,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3471
      start: 3440
    functionDepth: 1
    functionLinenumber: 3440
    functionLinenumberEnd: 3471
    functionName: verify_token
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - strcmp
    - _
    - ARG_SET
    - ARG_INT32
    linkageType: ''
    returnType: char
    signature: char *verify_token(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: tools_package_version
      Src: /src/cryptsetup/src/cryptsetup.c:3523,1
    - Dst: poptPrintHelp
      Src: /src/cryptsetup/src/cryptsetup.c:3524,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3526,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3526,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3530,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3530,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3530,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3532,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3532,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3536,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3536,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/cryptsetup.c:3541,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3543,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3543,1
    - Dst: crypt_get_default_type
      Src: /src/cryptsetup/src/cryptsetup.c:3544,1
    - Dst: crypt_token_external_path
      Src: /src/cryptsetup/src/cryptsetup.c:3546,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3548,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3548,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3549,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3549,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3551,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3551,1
    - Dst: crypt_get_pbkdf_default
      Src: /src/cryptsetup/src/cryptsetup.c:3553,1
    - Dst: crypt_get_pbkdf_default
      Src: /src/cryptsetup/src/cryptsetup.c:3554,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3555,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3555,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3566,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3566,1
    - Dst: DEFAULT_CIPHER
      Src: /src/cryptsetup/src/cryptsetup.c:3571,1
    - Dst: DEFAULT_CIPHER
      Src: /src/cryptsetup/src/cryptsetup.c:3572,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3575,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3575,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/cryptsetup.c:3577,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/cryptsetup.c:3578,1
    - Dst: exit
      Src: /src/cryptsetup/src/cryptsetup.c:3579,1
    - Dst: tools_package_version
      Src: /src/cryptsetup/src/cryptsetup.c:3581,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/cryptsetup.c:3582,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/cryptsetup.c:3583,1
    - Dst: exit
      Src: /src/cryptsetup/src/cryptsetup.c:3584,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3586,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 5
    argNames:
    - popt_context
    - reason
    - key
    - arg
    - data
    argTypes:
    - poptContext
    - enum poptCallbackReason
    - struct poptOption*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3587
      start: 3511
    functionDepth: 1
    functionLinenumber: 3511
    functionLinenumberEnd: 3587
    functionName: help
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 1
    functionsReached:
    - _
    - tools_cleanup
    - log_std
    - crypt_get_dir
    - crypt_get_default_type
    - exit
    - tools_package_version
    - usage
    - poptPrintHelp
    - crypt_get_pbkdf_default
    - crypt_token_external_path
    - poptFreeContext
    - DEFAULT_CIPHER
    linkageType: ''
    returnType: void
    signature: "void help(poptContext popt_context,\n\t\t enum poptCallbackReason
      reason __attribute__((unused)),\n\t\t struct poptOption *key,\n\t\t const char
      *arg __attribute__((unused)),\n\t\t void *data __attribute__((unused)))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/src/cryptsetup.c:3593,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3593,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3595,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - action
    - popt_context
    argTypes:
    - struct action_type*
    - poptContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3596
      start: 3589
    functionDepth: 1
    functionLinenumber: 3589
    functionLinenumberEnd: 3596
    functionName: help_args
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - poptGetInvocationName
    - _
    - snprintf
    - usage
    linkageType: ''
    returnType: void
    signature: void help_args(struct action_type *action, poptContext popt_context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/cryptsetup.c:3602,1
    - Dst: set_int_handler
      Src: /src/cryptsetup/src/cryptsetup.c:3604,1
    - Dst: struct action_type*::handler
      Src: /src/cryptsetup/src/cryptsetup.c:3605,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/cryptsetup.c:3610,1
    - Dst: show_status
      Src: /src/cryptsetup/src/cryptsetup.c:3612,1
    - Dst: translate_errno
      Src: /src/cryptsetup/src/cryptsetup.c:3613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - action
    argTypes:
    - struct action_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3614
      start: 3598
    functionDepth: 1
    functionLinenumber: 3598
    functionLinenumberEnd: 3614
    functionName: run_action
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 1
    functionsReached:
    - set_int_handler
    - translate_errno
    - show_status
    - check_signal
    - log_dbg
    - struct action_type*::handler
    linkageType: ''
    returnType: int
    signature: int run_action(struct action_type *action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/cryptsetup.c:3618,1
    - Dst: struct action_type*::verify
      Src: /src/cryptsetup/src/cryptsetup.c:3620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - action
    argTypes:
    - struct action_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3621
      start: 3616
    functionDepth: 0
    functionLinenumber: 3616
    functionLinenumberEnd: 3621
    functionName: verify_action
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - struct action_type*::verify
    linkageType: ''
    returnType: char
    signature: char *verify_action(struct action_type *action)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 1
    argNames:
    - arg_id
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3628
      start: 3623
    functionDepth: 0
    functionLinenumber: 3623
    functionLinenumberEnd: 3628
    functionName: needs_size_conversion
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool needs_size_conversion(unsigned arg_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3632,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3633,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3633,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - popt_context
    argTypes:
    - poptContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3635
      start: 3630
    functionDepth: 1
    functionLinenumber: 3630
    functionLinenumberEnd: 3635
    functionName: check_key_slot_value
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - poptGetInvocationName
    - ARG_INT32
    - _
    - usage
    linkageType: ''
    returnType: void
    signature: void check_key_slot_value(poptContext popt_context)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: tools_parse_arg_value
      Src: /src/cryptsetup/src/cryptsetup.c:3644,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:3657,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3658,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/cryptsetup.c:3658,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3659,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:3660,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3661,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3661,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3662,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:3665,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3666,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3666,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3667,1
    - Dst: tools_is_stdin
      Src: /src/cryptsetup/src/cryptsetup.c:3670,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3670,1
    - Dst: free
      Src: /src/cryptsetup/src/cryptsetup.c:3671,1
    - Dst: strdup
      Src: /src/cryptsetup/src/cryptsetup.c:3672,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3672,1
    - Dst: strdup
      Src: /src/cryptsetup/src/cryptsetup.c:3674,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3674,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3678,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3679,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3680,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3681,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3684,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3686,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3687,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3688,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3692,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3693,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/cryptsetup.c:3693,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3694,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3695,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3696,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3697,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3698,1
    - Dst: check_key_slot_value
      Src: /src/cryptsetup/src/cryptsetup.c:3701,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3704,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3705,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/cryptsetup.c:3705,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3706,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3707,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3708,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3709,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3710,1
    - Dst: strdup
      Src: /src/cryptsetup/src/cryptsetup.c:3714,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3714,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/cryptsetup.c:3716,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3716,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3718,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3720,1
    - Dst: strdup
      Src: /src/cryptsetup/src/cryptsetup.c:3725,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3725,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/cryptsetup.c:3727,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3727,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3729,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3731,1
    - Dst: strdup
      Src: /src/cryptsetup/src/cryptsetup.c:3736,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3736,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/cryptsetup.c:3739,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3739,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3741,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3743,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:3747,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3748,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3748,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3749,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:3750,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3751,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3751,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3752,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/cryptsetup.c:3753,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3756,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3757,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3758,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/cryptsetup.c:3758,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3759,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3760,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3761,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3764,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3764,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3765,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3765,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3766,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3766,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3767,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3768,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3769,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 91
    argCount: 5
    argNames:
    - popt_context
    - reason
    - key
    - arg
    - data
    argTypes:
    - poptContext
    - enum poptCallbackReason
    - struct poptOption*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3772
      start: 3637
    functionDepth: 2
    functionLinenumber: 3637
    functionLinenumberEnd: 3772
    functionName: basic_options_cb
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - _
    - free
    - snprintf
    - usage
    - ARG_STR
    - ARG_UINT64
    - tools_parse_arg_value
    - poptGetInvocationName
    - tools_is_stdin
    - ARG_UINT32
    - strdup
    - strcmp
    - check_key_slot_value
    - poptStrerror
    linkageType: ''
    returnType: void
    signature: "void basic_options_cb(poptContext popt_context,\n\t\t enum poptCallbackReason
      reason __attribute__((unused)),\n\t\t struct poptOption *key,\n\t\t const char
      *arg,\n\t\t void *data __attribute__((unused)))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/cryptsetup.c:3778,1
    - Dst: ARG_INIT_ALIAS
      Src: /src/cryptsetup/src/cryptsetup.c:3780,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3781
      start: 3774
    functionDepth: 1
    functionLinenumber: 3774
    functionLinenumberEnd: 3781
    functionName: cryptsetup_init_arg_aliases
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 0
    functionsReached:
    - ARRAY_SIZE
    - ARG_INIT_ALIAS
    linkageType: ''
    returnType: void
    signature: void cryptsetup_init_arg_aliases(void)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: N_
      Src: /src/cryptsetup/src/cryptsetup.c:3787,1
    - Dst: N_
      Src: /src/cryptsetup/src/cryptsetup.c:3788,1
    - Dst: N_
      Src: /src/cryptsetup/src/cryptsetup.c:3789,1
    - Dst: ARG
      Src: /src/cryptsetup/src/cryptsetup.c:3794,1
    - Dst: N_
      Src: /src/cryptsetup/src/cryptsetup.c:3800,1
    - Dst: cryptsetup_init_arg_aliases
      Src: /src/cryptsetup/src/cryptsetup.c:3810,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/src/cryptsetup.c:3812,1
    - Dst: setlocale
      Src: /src/cryptsetup/src/cryptsetup.c:3814,1
    - Dst: bindtextdomain
      Src: /src/cryptsetup/src/cryptsetup.c:3815,1
    - Dst: textdomain
      Src: /src/cryptsetup/src/cryptsetup.c:3816,1
    - Dst: poptGetContext
      Src: /src/cryptsetup/src/cryptsetup.c:3818,1
    - Dst: exit
      Src: /src/cryptsetup/src/cryptsetup.c:3820,1
    - Dst: poptSetOtherOptionHelp
      Src: /src/cryptsetup/src/cryptsetup.c:3822,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3823,1
    - Dst: poptGetNextOpt
      Src: /src/cryptsetup/src/cryptsetup.c:3825,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3828,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/cryptsetup.c:3828,1
    - Dst: poptBadOption
      Src: /src/cryptsetup/src/cryptsetup.c:3829,1
    - Dst: poptGetArg
      Src: /src/cryptsetup/src/cryptsetup.c:3831,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3832,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3832,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3833,1
    - Dst: poptGetArgs
      Src: /src/cryptsetup/src/cryptsetup.c:3836,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3846,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3855,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3858,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3861,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3864,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3867,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3870,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3873,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3875,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3877,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3879,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3880,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3881,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3882,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3883,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3884,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3885,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3887,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3889,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3890,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3893,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3896,1
    - Dst: ARG_SET_TRUE
      Src: /src/cryptsetup/src/cryptsetup.c:3898,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3899,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3900,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3903,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3907,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3911,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3911,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3912,1
    - Dst: help_args
      Src: /src/cryptsetup/src/cryptsetup.c:3915,1
    - Dst: tools_check_args
      Src: /src/cryptsetup/src/cryptsetup.c:3918,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/cryptsetup.c:3918,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3920,1
    - Dst: ARG_SET_INT32
      Src: /src/cryptsetup/src/cryptsetup.c:3921,1
    - Dst: atoi
      Src: /src/cryptsetup/src/cryptsetup.c:3921,1
    - Dst: check_key_slot_value
      Src: /src/cryptsetup/src/cryptsetup.c:3922,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3925,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/cryptsetup.c:3926,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3928,1
    - Dst: log_err
      Src: /src/cryptsetup/src/cryptsetup.c:3929,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3929,1
    - Dst: ARG_SET_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3931,1
    - Dst: strdup
      Src: /src/cryptsetup/src/cryptsetup.c:3931,1
    - Dst: strcmp_or_null
      Src: /src/cryptsetup/src/cryptsetup.c:3934,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3935,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3935,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3936,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3938,1
    - Dst: crypt_parse_pbkdf
      Src: /src/cryptsetup/src/cryptsetup.c:3938,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/cryptsetup.c:3938,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3939,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3940,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3941,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3943,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3943,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3944,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3945,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3946,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3948,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3948,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3949,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3950,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3951,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3953,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3953,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3953,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3954,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3955,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3956,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3958,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3958,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3959,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3960,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3961,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3963,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3963,1
    - Dst: crypt_set_debug_level
      Src: /src/cryptsetup/src/cryptsetup.c:3964,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3964,1
    - Dst: dbg_version_and_cmd
      Src: /src/cryptsetup/src/cryptsetup.c:3965,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3970,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3970,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3971,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3971,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3972,1
    - Dst: verify_action
      Src: /src/cryptsetup/src/cryptsetup.c:3974,1
    - Dst: usage
      Src: /src/cryptsetup/src/cryptsetup.c:3976,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/cryptsetup.c:3976,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3978,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3979,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3979,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/cryptsetup.c:3980,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/cryptsetup.c:3981,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3985,1
    - Dst: crypt_volume_key_keyring
      Src: /src/cryptsetup/src/cryptsetup.c:3986,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3988,1
    - Dst: crypt_token_external_disable
      Src: /src/cryptsetup/src/cryptsetup.c:3989,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/cryptsetup.c:3991,1
    - Dst: crypt_metadata_locking
      Src: /src/cryptsetup/src/cryptsetup.c:3991,1
    - Dst: log_std
      Src: /src/cryptsetup/src/cryptsetup.c:3992,1
    - Dst: _
      Src: /src/cryptsetup/src/cryptsetup.c:3992,1
    - Dst: run_action
      Src: /src/cryptsetup/src/cryptsetup.c:3995,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/cryptsetup.c:3998,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/cryptsetup.c:3999,1
    CyclomaticComplexity: 64
    EdgeCount: 64
    ICount: 141
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4001
      start: 3783
    functionDepth: 2
    functionLinenumber: 3783
    functionLinenumberEnd: 4001
    functionName: main
    functionSourceFile: /src/cryptsetup/src/cryptsetup.c
    functionUses: 3
    functionsReached:
    - poptBadOption
    - poptGetContext
    - verify_action
    - crypt_volume_key_keyring
    - check_key_slot_value
    - poptStrerror
    - dbg_version_and_cmd
    - N_
    - cryptsetup_init_arg_aliases
    - exit
    - crypt_metadata_locking
    - poptGetNextOpt
    - crypt_set_log_callback
    - bindtextdomain
    - strdup
    - strcmp
    - ARG
    - ARG_SET_INT32
    - ARG_SET_TRUE
    - tools_cleanup
    - log_std
    - usage
    - poptGetArgs
    - ARG_STR
    - log_err
    - run_action
    - help_args
    - crypt_parse_pbkdf
    - poptFreeContext
    - atoi
    - poptGetArg
    - tools_check_args
    - _
    - setlocale
    - strcmp_or_null
    - textdomain
    - crypt_set_debug_level
    - ARRAY_SIZE
    - ARG_SET
    - poptSetOtherOptionHelp
    - poptGetInvocationName
    - crypt_token_external_disable
    - ARG_SET_STR
    linkageType: ''
    returnType: int
    signature: int main(int argc, const char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:71,1
    - Dst: tool_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - level
    - msg
    - usrptr
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: _quiet_log
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - tool_log
    - ARG_SET
    linkageType: ''
    returnType: void
    signature: void _quiet_log(int level, const char *msg, void *usrptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fpathconf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: alignment
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - fpathconf
    linkageType: ''
    returnType: int
    signature: int alignment(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: pagesize
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: size_t
    signature: size_t pagesize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: hdr_device
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *hdr_device(const struct reenc_ctx *rc)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: pagesize
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:104,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:107,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:108,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:108,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:113,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:113,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:116,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:116,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:120,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:120,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:129,1
    - Dst: alignment
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:129,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:130,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:130,1
    - Dst: read_buffer
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:135,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:137,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:137,1
    - Dst: memcpy
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:143,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:144,1
    - Dst: memcmp
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:146,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:148,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:148,1
    - Dst: memcpy
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:149,1
    - Dst: memcmp
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:152,1
    - Dst: strndup
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:154,1
    - Dst: lseek
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:160,1
    - Dst: write_buffer
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:162,1
    - Dst: fsync
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:163,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:164,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:164,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:171,1
    - Dst: memset
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:174,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:175,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:176,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 68
    argCount: 4
    argNames:
    - rc
    - device
    - set_magic
    - exclusive
    argTypes:
    - struct reenc_ctx*
    - char*
    - header_magic
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 178
    functionName: device_check
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - memset
    - read_buffer
    - memcpy
    - posix_memalign
    - write_buffer
    - open
    - pagesize
    - log_verbose
    - free
    - log_dbg
    - close
    - fsync
    - memcmp
    - log_err
    - S_ISBLK
    - be16_to_cpu
    - _
    - lseek
    - alignment
    - strndup
    - stat
    linkageType: ''
    returnType: int
    signature: int device_check(struct reenc_ctx *rc, const char *device, header_magic
      set_magic, bool exclusive)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:184,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:187,1
    - Dst: posix_fallocate
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:188,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - new_file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 194
    functionName: create_empty_header
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - open
    - posix_fallocate
    - close
    linkageType: ''
    returnType: int
    signature: int create_empty_header(const char *new_file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:200,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:201,1
    - Dst: lseek
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:208,1
    - Dst: write_buffer
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:211,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:213,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 218
    functionName: write_log
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - memset
    - lseek
    - snprintf
    - _
    - write_buffer
    - log_err
    linkageType: ''
    returnType: int
    signature: int write_log(struct reenc_ctx *rc)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:230,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:232,1
    - Dst: sscanf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:235,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:236,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:237,1
    - Dst: sscanf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:240,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:241,1
    - Dst: sscanf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:243,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:244,1
    - Dst: sscanf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:246,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:247,1
    - Dst: sscanf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:249,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:250,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 2
    argNames:
    - rc
    - line
    argTypes:
    - struct reenc_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 260
    functionName: parse_line_log
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - strcmp
    - sscanf
    linkageType: ''
    returnType: int
    signature: int parse_line_log(struct reenc_ctx *rc, const char *line)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:266,1
    - Dst: read_buffer
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:267,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:268,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:268,1
    - Dst: strchr
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:275,1
    - Dst: parse_line_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:278,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:279,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:279,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 288
    functionName: parse_log
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - read_buffer
    - _
    - lseek
    - log_err
    - parse_line_log
    - strchr
    linkageType: ''
    returnType: int
    signature: int parse_log(struct reenc_ctx *rc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:292,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 296
    functionName: close_log
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - close
    linkageType: ''
    returnType: void
    signature: void close_log(struct reenc_ctx *rc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:300,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:302,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:304,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:307,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:307,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:308,1
    - Dst: write_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:315,1
    - Dst: parse_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:319,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 320
    functionName: open_log
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - _
    - log_std
    - write_log
    - ARG_SET
    - log_dbg
    - parse_log
    - open
    linkageType: ''
    returnType: int
    signature: int open_log(struct reenc_ctx *rc)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:329,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:350,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:351,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:354,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:354,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:355,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:356,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:360,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:361,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:364,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:364,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:365,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:366,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:371,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:372,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:374,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:374,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 376
    functionName: activate_luks_headers
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - log_verbose
    - crypt_free
    - log_dbg
    - log_err
    - crypt_activate_by_passphrase
    - ARG_INT32
    - crypt_init_data_device
    linkageType: ''
    returnType: int
    signature: int activate_luks_headers(struct reenc_ctx *rc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:386,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:388,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:391,1
    - Dst: crypt_keyslot_add_by_key
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:394,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:399,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:401,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - rc
    - keyslot
    - cd_old
    - cd_new
    argTypes:
    - struct reenc_ctx*
    - int
    - struct crypt_device*
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 405
    functionName: create_new_keyslot
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_keyslot_add_by_volume_key
    - crypt_volume_key_get
    - crypt_safe_free
    - crypt_keyslot_add_by_key
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: "int create_new_keyslot(struct reenc_ctx *rc, int keyslot,\n\t\t\t
      \     struct crypt_device *cd_old,\n\t\t\t      struct crypt_device *cd_new)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:418,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:421,1
    - Dst: crypt_set_rng_type
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:422,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:423,1
    - Dst: crypt_set_rng_type
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:424,1
    - Dst: set_pbkdf_params
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:426,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:428,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:428,1
    - Dst: crypt_set_data_offset
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:432,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:434,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:434,1
    - Dst: crypt_set_metadata_size
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:438,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:440,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:440,1
    - Dst: crypt_format
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:444,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:445,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:448,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:448,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:450,1
    - Dst: create_new_keyslot
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:454,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:455,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:458,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:462,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 10
    argNames:
    - rc
    - cd_old
    - cipher
    - cipher_mode
    - uuid
    - key
    - key_size
    - metadata_size
    - keyslots_size
    - params
    argTypes:
    - struct reenc_ctx*
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - int
    - uint64_t
    - uint64_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 407
    functionDepth: 2
    functionLinenumber: 407
    functionLinenumberEnd: 464
    functionName: create_new_header
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - _
    - log_verbose
    - crypt_keyslot_max
    - check_signal
    - crypt_set_data_offset
    - crypt_set_metadata_size
    - ARG_SET
    - crypt_free
    - log_err
    - create_new_keyslot
    - set_pbkdf_params
    - crypt_set_rng_type
    - crypt_init
    - tools_keyslot_msg
    - crypt_format
    linkageType: ''
    returnType: int
    signature: "int create_new_header(struct reenc_ctx *rc, struct crypt_device *cd_old,\n\t\t\t
      \    const char *cipher, const char *cipher_mode,\n\t\t\t     const char *uuid,\n\t\t\t
      \    const char *key, int key_size,\n\t\t\t     uint64_t metadata_size,\n\t\t\t
      \    uint64_t keyslots_size,\n\t\t\t     void *params)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:476,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:476,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:478,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:478,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:479,1
    - Dst: crypt_header_backup
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:482,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:485,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:485,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:491,1
    - Dst: ROUND_SECTOR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:491,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:491,1
    - Dst: create_empty_header
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:493,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:496,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:499,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:500,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:500,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:502,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:502,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:507,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:507,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:507,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:509,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:510,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:511,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:512,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:517,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:519,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:520,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:521,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:521,1
    - Dst: create_new_header
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:527,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:528,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:528,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:529,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:529,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:530,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:538,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:539,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:541,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:541,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 53
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 466
    functionDepth: 3
    functionLinenumber: 466
    functionLinenumberEnd: 543
    functionName: backup_luks_headers
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - crypt_safe_alloc
    - crypt_header_backup
    - crypt_free
    - ARG_UINT32
    - create_new_header
    - log_verbose
    - log_dbg
    - crypt_get_volume_key_size
    - crypt_parse_name_and_mode
    - crypt_volume_key_get
    - ARG_STR
    - crypt_safe_free
    - log_err
    - hdr_device
    - tools_read_vk
    - crypt_get_data_offset
    - crypt_get_uuid
    - _
    - crypt_get_cipher
    - ARG_SET
    - ARG_UINT64
    - crypt_get_cipher_mode
    - ROUND_SECTOR
    - crypt_init
    - create_empty_header
    linkageType: ''
    returnType: int
    signature: int backup_luks_headers(struct reenc_ctx *rc)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:554,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:559,1
    - Dst: ARG_SET_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:560,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:562,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:563,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:563,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:565,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:565,1
    - Dst: create_empty_header
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:570,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:574,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:578,1
    - Dst: crypt_format
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:582,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:583,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:584,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:588,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:590,1
    - Dst: create_empty_header
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:600,1
    - Dst: ROUND_SECTOR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:604,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:604,1
    - Dst: create_new_header
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:605,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:606,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:607,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:609,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:614,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 546
    functionDepth: 3
    functionLinenumber: 546
    functionLinenumberEnd: 616
    functionName: backup_fake_header
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - create_new_header
    - crypt_keyslot_add_by_volume_key
    - _
    - check_signal
    - ARG_STR
    - ARG_SET
    - ARG_SET_UINT32
    - ARG_UINT32
    - log_dbg
    - log_err
    - ROUND_SECTOR
    - ARG_UINT64
    - crypt_free
    - crypt_parse_name_and_mode
    - crypt_init
    - create_empty_header
    - crypt_format
    linkageType: ''
    returnType: int
    signature: int backup_fake_header(struct reenc_ctx *rc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:622,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:624,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:626,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:628,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:630,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:631,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 632
    functionName: remove_headers
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - crypt_deactivate
    - crypt_free
    - log_dbg
    - crypt_set_log_callback
    - crypt_init
    linkageType: ''
    returnType: void
    signature: void remove_headers(struct reenc_ctx *rc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:640,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:640,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:646,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:647,1
    - Dst: rename
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:649,1
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:652,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:654,1
    - Dst: posix_fallocate
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:656,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:657,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:662,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:662,1
    - Dst: crypt_header_restore
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:664,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:667,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:670,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:670,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:670,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:672,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:672,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:672,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 676
    functionName: restore_luks_header
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - stat
    - _
    - log_verbose
    - close
    - ARG_SET
    - crypt_free
    - log_dbg
    - crypt_init
    - log_err
    - hdr_device
    - posix_fallocate
    - rename
    - open
    - crypt_header_restore
    linkageType: ''
    returnType: int
    signature: int restore_luks_header(struct reenc_ctx *rc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:685,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:686,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:687,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:688,1
    - Dst: tools_get_device_name
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:689,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:692,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:693,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:694,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:696,1
    - Dst: lseek
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:698,1
    - Dst: lseek
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:699,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:700,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:700,1
    - Dst: tools_progress
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:706,1
    - Dst: write_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:708,1
    - Dst: read_buffer
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:714,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:716,1
    - Dst: write_buffer
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:721,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:723,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:729,1
    - Dst: write_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:729,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:732,1
    - Dst: fsync
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:732,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:733,1
    - Dst: tools_progress
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:739,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:744,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 47
    argCount: 6
    argNames:
    - rc
    - fd_old
    - fd_new
    - block_size
    - buf
    - bytes
    argTypes:
    - struct reenc_ctx*
    - int
    - int
    - size_t
    - void*
    - uint64_t*
    assertStmts:
    - condition: (rc)
      pos:
        line_end: 691
        line_start: 691
        source_file: /src/cryptsetup/src/utils_reencrypt_luks1.c
    - condition: (buf)
      pos:
        line_end: 693
        line_start: 693
        source_file: /src/cryptsetup/src/utils_reencrypt_luks1.c
    - condition: (bytes)
      pos:
        line_end: 692
        line_start: 692
        source_file: /src/cryptsetup/src/utils_reencrypt_luks1.c
    constantsTouched: []
    func_position:
      end: 746
      start: 678
    functionDepth: 2
    functionLinenumber: 678
    functionLinenumberEnd: 746
    functionName: copy_data_forward
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - fsync
    - read_buffer
    - _
    - lseek
    - free
    - tools_progress
    - ARG_SET
    - write_buffer
    - tools_get_device_name
    - assert
    - ARG_UINT32
    - log_dbg
    - log_err
    - write_log
    linkageType: ''
    returnType: int
    signature: "int copy_data_forward(struct reenc_ctx *rc, int fd_old, int fd_new,\n\t\t\t
      \    size_t block_size, void *buf, uint64_t *bytes)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:756,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:757,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:758,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:759,1
    - Dst: tools_get_device_name
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:760,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:763,1
    - Dst: tools_progress
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:774,1
    - Dst: write_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:776,1
    - Dst: lseek
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:791,1
    - Dst: lseek
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:792,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:793,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:793,1
    - Dst: read_buffer
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:797,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:799,1
    - Dst: write_buffer
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:804,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:806,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:812,1
    - Dst: write_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:812,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:815,1
    - Dst: fsync
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:815,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:816,1
    - Dst: tools_progress
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:822,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:827,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 57
    argCount: 6
    argNames:
    - rc
    - fd_old
    - fd_new
    - block_size
    - buf
    - bytes
    argTypes:
    - struct reenc_ctx*
    - int
    - int
    - size_t
    - void*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 748
    functionDepth: 2
    functionLinenumber: 748
    functionLinenumberEnd: 829
    functionName: copy_data_backward
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - fsync
    - read_buffer
    - _
    - lseek
    - free
    - tools_progress
    - ARG_SET
    - write_buffer
    - tools_get_device_name
    - log_dbg
    - ARG_UINT32
    - log_err
    - write_log
    linkageType: ''
    returnType: int
    signature: "int copy_data_backward(struct reenc_ctx *rc, int fd_old, int fd_new,\n\t\t\t
      \     size_t block_size, void *buf, uint64_t *bytes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - size
    - offset
    - usrptr
    argTypes:
    - uint64_t
    - uint64_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 840
    functionName: detect_interrupt
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - check_signal
    linkageType: ''
    returnType: int
    signature: "int detect_interrupt(uint64_t size __attribute__((unused)),\n\t\t\t
      \ uint64_t offset __attribute__((unused)),\n\t\t\t  void *usrptr __attribute__((unused)))"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:845,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:851,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:853,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:853,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:855,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:855,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:859,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:859,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:861,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:861,1
    - Dst: ioctl
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:865,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:866,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:866,1
    - Dst: ioctl
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:870,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:871,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:871,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:875,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:876,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:882,1
    - Dst: alignment
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:882,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:883,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:883,1
    - Dst: set_int_handler
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:888,1
    - Dst: copy_data_forward
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:891,1
    - Dst: copy_data_backward
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:893,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:900,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:901,1
    - Dst: crypt_wipe
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:902,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:904,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:906,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:910,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:913,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:913,1
    - Dst: write_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:915,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:918,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:920,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:921,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 59
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 842
    functionDepth: 3
    functionLinenumber: 842
    functionLinenumberEnd: 923
    functionName: copy_data
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - copy_data_forward
    - set_int_block
    - posix_memalign
    - crypt_free
    - ARG_UINT32
    - open
    - free
    - log_dbg
    - crypt_wipe
    - close
    - write_log
    - log_err
    - set_int_handler
    - _
    - ioctl
    - alignment
    - ARG_SET
    - ARG_UINT64
    - crypt_init
    - copy_data_backward
    linkageType: ''
    returnType: int
    signature: int copy_data(struct reenc_ctx *rc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:931,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:933,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:934,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:938,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:938,1
    - Dst: uuid_parse
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:939,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:939,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:941,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:941,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:943,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:943,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:949,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:949,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:951,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:952,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:954,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:954,1
    - Dst: device_check
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:957,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:957,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:959,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 925
    functionDepth: 2
    functionLinenumber: 925
    functionLinenumberEnd: 961
    functionName: initialize_uuid
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - crypt_load
    - _
    - ARG_STR
    - ARG_SET
    - crypt_free
    - log_dbg
    - log_err
    - crypt_set_log_callback
    - strdup
    - uuid_parse
    - hdr_device
    - device_check
    - crypt_init
    linkageType: ''
    returnType: int
    signature: int initialize_uuid(struct reenc_ctx *rc)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:973,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:979,1
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:981,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:986,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:993,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:999,1
    - Dst: tools_keyslot_msg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1007,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1014,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 6
    argNames:
    - rc
    - cd
    - msg
    - slot_to_check
    - check
    - verify
    argTypes:
    - struct reenc_ctx*
    - struct crypt_device*
    - char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 963
    functionDepth: 6
    functionLinenumber: 963
    functionLinenumberEnd: 1021
    functionName: init_passphrase1
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - crypt_safe_free
    - ARG_UINT32
    - tools_get_key
    - crypt_activate_by_passphrase
    - tools_passphrase_msg
    - tools_keyslot_msg
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: "int init_passphrase1(struct reenc_ctx *rc, struct crypt_device *cd,\n\t\t\t
      \   const char *msg, int slot_to_check, int check, int verify)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tools_get_key
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1029,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1029,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1030,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1030,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1036,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1043,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1044,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1045,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1045,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1054,1
    - Dst: tools_passphrase_msg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1055,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - rc
    - cd
    - slot_check
    argTypes:
    - struct reenc_ctx*
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1023
    functionDepth: 6
    functionLinenumber: 1023
    functionLinenumberEnd: 1066
    functionName: init_keyfile
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_STR
    - ARG_UINT64
    - ARG_UINT32
    - log_err
    - crypt_safe_free
    - tools_get_key
    - crypt_activate_by_passphrase
    - tools_passphrase_msg
    - ARG_INT32
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: int init_keyfile(struct reenc_ctx *rc, struct crypt_device *cd, int
      slot_check)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1074,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1077,1
    - Dst: init_keyfile
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1078,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1078,1
    - Dst: init_passphrase1
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1080,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1080,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1080,1
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1084,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1085,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1086,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1090,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1091,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1092,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1092,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1094,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1094,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1096,1
    - Dst: init_keyfile
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1097,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1097,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1099,1
    - Dst: init_passphrase1
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1101,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1101,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1102,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1103,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1103,1
    - Dst: init_passphrase1
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1104,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1113,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 2
    argNames:
    - rc
    - device
    argTypes:
    - struct reenc_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1068
    functionDepth: 7
    functionLinenumber: 1068
    functionLinenumberEnd: 1115
    functionName: initialize_passphrase
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - snprintf
    - crypt_keyslot_max
    - init_passphrase1
    - init_keyfile
    - ARG_SET
    - crypt_free
    - log_dbg
    - ARG_INT32
    - crypt_init_data_device
    linkageType: ''
    returnType: int
    signature: int initialize_passphrase(struct reenc_ctx *rc, const char *device)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1119,1
    - Dst: memset
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1121,1
    - Dst: strndup
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1127,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1130,1
    - Dst: strndup
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1130,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1130,1
    - Dst: device_check
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1133,1
    - Dst: initialize_uuid
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1136,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1137,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1137,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1141,1
    - Dst: ARG_INT32
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1142,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1142,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1143,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1143,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1148,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1151,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1154,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1159,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1160,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1162,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1163,1
    - Dst: remove_headers
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1166,1
    - Dst: open_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1168,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1169,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1169,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1174,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1175,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1175,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1180,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1187,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1189,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 2
    argNames:
    - rc
    - device
    argTypes:
    - struct reenc_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1117
    functionDepth: 3
    functionLinenumber: 1117
    functionLinenumberEnd: 1196
    functionName: initialize_context
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - memset
    - _
    - snprintf
    - crypt_keyslot_max
    - crypt_get_dir
    - remove_headers
    - ARG_STR
    - open_log
    - initialize_uuid
    - ARG_SET
    - log_dbg
    - log_err
    - device_check
    - strndup
    - ARG_INT32
    linkageType: ''
    returnType: int
    signature: int initialize_context(struct reenc_ctx *rc, const char *device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1202,1
    - Dst: close_log
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1204,1
    - Dst: remove_headers
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1205,1
    - Dst: unlink
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1208,1
    - Dst: unlink
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1209,1
    - Dst: unlink
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1210,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1214,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1216,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1217,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct reenc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1198
    functionDepth: 2
    functionLinenumber: 1198
    functionLinenumberEnd: 1219
    functionName: destroy_context
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 0
    functionsReached:
    - free
    - close_log
    - remove_headers
    - unlink
    - crypt_safe_free
    - log_dbg
    linkageType: ''
    returnType: void
    signature: void destroy_context(struct reenc_ctx *rc)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1226,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1230,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1231,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1231,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1232,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1232,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1233,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1233,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1234,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1234,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1234,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1235,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1235,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1235,1
    - Dst: set_int_handler
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1238,1
    - Dst: initialize_context
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1240,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1243,1
    - Dst: initialize_passphrase
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1246,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1246,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1249,1
    - Dst: backup_fake_header
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1252,1
    - Dst: backup_luks_headers
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1255,1
    - Dst: backup_fake_header
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1259,1
    - Dst: device_check
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1261,1
    - Dst: hdr_device
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1261,1
    - Dst: initialize_passphrase
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1265,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1265,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1269,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1270,1
    - Dst: activate_luks_headers
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1271,1
    - Dst: copy_data
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1274,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1277,1
    - Dst: restore_luks_header
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1281,1
    - Dst: destroy_context
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1285,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1286,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 54
    argCount: 1
    argNames:
    - device
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1221
    functionDepth: 8
    functionLinenumber: 1221
    functionLinenumberEnd: 1289
    functionName: reencrypt_luks1
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 3
    functionsReached:
    - set_int_handler
    - _
    - log_verbose
    - activate_luks_headers
    - destroy_context
    - free
    - ARG_STR
    - copy_data
    - ARG_SET
    - malloc
    - log_dbg
    - restore_luks_header
    - device_check
    - hdr_device
    - initialize_passphrase
    - backup_fake_header
    - initialize_context
    - backup_luks_headers
    linkageType: ''
    returnType: int
    signature: int reencrypt_luks1(const char *device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1295,1
    - Dst: pagesize
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1295,1
    - Dst: device_check
      Src: /src/cryptsetup/src/utils_reencrypt_luks1.c:1298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - device
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1291
    functionDepth: 2
    functionLinenumber: 1291
    functionLinenumberEnd: 1299
    functionName: reencrypt_luks1_in_progress
    functionSourceFile: /src/cryptsetup/src/utils_reencrypt_luks1.c
    functionUses: 1
    functionsReached:
    - pagesize
    - device_check
    - stat
    linkageType: ''
    returnType: int
    signature: int reencrypt_luks1_in_progress(const char *device)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_key_description.c:18,1
    - Dst: assert
      Src: /src/cryptsetup/src/utils_key_description.c:19,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/utils_key_description.c:23,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_key_description.c:25,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - key_description
    - ret_key_description
    argTypes:
    - char*
    - char**
    assertStmts:
    - condition: (key_description)
      pos:
        line_end: 17
        line_start: 17
        source_file: /src/cryptsetup/src/utils_key_description.c
    - condition: (ret_key_description)
      pos:
        line_end: 18
        line_start: 18
        source_file: /src/cryptsetup/src/utils_key_description.c
    constantsTouched: []
    func_position:
      end: 30
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 30
    functionName: tools_parse_vk_description
    functionSourceFile: /src/cryptsetup/src/utils_key_description.c
    functionUses: 5
    functionsReached:
    - asprintf
    - strdup
    - assert
    linkageType: ''
    returnType: int
    signature: int tools_parse_vk_description(const char *key_description, char **ret_key_description)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/cryptsetup/src/utils_key_description.c:45,1
    - Dst: strstr
      Src: /src/cryptsetup/src/utils_key_description.c:54,1
    - Dst: strstr
      Src: /src/cryptsetup/src/utils_key_description.c:63,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_key_description.c:66,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_key_description.c:66,1
    - Dst: strtol
      Src: /src/cryptsetup/src/utils_key_description.c:70,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_key_description.c:74,1
    - Dst: asprintf
      Src: /src/cryptsetup/src/utils_key_description.c:76,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_key_description.c:83,1
    - Dst: strdup
      Src: /src/cryptsetup/src/utils_key_description.c:87,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_key_description.c:92,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_key_description.c:93,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_key_description.c:94,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 55
    argCount: 5
    argNames:
    - cd
    - keyring_key_description
    - keyring_part_out
    - key_part_out
    - type_part_out
    argTypes:
    - struct crypt_device*
    - char*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 102
    functionName: parse_single_vk_and_keyring_description
    functionSourceFile: /src/cryptsetup/src/utils_key_description.c
    functionUses: 0
    functionsReached:
    - _
    - log_verbose
    - free
    - strstr
    - strdup
    - asprintf
    - strtol
    linkageType: ''
    returnType: int
    signature: "int parse_single_vk_and_keyring_description(\n\tstruct crypt_device
      *cd,\n\tchar *keyring_key_description, char **keyring_part_out, char\n\t**key_part_out,
      char **type_part_out)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: parse_single_vk_and_keyring_description
      Src: /src/cryptsetup/src/utils_key_description.c:115,1
    - Dst: parse_single_vk_and_keyring_description
      Src: /src/cryptsetup/src/utils_key_description.c:123,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_key_description.c:130,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_key_description.c:131,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_key_description.c:131,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_key_description.c:135,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_key_description.c:136,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_key_description.c:136,1
    - Dst: crypt_set_keyring_to_link
      Src: /src/cryptsetup/src/utils_key_description.c:143,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_key_description.c:146,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_key_description.c:146,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_key_description.c:150,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_key_description.c:150,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_key_description.c:151,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_key_description.c:152,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_key_description.c:153,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_key_description.c:154,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_key_description.c:155,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_key_description.c:156,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 3
    argNames:
    - cd
    - keyring_key_descriptions
    - keyring_key_links_count
    argTypes:
    - struct crypt_device*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 159
    functionName: tools_parse_vk_and_keyring_description
    functionSourceFile: /src/cryptsetup/src/utils_key_description.c
    functionUses: 2
    functionsReached:
    - _
    - free
    - log_err
    - parse_single_vk_and_keyring_description
    - crypt_set_keyring_to_link
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int tools_parse_vk_and_keyring_description(\n\tstruct crypt_device
      *cd,\n\tchar **keyring_key_descriptions,\n\tint keyring_key_links_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: int_handler
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void int_handler(int sig __attribute__((__unused__)))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: tools_signals_blocked
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tools_signals_blocked(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_tools.c:32,1
    - Dst: sigemptyset
      Src: /src/cryptsetup/src/utils_tools.c:34,1
    - Dst: sigaddset
      Src: /src/cryptsetup/src/utils_tools.c:35,1
    - Dst: sigaddset
      Src: /src/cryptsetup/src/utils_tools.c:36,1
    - Dst: sigprocmask
      Src: /src/cryptsetup/src/utils_tools.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - block
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 40
    functionName: set_int_block
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 7
    functionsReached:
    - log_dbg
    - sigprocmask
    - sigaddset
    - sigemptyset
    linkageType: ''
    returnType: void
    signature: void set_int_block(int block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_tools.c:46,1
    - Dst: memset
      Src: /src/cryptsetup/src/utils_tools.c:47,1
    - Dst: sigaction
      Src: /src/cryptsetup/src/utils_tools.c:49,1
    - Dst: sigaction
      Src: /src/cryptsetup/src/utils_tools.c:50,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_tools.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - block
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 52
    functionName: set_int_handler
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 7
    functionsReached:
    - log_dbg
    - sigaction
    - memset
    - set_int_block
    linkageType: ''
    returnType: void
    signature: void set_int_handler(int block)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - r
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: check_signal
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void check_signal(int *r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/cryptsetup/src/utils_tools.c:67,1
    - Dst: fprintf
      Src: /src/cryptsetup/src/utils_tools.c:71,1
    - Dst: fprintf
      Src: /src/cryptsetup/src/utils_tools.c:74,1
    - Dst: fprintf
      Src: /src/cryptsetup/src/utils_tools.c:79,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 3
    argNames:
    - level
    - msg
    - usrptr
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 82
    functionName: tool_log
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 1
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void tool_log(int level, const char *msg, void *usrptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tool_log
      Src: /src/cryptsetup/src/utils_tools.c:90,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - level
    - msg
    - usrptr
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 91
    functionName: quiet_log
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 0
    functionsReached:
    - tool_log
    linkageType: ''
    returnType: void
    signature: void quiet_log(int level, const char *msg, void *usrptr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: tools_signals_blocked
      Src: /src/cryptsetup/src/utils_tools.c:100,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_tools.c:102,1
    - Dst: isatty
      Src: /src/cryptsetup/src/utils_tools.c:104,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_tools.c:105,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:105,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_tools.c:107,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:107,1
    - Dst: fflush
      Src: /src/cryptsetup/src/utils_tools.c:108,1
    - Dst: getline
      Src: /src/cryptsetup/src/utils_tools.c:109,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_tools.c:113,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:113,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_tools.c:115,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_tools.c:117,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_tools.c:119,1
    - Dst: set_int_block
      Src: /src/cryptsetup/src/utils_tools.c:124,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_tools.c:126,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - msg
    - usrptr
    - default_answer
    argTypes:
    - char*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 128
    functionName: _dialog
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 0
    functionsReached:
    - fflush
    - _
    - free
    - log_std
    - set_int_block
    - tools_signals_blocked
    - isatty
    - log_err
    - log_dbg
    - getline
    - strcmp
    linkageType: ''
    returnType: int
    signature: int _dialog(const char *msg, void *usrptr, int default_answer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _dialog
      Src: /src/cryptsetup/src/utils_tools.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - msg
    - usrptr
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: yesDialog
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 18
    functionsReached:
    - _dialog
    linkageType: ''
    returnType: int
    signature: int yesDialog(const char *msg, void *usrptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _dialog
      Src: /src/cryptsetup/src/utils_tools.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - msg
    - usrptr
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 138
    functionName: noDialog
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 1
    functionsReached:
    - _dialog
    linkageType: ''
    returnType: int
    signature: int noDialog(const char *msg, void *usrptr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:145,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:145,1
    - Dst: translate_errno
      Src: /src/cryptsetup/src/utils_tools.c:150,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:153,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:155,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:157,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:159,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:161,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:163,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:165,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:165,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - errcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 166
    functionName: show_status
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 2
    functionsReached:
    - _
    - log_verbose
    - translate_errno
    linkageType: ''
    returnType: void
    signature: void show_status(int errcode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/src/utils_tools.c:175,1
    - Dst: strcpy
      Src: /src/cryptsetup/src/utils_tools.c:176,1
    - Dst: strlen
      Src: /src/cryptsetup/src/utils_tools.c:177,1
    - Dst: isxdigit
      Src: /src/cryptsetup/src/utils_tools.c:180,1
    - Dst: isalpha
      Src: /src/cryptsetup/src/utils_tools.c:182,1
    - Dst: tolower
      Src: /src/cryptsetup/src/utils_tools.c:183,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - spec
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 191
    functionName: uuid_or_device
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 9
    functionsReached:
    - isxdigit
    - strncmp
    - tolower
    - strcpy
    - isalpha
    - strlen
    linkageType: ''
    returnType: char
    signature: char *uuid_or_device(const char *spec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: poptPrintUsage
      Src: /src/cryptsetup/src/utils_tools.c:197,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_tools.c:199,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/utils_tools.c:200,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/utils_tools.c:201,1
    - Dst: exit
      Src: /src/cryptsetup/src/utils_tools.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - popt_context
    - exitcode
    - error
    - more
    argTypes:
    - poptContext
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: usage
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 12
    functionsReached:
    - poptPrintUsage
    - tools_cleanup
    - exit
    - log_err
    - poptFreeContext
    linkageType: ''
    returnType: void
    signature: "void usage(poptContext popt_context,\n\t\t\t\t\t     int exitcode,
      const char *error,\n\t\t\t\t\t     const char *more)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_tools.c:209,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_tools.c:212,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_tools.c:213,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_tools.c:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 216
    functionName: dbg_version_and_cmd
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 2
    functionsReached:
    - log_std
    linkageType: ''
    returnType: void
    signature: void dbg_version_and_cmd(int argc, const char **argv)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - r
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 235
    functionName: translate_errno
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int translate_errno(int r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:243,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:243,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:245,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:245,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:247,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - keyslot
    - op
    argTypes:
    - int
    - crypt_object_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: tools_keyslot_msg
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 23
    functionsReached:
    - _
    - log_verbose
    linkageType: ''
    returnType: void
    signature: void tools_keyslot_msg(int keyslot, crypt_object_op op)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:256,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:256,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:258,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:258,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - token
    - op
    argTypes:
    - int
    - crypt_object_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 259
    functionName: tools_token_msg
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 1
    functionsReached:
    - _
    - log_verbose
    linkageType: ''
    returnType: void
    signature: void tools_token_msg(int token, crypt_object_op op)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:268,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:268,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:270,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:270,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:272,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:272,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:275,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:275,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:277,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:277,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:280,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:280,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:282,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:282,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:285,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:285,1
    - Dst: log_verbose
      Src: /src/cryptsetup/src/utils_tools.c:287,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:287,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 4
    argNames:
    - error
    - type
    - token
    - pin_provided
    argTypes:
    - int
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 289
    functionName: tools_token_error_msg
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 2
    functionsReached:
    - _
    - log_verbose
    linkageType: ''
    returnType: void
    signature: void tools_token_error_msg(int error, const char *type, int token,
      bool pin_provided)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strtoull
      Src: /src/cryptsetup/src/utils_tools.c:304,1
    - Dst: isdigit
      Src: /src/cryptsetup/src/utils_tools.c:305,1
    - Dst: strlen
      Src: /src/cryptsetup/src/utils_tools.c:313,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_tools.c:348,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 41
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 354
    functionName: tools_string_to_size
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strlen
    - strtoull
    - log_dbg
    linkageType: ''
    returnType: int
    signature: int tools_string_to_size(const char *s, uint64_t *size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_tools.c:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - key_file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 365
    functionName: tools_is_stdin
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 10
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int tools_is_stdin(const char *key_file)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/src/utils_tools.c:374,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_tools.c:378,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_tools.c:380,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:380,1
    - Dst: read_buffer
      Src: /src/cryptsetup/src/utils_tools.c:384,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_tools.c:385,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:385,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_tools.c:391,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/utils_tools.c:394,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - file
    - key
    - keysize
    argTypes:
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 399
    functionName: tools_read_vk
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 9
    functionsReached:
    - read_buffer
    - crypt_safe_alloc
    - _
    - close
    - crypt_safe_free
    - log_err
    - open
    linkageType: ''
    returnType: int
    signature: int tools_read_vk(const char *file, char **key, int keysize)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/src/utils_tools.c:408,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_tools.c:410,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:410,1
    - Dst: write_buffer
      Src: /src/cryptsetup/src/utils_tools.c:414,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_tools.c:417,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:417,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_tools.c:419,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - file
    - key
    - keysize
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 421
    functionName: tools_write_mk
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 4
    functionsReached:
    - _
    - close
    - write_buffer
    - log_err
    - open
    linkageType: ''
    returnType: int
    signature: int tools_write_mk(const char *file, const char *key, int keysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_tools.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - name
    - use_pwlibs
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 460
    functionName: tools_package_version
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 2
    functionsReached:
    - log_std
    linkageType: ''
    returnType: void
    signature: void tools_package_version(const char *name, bool use_pwlibs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/src/utils_tools.c:467,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_tools.c:468,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:468,1
    - Dst: strchr
      Src: /src/cryptsetup/src/utils_tools.c:470,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_tools.c:471,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_tools.c:471,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 476
    functionName: tools_check_newname
    functionSourceFile: /src/cryptsetup/src/utils_tools.c
    functionUses: 6
    functionsReached:
    - log_err
    - strlen
    - _
    - strchr
    linkageType: ''
    returnType: int
    signature: int tools_check_newname(const char *name)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/src/utils_args.c:24,1
    - Dst: poptGetOptArg
      Src: /src/cryptsetup/src/utils_args.c:25,1
    - Dst: strtoll
      Src: /src/cryptsetup/src/utils_args.c:28,1
    - Dst: usage
      Src: /src/cryptsetup/src/utils_args.c:30,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/utils_args.c:30,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/utils_args.c:31,1
    - Dst: strtoull
      Src: /src/cryptsetup/src/utils_args.c:35,1
    - Dst: usage
      Src: /src/cryptsetup/src/utils_args.c:37,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/utils_args.c:37,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/utils_args.c:38,1
    - Dst: strtoll
      Src: /src/cryptsetup/src/utils_args.c:42,1
    - Dst: usage
      Src: /src/cryptsetup/src/utils_args.c:44,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/utils_args.c:44,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/utils_args.c:45,1
    - Dst: needs_size_conv_fn
      Src: /src/cryptsetup/src/utils_args.c:50,1
    - Dst: tools_string_to_size
      Src: /src/cryptsetup/src/utils_args.c:51,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_args.c:52,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_args.c:52,1
    - Dst: usage
      Src: /src/cryptsetup/src/utils_args.c:54,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/utils_args.c:55,1
    - Dst: strtoull
      Src: /src/cryptsetup/src/utils_args.c:58,1
    - Dst: usage
      Src: /src/cryptsetup/src/utils_args.c:60,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/utils_args.c:60,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/utils_args.c:61,1
    - Dst: tools_parse_arg_value
      Src: /src/cryptsetup/src/utils_args.c:66,1
    - Dst: abort
      Src: /src/cryptsetup/src/utils_args.c:70,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 49
    argCount: 5
    argNames:
    - popt_context
    - type
    - arg
    - popt_arg
    - popt_val
    argTypes:
    - poptContext
    - crypt_arg_type_info
    - struct tools_arg*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 74
    functionName: tools_parse_arg_value
    functionSourceFile: /src/cryptsetup/src/utils_args.c
    functionUses: 3
    functionsReached:
    - _
    - free
    - snprintf
    - usage
    - strtoll
    - poptGetOptArg
    - tools_parse_arg_value
    - poptGetInvocationName
    - abort
    - strtoull
    - needs_size_conv_fn
    - poptStrerror
    - tools_string_to_size
    linkageType: ''
    returnType: void
    signature: void tools_parse_arg_value(poptContext popt_context, crypt_arg_type_info
      type, struct tools_arg *arg, const char *popt_arg, int popt_val, bool(*needs_size_conv_fn)(unsigned
      arg_id))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/src/utils_args.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - args
    - args_size
    argTypes:
    - struct tools_arg*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 85
    functionName: tools_args_free
    functionSourceFile: /src/cryptsetup/src/utils_args.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void tools_args_free(struct tools_arg *args, size_t args_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/src/utils_args.c:95,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - action
    - list
    - list_size
    argTypes:
    - char*
    - char**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: action_allowed
    functionSourceFile: /src/cryptsetup/src/utils_args.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool action_allowed(const char *action, const char * const* list, size_t
      list_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: action_allowed
      Src: /src/cryptsetup/src/utils_args.c:109,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_args.c:112,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_args.c:112,1
    - Dst: usage
      Src: /src/cryptsetup/src/utils_args.c:114,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/utils_args.c:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - action
    - args
    - args_size
    - popt_context
    argTypes:
    - char*
    - struct tools_arg*
    - size_t
    - poptContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 118
    functionName: tools_check_args
    functionSourceFile: /src/cryptsetup/src/utils_args.c
    functionUses: 2
    functionsReached:
    - _
    - snprintf
    - action_allowed
    - usage
    - poptGetInvocationName
    linkageType: ''
    returnType: void
    signature: void tools_check_args(const char *action, const struct tools_arg *args,
      size_t args_size, poptContext popt_context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 16
    functionName: MINUTES
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MINUTES(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: SECONDS
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SECONDS(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: HOURS
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HOURS(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: DAYS
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DAYS(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: REMAIN_SECONDS
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REMAIN_SECONDS(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: REMAIN_MINUTES
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REMAIN_MINUTES(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64_C
      Src: /src/cryptsetup/src/utils_progress.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: time_diff
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - UINT64_C
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t time_diff(struct timeval *start, struct timeval *end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_progress.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: tools_clear_line
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - log_std
    linkageType: ''
    returnType: void
    signature: void tools_clear_line(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UINT64_C
      Src: /src/cryptsetup/src/utils_progress.c:38,1
    - Dst: UINT64_C
      Src: /src/cryptsetup/src/utils_progress.c:41,1
    - Dst: UINT64_C
      Src: /src/cryptsetup/src/utils_progress.c:44,1
    - Dst: UINT64_C
      Src: /src/cryptsetup/src/utils_progress.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - bytes
    - units
    argTypes:
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 54
    functionName: bytes_to_units
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - UINT64_C
    linkageType: ''
    returnType: void
    signature: void bytes_to_units(uint64_t *bytes, const char **units)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_progress.c:61,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_progress.c:61,1
    - Dst: MINUTES
      Src: /src/cryptsetup/src/utils_progress.c:61,1
    - Dst: REMAIN_SECONDS
      Src: /src/cryptsetup/src/utils_progress.c:61,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_progress.c:63,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_progress.c:63,1
    - Dst: HOURS
      Src: /src/cryptsetup/src/utils_progress.c:63,1
    - Dst: REMAIN_MINUTES
      Src: /src/cryptsetup/src/utils_progress.c:63,1
    - Dst: REMAIN_SECONDS
      Src: /src/cryptsetup/src/utils_progress.c:63,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_progress.c:65,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_progress.c:65,1
    - Dst: DAYS
      Src: /src/cryptsetup/src/utils_progress.c:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - usecs
    - buf
    - buf_len
    argTypes:
    - uint64_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 71
    functionName: time_to_human_string
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - DAYS
    - _
    - snprintf
    - REMAIN_MINUTES
    - MINUTES
    - HOURS
    - REMAIN_SECONDS
    linkageType: ''
    returnType: bool
    signature: bool time_to_human_string(uint64_t usecs, char *buf, size_t buf_len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: time_to_human_string
      Src: /src/cryptsetup/src/utils_progress.c:86,1
    - Dst: bytes_to_units
      Src: /src/cryptsetup/src/utils_progress.c:91,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_progress.c:92,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_progress.c:92,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_progress.c:96,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_progress.c:96,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_progress.c:105,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_progress.c:105,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 6
    argNames:
    - bytes
    - device_size
    - eta
    - uib
    - ustr
    - eol
    argTypes:
    - uint64_t
    - uint64_t
    - uint64_t
    - double
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 107
    functionName: log_progress
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - _
    - snprintf
    - log_std
    - bytes_to_units
    - time_to_human_string
    linkageType: ''
    returnType: void
    signature: void log_progress(uint64_t bytes, uint64_t device_size, uint64_t eta,
      double uib, const char *ustr, const char *eol)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: time_to_human_string
      Src: /src/cryptsetup/src/utils_progress.c:121,1
    - Dst: bytes_to_units
      Src: /src/cryptsetup/src/utils_progress.c:124,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_progress.c:125,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_progress.c:125,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_progress.c:129,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_progress.c:129,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_progress.c:137,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_progress.c:137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 4
    argNames:
    - time_spent
    - bytes
    - uib
    - ustr
    argTypes:
    - uint64_t
    - uint64_t
    - double
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 138
    functionName: log_progress_final
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - _
    - snprintf
    - log_std
    - bytes_to_units
    - time_to_human_string
    linkageType: ''
    returnType: void
    signature: void log_progress_final(uint64_t time_spent, uint64_t bytes, double
      uib, const char *ustr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_progress.c:145,1
    - Dst: gettimeofday
      Src: /src/cryptsetup/src/utils_progress.c:147,1
    - Dst: UINT64_C
      Src: /src/cryptsetup/src/utils_progress.c:156,1
    - Dst: time_diff
      Src: /src/cryptsetup/src/utils_progress.c:160,1
    - Dst: time_diff
      Src: /src/cryptsetup/src/utils_progress.c:165,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - final
    - bytes
    - parms
    - r_tdiff
    argTypes:
    - bool
    - uint64_t
    - struct tools_progress_params*
    - double*
    assertStmts:
    - condition: (r_tdiff)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/cryptsetup/src/utils_progress.c
    constantsTouched: []
    func_position:
      end: 170
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 170
    functionName: calculate_tdiff
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - gettimeofday
    - time_diff
    - UINT64_C
    - assert
    linkageType: ''
    returnType: bool
    signature: bool calculate_tdiff(bool final, uint64_t bytes, struct tools_progress_params
      *parms, double *r_tdiff)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: calculate_tdiff
      Src: /src/cryptsetup/src/utils_progress.c:179,1
    - Dst: tools_clear_line
      Src: /src/cryptsetup/src/utils_progress.c:204,1
    - Dst: log_progress_final
      Src: /src/cryptsetup/src/utils_progress.c:207,1
    - Dst: log_progress
      Src: /src/cryptsetup/src/utils_progress.c:209,1
    - Dst: fflush
      Src: /src/cryptsetup/src/utils_progress.c:211,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - device_size
    - bytes
    - parms
    argTypes:
    - uint64_t
    - uint64_t
    - struct tools_progress_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 212
    functionName: tools_time_progress
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - fflush
    - tools_clear_line
    - log_progress_final
    - calculate_tdiff
    - log_progress
    linkageType: ''
    returnType: void
    signature: void tools_time_progress(uint64_t device_size, uint64_t bytes, struct
      tools_progress_params *parms)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/src/utils_progress.c:219,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_progress.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 6
    argNames:
    - device
    - bytes
    - device_size
    - eta
    - uib
    - time_spent
    argTypes:
    - char*
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 232
    functionName: log_progress_json
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - snprintf
    - log_std
    linkageType: ''
    returnType: void
    signature: void log_progress_json(const char *device, uint64_t bytes, uint64_t
      device_size, uint64_t eta, uint64_t uib, uint64_t time_spent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calculate_tdiff
      Src: /src/cryptsetup/src/utils_progress.c:239,1
    - Dst: log_progress_json
      Src: /src/cryptsetup/src/utils_progress.c:244,1
    - Dst: UINT64_C
      Src: /src/cryptsetup/src/utils_progress.c:247,1
    - Dst: fflush
      Src: /src/cryptsetup/src/utils_progress.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - device_size
    - bytes
    - parms
    argTypes:
    - uint64_t
    - uint64_t
    - struct tools_progress_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 252
    functionName: tools_time_progress_json
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 0
    functionsReached:
    - fflush
    - calculate_tdiff
    - UINT64_C
    - log_progress_json
    linkageType: ''
    returnType: void
    signature: void tools_time_progress_json(uint64_t device_size, uint64_t bytes,
      struct tools_progress_params *parms)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: tools_time_progress_json
      Src: /src/cryptsetup/src/utils_progress.c:260,1
    - Dst: tools_time_progress
      Src: /src/cryptsetup/src/utils_progress.c:262,1
    - Dst: check_signal
      Src: /src/cryptsetup/src/utils_progress.c:264,1
    - Dst: tools_clear_line
      Src: /src/cryptsetup/src/utils_progress.c:267,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_progress.c:269,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 13
    argCount: 3
    argNames:
    - size
    - offset
    - usrptr
    argTypes:
    - uint64_t
    - uint64_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 254
    functionDepth: 4
    functionLinenumber: 254
    functionLinenumberEnd: 273
    functionName: tools_progress
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 2
    functionsReached:
    - tools_time_progress_json
    - tools_clear_line
    - check_signal
    - tools_time_progress
    - log_err
    linkageType: ''
    returnType: int
    signature: int tools_progress(uint64_t size, uint64_t offset, void *usrptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/src/utils_progress.c:279,1
    - Dst: crypt_loop_backing_file
      Src: /src/cryptsetup/src/utils_progress.c:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - device
    - r_backing_file
    argTypes:
    - char*
    - char**
    assertStmts:
    - condition: (r_backing_file)
      pos:
        line_end: 278
        line_start: 278
        source_file: /src/cryptsetup/src/utils_progress.c
    constantsTouched: []
    func_position:
      end: 288
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 288
    functionName: tools_get_device_name
    functionSourceFile: /src/cryptsetup/src/utils_progress.c
    functionUses: 6
    functionsReached:
    - crypt_loop_backing_file
    - assert
    linkageType: ''
    returnType: char
    signature: char *tools_get_device_name(const char *device, char **r_backing_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: DEFAULT_CIPHER
    functionSourceFile: /src/cryptsetup/src/cryptsetup.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFAULT_CIPHER(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 4
    argNames:
    - (
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    functionName: log_dbg
    functionSourceFile: /src/cryptsetup/src/cryptsetup.h
    functionUses: 52
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_dbg(x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 4
    argNames:
    - (
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: log_std
    functionSourceFile: /src/cryptsetup/src/cryptsetup.h
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_std(x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 4
    argNames:
    - (
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: log_verbose
    functionSourceFile: /src/cryptsetup/src/cryptsetup.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_verbose(x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 4
    argNames:
    - (
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: log_err
    functionSourceFile: /src/cryptsetup/src/cryptsetup.h
    functionUses: 103
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_err(x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tools_args_free
      Src: /src/cryptsetup/src/veritysetup.c:20,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/veritysetup.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: tools_cleanup
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 5
    functionsReached:
    - ARRAY_SIZE
    - tools_args_free
    linkageType: ''
    returnType: void
    signature: void tools_cleanup(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:30,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:32,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/veritysetup.c:33,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:35,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/veritysetup.c:35,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:35,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:38,1
    - Dst: crypt_hex_to_bytes
      Src: /src/cryptsetup/src/veritysetup.c:39,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:39,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:41,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:41,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/veritysetup.c:51,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/veritysetup.c:52,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/veritysetup.c:53,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/veritysetup.c:54,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/veritysetup.c:55,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/veritysetup.c:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 3
    argNames:
    - params
    - data_device
    - flags
    argTypes:
    - struct crypt_params_verity*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 60
    functionName: _prepare_format
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 0
    functionsReached:
    - _
    - ARG_STR
    - ARG_SET
    - ARG_UINT64
    - crypt_hex_to_bytes
    - ARG_UINT32
    - log_err
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int _prepare_format(struct crypt_params_verity *params,\n\t\t\t   const
      char *data_device,\n\t\t\t   uint32_t flags)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/src/veritysetup.c:72,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:74,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:74,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/veritysetup.c:77,1
    - Dst: close
      Src: /src/cryptsetup/src/veritysetup.c:78,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:81,1
    - Dst: open
      Src: /src/cryptsetup/src/veritysetup.c:82,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:82,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:84,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:84,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:84,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/veritysetup.c:87,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:87,1
    - Dst: close
      Src: /src/cryptsetup/src/veritysetup.c:88,1
    - Dst: crypt_init
      Src: /src/cryptsetup/src/veritysetup.c:92,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:95,1
    - Dst: _prepare_format
      Src: /src/cryptsetup/src/veritysetup.c:98,1
    - Dst: crypt_format
      Src: /src/cryptsetup/src/veritysetup.c:102,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:102,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/src/veritysetup.c:106,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:109,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/veritysetup.c:110,1
    - Dst: malloc
      Src: /src/cryptsetup/src/veritysetup.c:111,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/src/veritysetup.c:117,1
    - Dst: open
      Src: /src/cryptsetup/src/veritysetup.c:121,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:121,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:123,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:123,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:123,1
    - Dst: dprintf
      Src: /src/cryptsetup/src/veritysetup.c:129,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:130,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:130,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:130,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/veritysetup.c:135,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:135,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/veritysetup.c:138,1
    - Dst: free
      Src: /src/cryptsetup/src/veritysetup.c:140,1
    - Dst: close
      Src: /src/cryptsetup/src/veritysetup.c:142,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 144
    functionName: action_format
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 0
    functionsReached:
    - _
    - free
    - close
    - crypt_volume_key_get
    - ARG_STR
    - dprintf
    - crypt_dump
    - ARG_SET
    - malloc
    - crypt_free
    - log_err
    - log_dbg
    - crypt_init
    - crypt_get_volume_key_size
    - _prepare_format
    - open
    - crypt_format
    linkageType: ''
    returnType: int
    signature: int action_format(void)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init_data_device
      Src: /src/cryptsetup/src/veritysetup.c:161,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:164,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:166,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:168,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:170,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:172,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:174,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:176,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:178,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:181,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/veritysetup.c:183,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/veritysetup.c:184,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:185,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/veritysetup.c:186,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/veritysetup.c:187,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:189,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:189,1
    - Dst: _prepare_format
      Src: /src/cryptsetup/src/veritysetup.c:192,1
    - Dst: crypt_format
      Src: /src/cryptsetup/src/veritysetup.c:195,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/veritysetup.c:200,1
    - Dst: open
      Src: /src/cryptsetup/src/veritysetup.c:204,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:204,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:206,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:206,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:206,1
    - Dst: fstat
      Src: /src/cryptsetup/src/veritysetup.c:210,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/src/veritysetup.c:210,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:211,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:211,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:211,1
    - Dst: malloc
      Src: /src/cryptsetup/src/veritysetup.c:216,1
    - Dst: read_buffer
      Src: /src/cryptsetup/src/veritysetup.c:222,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:223,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:223,1
    - Dst: crypt_hex_to_bytes
      Src: /src/cryptsetup/src/veritysetup.c:231,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:232,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:232,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:237,1
    - Dst: stat
      Src: /src/cryptsetup/src/veritysetup.c:239,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:239,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/src/veritysetup.c:239,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:240,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:240,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:240,1
    - Dst: tools_read_vk
      Src: /src/cryptsetup/src/veritysetup.c:245,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:245,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:247,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:247,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:247,1
    - Dst: crypt_activate_by_signed_key
      Src: /src/cryptsetup/src/veritysetup.c:251,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/src/veritysetup.c:257,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/veritysetup.c:258,1
    - Dst: free
      Src: /src/cryptsetup/src/veritysetup.c:259,1
    - Dst: free
      Src: /src/cryptsetup/src/veritysetup.c:260,1
    - Dst: close
      Src: /src/cryptsetup/src/veritysetup.c:263,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 100
    argCount: 5
    argNames:
    - dm_device
    - data_device
    - hash_device
    - root_hash
    - flags
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 265
    functionName: _activate
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - read_buffer
    - crypt_free
    - ARG_UINT32
    - open
    - crypt_init_data_device
    - free
    - crypt_hex_to_bytes
    - crypt_get_volume_key_size
    - close
    - crypt_format
    - crypt_activate_by_signed_key
    - ARG_STR
    - malloc
    - crypt_safe_free
    - log_err
    - _prepare_format
    - tools_read_vk
    - _
    - fstat
    - ARG_SET
    - ARG_UINT64
    - S_ISREG
    - stat
    linkageType: ''
    returnType: int
    signature: "int _activate(const char *dm_device,\n\t\t      const char *data_device,\n\t\t
      \     const char *hash_device,\n\t\t      const char *root_hash,\n\t\t      uint32_t
      flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:269,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:270,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:270,1
    - Dst: tools_check_newname
      Src: /src/cryptsetup/src/veritysetup.c:274,1
    - Dst: _activate
      Src: /src/cryptsetup/src/veritysetup.c:277,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:280,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:281,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 282
    functionName: action_open
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 0
    functionsReached:
    - _
    - tools_check_newname
    - ARG_SET
    - _activate
    - log_err
    linkageType: ''
    returnType: int
    signature: int action_open(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:286,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:287,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:287,1
    - Dst: _activate
      Src: /src/cryptsetup/src/veritysetup.c:291,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 296
    functionName: action_verify
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 0
    functionsReached:
    - log_err
    - _
    - ARG_SET
    - _activate
    linkageType: ''
    returnType: int
    signature: int action_verify(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:305,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:307,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/src/veritysetup.c:310,1
    - Dst: crypt_deactivate_by_name
      Src: /src/cryptsetup/src/veritysetup.c:312,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:314,1
    - Dst: crypt_status
      Src: /src/cryptsetup/src/veritysetup.c:315,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:317,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:317,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/veritysetup.c:321,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 323
    functionName: action_close
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 0
    functionsReached:
    - crypt_deactivate_by_name
    - crypt_init_by_name
    - _
    - log_std
    - ARG_SET
    - crypt_free
    - crypt_status
    linkageType: ''
    returnType: int
    signature: int action_close(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/cryptsetup/src/veritysetup.c:339,1
    - Dst: stat
      Src: /src/cryptsetup/src/veritysetup.c:339,1
    - Dst: crypt_status
      Src: /src/cryptsetup/src/veritysetup.c:342,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:349,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:351,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/veritysetup.c:351,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:357,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:360,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/veritysetup.c:360,1
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/src/veritysetup.c:363,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:367,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/veritysetup.c:367,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/src/veritysetup.c:369,1
    - Dst: crypt_get_verity_info
      Src: /src/cryptsetup/src/veritysetup.c:374,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:378,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:382,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:383,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:384,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:385,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:386,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/src/veritysetup.c:388,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:390,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:391,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:393,1
    - Dst: crypt_loop_backing_file
      Src: /src/cryptsetup/src/veritysetup.c:394,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:395,1
    - Dst: free
      Src: /src/cryptsetup/src/veritysetup.c:396,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:398,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:399,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:402,1
    - Dst: crypt_loop_backing_file
      Src: /src/cryptsetup/src/veritysetup.c:403,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:404,1
    - Dst: free
      Src: /src/cryptsetup/src/veritysetup.c:405,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:407,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:411,1
    - Dst: crypt_loop_backing_file
      Src: /src/cryptsetup/src/veritysetup.c:412,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:412,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:413,1
    - Dst: free
      Src: /src/cryptsetup/src/veritysetup.c:414,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:416,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:418,1
    - Dst: crypt_get_verity_repaired
      Src: /src/cryptsetup/src/veritysetup.c:419,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:420,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/src/veritysetup.c:423,1
    - Dst: malloc
      Src: /src/cryptsetup/src/veritysetup.c:424,1
    - Dst: crypt_volume_key_get
      Src: /src/cryptsetup/src/veritysetup.c:425,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:427,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/src/veritysetup.c:428,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:429,1
    - Dst: free
      Src: /src/cryptsetup/src/veritysetup.c:431,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:440,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/veritysetup.c:451,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 85
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 455
    functionName: action_status
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 0
    functionsReached:
    - free
    - log_std
    - crypt_get_dir
    - crypt_init_by_name_and_header
    - ARG_STR
    - crypt_volume_key_get
    - crypt_log_hex
    - malloc
    - crypt_free
    - crypt_get_verity_info
    - crypt_get_volume_key_size
    - crypt_get_active_device
    - crypt_loop_backing_file
    - crypt_status
    - crypt_get_verity_repaired
    - stat
    - crypt_get_type
    - strchr
    linkageType: ''
    returnType: int
    signature: int action_status(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/src/veritysetup.c:463,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/veritysetup.c:466,1
    - Dst: ARG_UINT64
      Src: /src/cryptsetup/src/veritysetup.c:467,1
    - Dst: ARG_STR
      Src: /src/cryptsetup/src/veritysetup.c:468,1
    - Dst: ARG_UINT32
      Src: /src/cryptsetup/src/veritysetup.c:469,1
    - Dst: crypt_load
      Src: /src/cryptsetup/src/veritysetup.c:471,1
    - Dst: crypt_dump
      Src: /src/cryptsetup/src/veritysetup.c:473,1
    - Dst: log_err
      Src: /src/cryptsetup/src/veritysetup.c:475,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:475,1
    - Dst: crypt_free
      Src: /src/cryptsetup/src/veritysetup.c:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 479
    functionName: action_dump
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - ARG_STR
    - crypt_dump
    - ARG_UINT64
    - ARG_UINT32
    - log_err
    - crypt_free
    - crypt_init
    linkageType: ''
    returnType: int
    signature: int action_dump(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tools_package_version
      Src: /src/cryptsetup/src/veritysetup.c:506,1
    - Dst: poptPrintHelp
      Src: /src/cryptsetup/src/veritysetup.c:507,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:508,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:508,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:511,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:511,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:511,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:512,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:512,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/src/veritysetup.c:517,1
    - Dst: log_std
      Src: /src/cryptsetup/src/veritysetup.c:519,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:519,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/veritysetup.c:525,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/veritysetup.c:526,1
    - Dst: exit
      Src: /src/cryptsetup/src/veritysetup.c:527,1
    - Dst: tools_package_version
      Src: /src/cryptsetup/src/veritysetup.c:529,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/veritysetup.c:530,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/veritysetup.c:531,1
    - Dst: exit
      Src: /src/cryptsetup/src/veritysetup.c:532,1
    - Dst: usage
      Src: /src/cryptsetup/src/veritysetup.c:534,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 5
    argNames:
    - popt_context
    - reason
    - key
    - arg
    - data
    argTypes:
    - poptContext
    - enum poptCallbackReason
    - struct poptOption*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 535
    functionName: help
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 1
    functionsReached:
    - _
    - tools_cleanup
    - log_std
    - crypt_get_dir
    - exit
    - usage
    - tools_package_version
    - poptPrintHelp
    - poptFreeContext
    linkageType: ''
    returnType: void
    signature: "void help(poptContext popt_context,\n\t\t enum poptCallbackReason
      reason __attribute__((unused)),\n\t\t struct poptOption *key,\n\t\t const char
      *arg __attribute__((unused)),\n\t\t void *data __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/veritysetup.c:541,1
    - Dst: struct action_type*::handler
      Src: /src/cryptsetup/src/veritysetup.c:543,1
    - Dst: show_status
      Src: /src/cryptsetup/src/veritysetup.c:545,1
    - Dst: translate_errno
      Src: /src/cryptsetup/src/veritysetup.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - action
    argTypes:
    - struct action_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 547
    functionName: run_action
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 2
    functionsReached:
    - log_dbg
    - struct action_type*::handler
    - translate_errno
    - show_status
    linkageType: ''
    returnType: int
    signature: int run_action(struct action_type *action)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tools_parse_arg_value
      Src: /src/cryptsetup/src/veritysetup.c:555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - popt_context
    - reason
    - key
    - arg
    - data
    argTypes:
    - poptContext
    - enum poptCallbackReason
    - struct poptOption*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 549
    functionDepth: 2
    functionLinenumber: 549
    functionLinenumberEnd: 564
    functionName: basic_options_cb
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 0
    functionsReached:
    - tools_parse_arg_value
    linkageType: ''
    returnType: void
    signature: "void basic_options_cb(poptContext popt_context,\n\t\t enum poptCallbackReason
      reason __attribute__((unused)),\n\t\t struct poptOption *key,\n\t\t const char
      *arg,\n\t\t void *data __attribute__((unused)))"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: N_
      Src: /src/cryptsetup/src/veritysetup.c:571,1
    - Dst: N_
      Src: /src/cryptsetup/src/veritysetup.c:572,1
    - Dst: N_
      Src: /src/cryptsetup/src/veritysetup.c:573,1
    - Dst: ARG
      Src: /src/cryptsetup/src/veritysetup.c:578,1
    - Dst: N_
      Src: /src/cryptsetup/src/veritysetup.c:584,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/src/veritysetup.c:594,1
    - Dst: setlocale
      Src: /src/cryptsetup/src/veritysetup.c:596,1
    - Dst: bindtextdomain
      Src: /src/cryptsetup/src/veritysetup.c:597,1
    - Dst: textdomain
      Src: /src/cryptsetup/src/veritysetup.c:598,1
    - Dst: poptGetContext
      Src: /src/cryptsetup/src/veritysetup.c:600,1
    - Dst: exit
      Src: /src/cryptsetup/src/veritysetup.c:602,1
    - Dst: poptSetOtherOptionHelp
      Src: /src/cryptsetup/src/veritysetup.c:604,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:605,1
    - Dst: poptGetNextOpt
      Src: /src/cryptsetup/src/veritysetup.c:607,1
    - Dst: usage
      Src: /src/cryptsetup/src/veritysetup.c:610,1
    - Dst: poptStrerror
      Src: /src/cryptsetup/src/veritysetup.c:610,1
    - Dst: poptBadOption
      Src: /src/cryptsetup/src/veritysetup.c:611,1
    - Dst: poptGetArg
      Src: /src/cryptsetup/src/veritysetup.c:613,1
    - Dst: usage
      Src: /src/cryptsetup/src/veritysetup.c:614,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:614,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/veritysetup.c:615,1
    - Dst: poptGetArgs
      Src: /src/cryptsetup/src/veritysetup.c:618,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/veritysetup.c:628,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/veritysetup.c:636,1
    - Dst: strcmp
      Src: /src/cryptsetup/src/veritysetup.c:641,1
    - Dst: usage
      Src: /src/cryptsetup/src/veritysetup.c:645,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:645,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/veritysetup.c:646,1
    - Dst: snprintf
      Src: /src/cryptsetup/src/veritysetup.c:650,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:650,1
    - Dst: usage
      Src: /src/cryptsetup/src/veritysetup.c:652,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/veritysetup.c:653,1
    - Dst: tools_check_args
      Src: /src/cryptsetup/src/veritysetup.c:656,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/veritysetup.c:656,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:658,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:658,1
    - Dst: usage
      Src: /src/cryptsetup/src/veritysetup.c:659,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:660,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/veritysetup.c:661,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:663,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:663,1
    - Dst: usage
      Src: /src/cryptsetup/src/veritysetup.c:664,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:665,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/veritysetup.c:666,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:668,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:669,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:669,1
    - Dst: usage
      Src: /src/cryptsetup/src/veritysetup.c:670,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:671,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/veritysetup.c:672,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:674,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:674,1
    - Dst: usage
      Src: /src/cryptsetup/src/veritysetup.c:675,1
    - Dst: _
      Src: /src/cryptsetup/src/veritysetup.c:676,1
    - Dst: poptGetInvocationName
      Src: /src/cryptsetup/src/veritysetup.c:677,1
    - Dst: ARG_SET
      Src: /src/cryptsetup/src/veritysetup.c:679,1
    - Dst: crypt_set_debug_level
      Src: /src/cryptsetup/src/veritysetup.c:680,1
    - Dst: dbg_version_and_cmd
      Src: /src/cryptsetup/src/veritysetup.c:681,1
    - Dst: run_action
      Src: /src/cryptsetup/src/veritysetup.c:684,1
    - Dst: tools_cleanup
      Src: /src/cryptsetup/src/veritysetup.c:685,1
    - Dst: poptFreeContext
      Src: /src/cryptsetup/src/veritysetup.c:686,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 58
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 566
    functionDepth: 2
    functionLinenumber: 566
    functionLinenumberEnd: 688
    functionName: main
    functionSourceFile: /src/cryptsetup/src/veritysetup.c
    functionUses: 4
    functionsReached:
    - poptBadOption
    - poptGetContext
    - poptStrerror
    - dbg_version_and_cmd
    - N_
    - exit
    - poptGetNextOpt
    - crypt_set_log_callback
    - bindtextdomain
    - strcmp
    - ARG
    - tools_cleanup
    - usage
    - poptGetArgs
    - run_action
    - poptFreeContext
    - poptGetArg
    - tools_check_args
    - _
    - snprintf
    - setlocale
    - textdomain
    - crypt_set_debug_level
    - ARRAY_SIZE
    - ARG_SET
    - poptSetOtherOptionHelp
    - poptGetInvocationName
    linkageType: ''
    returnType: int
    signature: int main(int argc, const char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - p
    - count64
    argTypes:
    - uint64_t*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 33
    functionName: bitcount
    functionSourceFile: /src/cryptsetup/src/utils_keyslot_check.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t bitcount(uint64_t *p, uint64_t count64)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/utils_keyslot_check.c:39,1
    - Dst: bitcount
      Src: /src/cryptsetup/src/utils_keyslot_check.c:41,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/utils_keyslot_check.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - b
    - count
    argTypes:
    - void*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 53
    functionName: chisquared_bits
    functionSourceFile: /src/cryptsetup/src/utils_keyslot_check.c
    functionUses: 0
    functionsReached:
    - ARRAY_SIZE
    - bitcount
    linkageType: ''
    returnType: double
    signature: double chisquared_bits(void *b, uint64_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/utils_keyslot_check.c:59,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/src/utils_keyslot_check.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - N
    - count
    argTypes:
    - unsigned char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 73
    functionName: chisquared_bytes
    functionSourceFile: /src/cryptsetup/src/utils_keyslot_check.c
    functionUses: 0
    functionsReached:
    - ARRAY_SIZE
    linkageType: ''
    returnType: double
    signature: double chisquared_bytes(unsigned char *N, uint64_t count)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_keyslot_check.c:101,1
    - Dst: chisquared_bytes
      Src: /src/cryptsetup/src/utils_keyslot_check.c:110,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_keyslot_check.c:114,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_keyslot_check.c:114,1
    - Dst: chisquared_bits
      Src: /src/cryptsetup/src/utils_keyslot_check.c:120,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_keyslot_check.c:124,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_keyslot_check.c:124,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_keyslot_check.c:127,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_keyslot_check.c:127,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 6
    argNames:
    - keyslot
    - buffer
    - length
    - start
    - hexdump_hint
    - hint_max
    argTypes:
    - int
    - unsigned char*
    - uint64_t
    - uint64_t
    - bool*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 130
    functionName: run_analysis
    functionSourceFile: /src/cryptsetup/src/utils_keyslot_check.c
    functionUses: 0
    functionsReached:
    - chisquared_bits
    - _
    - chisquared_bytes
    - log_std
    - log_dbg
    linkageType: ''
    returnType: void
    signature: "void run_analysis(int keyslot, unsigned char *buffer,\n\t\t\t uint64_t
      length, uint64_t start,\n\t\t\t bool *hexdump_hint, int hint_max)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/src/utils_keyslot_check.c:140,1
    - Dst: log_dbg
      Src: /src/cryptsetup/src/utils_keyslot_check.c:141,1
    - Dst: open
      Src: /src/cryptsetup/src/utils_keyslot_check.c:145,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/src/utils_keyslot_check.c:149,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/src/utils_keyslot_check.c:149,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/src/utils_keyslot_check.c:151,1
    - Dst: crypt_keyslot_area
      Src: /src/cryptsetup/src/utils_keyslot_check.c:155,1
    - Dst: crypt_keyslot_get_key_size
      Src: /src/cryptsetup/src/utils_keyslot_check.c:159,1
    - Dst: malloc
      Src: /src/cryptsetup/src/utils_keyslot_check.c:173,1
    - Dst: lseek
      Src: /src/cryptsetup/src/utils_keyslot_check.c:177,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_keyslot_check.c:178,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_keyslot_check.c:178,1
    - Dst: read_buffer
      Src: /src/cryptsetup/src/utils_keyslot_check.c:182,1
    - Dst: log_err
      Src: /src/cryptsetup/src/utils_keyslot_check.c:183,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_keyslot_check.c:183,1
    - Dst: run_analysis
      Src: /src/cryptsetup/src/utils_keyslot_check.c:187,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_keyslot_check.c:189,1
    - Dst: log_std
      Src: /src/cryptsetup/src/utils_keyslot_check.c:194,1
    - Dst: _
      Src: /src/cryptsetup/src/utils_keyslot_check.c:194,1
    - Dst: close
      Src: /src/cryptsetup/src/utils_keyslot_check.c:197,1
    - Dst: free
      Src: /src/cryptsetup/src/utils_keyslot_check.c:198,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 48
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 132
    functionDepth: 3
    functionLinenumber: 132
    functionLinenumberEnd: 199
    functionName: luks_check_keyslots
    functionSourceFile: /src/cryptsetup/src/utils_keyslot_check.c
    functionUses: 1
    functionsReached:
    - read_buffer
    - lseek
    - _
    - crypt_keyslot_max
    - free
    - log_std
    - close
    - crypt_keyslot_area
    - crypt_reencrypt_status
    - crypt_keyslot_get_key_size
    - malloc
    - log_dbg
    - log_err
    - run_analysis
    - open
    - crypt_get_type
    - crypt_keyslot_status
    linkageType: ''
    returnType: void
    signature: void luks_check_keyslots(struct crypt_device *cd, const char *device)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:29,1
    - Dst: syslog
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:34,1
    - Dst: syslog
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:36,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - level
    - msg
    - usrptr
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 37
    functionName: simple_syslog_wrapper
    functionSourceFile: /src/cryptsetup/docs/examples/crypt_log_usage.c
    functionUses: 0
    functionsReached:
    - syslog
    - fprintf
    linkageType: ''
    returnType: void
    signature: void simple_syslog_wrapper(int level, const char *msg, void *usrptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:45,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:46,1
    - Dst: openlog
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:50,1
    - Dst: crypt_init
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:53,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:55,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:60,1
    - Dst: crypt_log
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:63,1
    - Dst: crypt_log
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:64,1
    - Dst: crypt_log
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:65,1
    - Dst: crypt_log
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:66,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:69,1
    - Dst: crypt_set_log_callback
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:72,1
    - Dst: crypt_log
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:74,1
    - Dst: crypt_log
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:75,1
    - Dst: crypt_log
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:76,1
    - Dst: crypt_log
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:77,1
    - Dst: closelog
      Src: /src/cryptsetup/docs/examples/crypt_log_usage.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 81
    functionName: main
    functionSourceFile: /src/cryptsetup/docs/examples/crypt_log_usage.c
    functionUses: 4
    functionsReached:
    - crypt_log
    - crypt_free
    - crypt_set_log_callback
    - openlog
    - printf
    - closelog
    - geteuid
    - crypt_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:29,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:31,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:35,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:35,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:40,1
    - Dst: sleep
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:42,1
    - Dst: crypt_format
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:48,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:58,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:58,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:59,1
    - Dst: crypt_keyslot_add_by_volume_key
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:70,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:78,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:79,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:83,1
    - Dst: crypt_keyslot_add_by_passphrase
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:89,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:94,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:95,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:99,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 103
    functionName: format_and_add_keyslots
    functionSourceFile: /src/cryptsetup/docs/examples/crypt_luks_usage.c
    functionUses: 0
    functionsReached:
    - sleep
    - crypt_keyslot_add_by_volume_key
    - crypt_free
    - crypt_keyslot_add_by_passphrase
    - printf
    - crypt_get_device_name
    - crypt_init
    - crypt_format
    linkageType: ''
    returnType: int
    signature: int format_and_add_keyslots(const char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:114,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:116,1
    - Dst: crypt_load
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:123,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:128,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:128,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:129,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:136,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:142,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:143,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:147,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:147,1
    - Dst: crypt_get_dir
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:147,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:148,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:148,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:149,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:149,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:150,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:150,1
    - Dst: crypt_get_active_device
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:155,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:157,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:158,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:159,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:163,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 2
    argNames:
    - path
    - device_name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 173
    functionName: activate_and_check_status
    functionSourceFile: /src/cryptsetup/docs/examples/crypt_luks_usage.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - crypt_load
    - crypt_get_dir
    - crypt_deactivate
    - crypt_get_cipher
    - crypt_get_cipher_mode
    - crypt_free
    - printf
    - crypt_get_device_name
    - crypt_activate_by_passphrase
    - crypt_init
    - crypt_get_type
    - crypt_get_active_device
    linkageType: ''
    returnType: int
    signature: int activate_and_check_status(const char *path, const char *device_name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:183,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:185,1
    - Dst: crypt_status
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:189,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:190,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:192,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:193,1
    - Dst: crypt_deactivate
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:200,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:202,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:203,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:207,1
    - Dst: crypt_free
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - device_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 211
    functionName: handle_active_device
    functionSourceFile: /src/cryptsetup/docs/examples/crypt_luks_usage.c
    functionUses: 0
    functionsReached:
    - crypt_init_by_name
    - crypt_deactivate
    - crypt_free
    - printf
    - crypt_status
    linkageType: ''
    returnType: int
    signature: int handle_active_device(const char *device_name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:215,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:216,1
    - Dst: printf
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:221,1
    - Dst: format_and_add_keyslots
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:227,1
    - Dst: activate_and_check_status
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:230,1
    - Dst: handle_active_device
      Src: /src/cryptsetup/docs/examples/crypt_luks_usage.c:233,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 237
    functionName: main
    functionSourceFile: /src/cryptsetup/docs/examples/crypt_luks_usage.c
    functionUses: 4
    functionsReached:
    - handle_active_device
    - activate_and_check_status
    - printf
    - geteuid
    - format_and_add_keyslots
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log2
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:92,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 101
    functionName: ent_samp
    functionSourceFile: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c
    functionUses: 0
    functionsReached:
    - log2
    linkageType: ''
    returnType: double
    signature: double ent_samp(unsigned char * buf, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:106,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - out
    - value
    argTypes:
    - FILE*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 110
    functionName: print_address
    functionSourceFile: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_address(FILE *out, uint64_t value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:117,1
    - Dst: print_address
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:118,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:119,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:123,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:126,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:128,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:131,1
    - Dst: isprint
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:135,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:136,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:138,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - out
    - address
    - buf
    argTypes:
    - FILE*
    - uint64_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 142
    functionName: hexdump_line
    functionSourceFile: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c
    functionUses: 0
    functionsReached:
    - print_address
    - isprint
    - fprintf
    linkageType: ''
    returnType: void
    signature: void hexdump_line(FILE *out, uint64_t address, unsigned char *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hexdump_line
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - out
    - buf
    - address
    - len
    argTypes:
    - FILE*
    - unsigned char*
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 153
    functionName: hexdump_sector
    functionSourceFile: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c
    functionUses: 0
    functionsReached:
    - hexdump_line
    linkageType: ''
    returnType: void
    signature: void hexdump_sector(FILE *out, unsigned char *buf, uint64_t address,
      int len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:164,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:164,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:165,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:166,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:168,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:173,1
    - Dst: crypt_keyslot_area
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:177,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:178,1
    - Dst: perror
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:179,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:184,1
    - Dst: print_address
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:185,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:186,1
    - Dst: print_address
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:187,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:188,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:192,1
    - Dst: lseek
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:197,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:198,1
    - Dst: read
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:201,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:202,1
    - Dst: ent_samp
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:205,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:207,1
    - Dst: print_address
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:208,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:209,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:211,1
    - Dst: hexdump_sector
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:212,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:213,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 3
    argNames:
    - out
    - cd
    - f_luks
    argTypes:
    - FILE*
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 155
    functionDepth: 3
    functionLinenumber: 155
    functionLinenumberEnd: 220
    functionName: check_keyslots
    functionSourceFile: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c
    functionUses: 1
    functionsReached:
    - hexdump_sector
    - lseek
    - crypt_keyslot_max
    - crypt_keyslot_status
    - perror
    - crypt_keyslot_area
    - ent_samp
    - read
    - print_address
    - crypt_get_type
    - fprintf
    linkageType: ''
    returnType: int
    signature: int check_keyslots(FILE *out, struct crypt_device *cd, int f_luks)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:248,1
    - Dst: strtod
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:252,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:254,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:255,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:259,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:260,1
    - Dst: strtol
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:266,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:268,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:269,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:273,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:274,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:286,1
    - Dst: isprint
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:288,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:289,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:290,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:292,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:294,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:296,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:298,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:304,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:305,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:306,1
    - Dst: open
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:314,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:316,1
    - Dst: perror
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:317,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:318,1
    - Dst: crypt_init
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:330,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:332,1
    - Dst: close
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:333,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:334,1
    - Dst: crypt_load
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:341,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:343,1
    - Dst: crypt_free
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:344,1
    - Dst: close
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:345,1
    - Dst: exit
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:346,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:349,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:350,1
    - Dst: fprintf
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:351,1
    - Dst: check_keyslots
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:353,1
    - Dst: crypt_free
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:355,1
    - Dst: close
      Src: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c:356,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 83
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 223
    functionDepth: 4
    functionLinenumber: 223
    functionLinenumberEnd: 358
    functionName: main
    functionSourceFile: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c
    functionUses: 4
    functionsReached:
    - crypt_load
    - exit
    - close
    - getopt
    - perror
    - isprint
    - crypt_free
    - check_keyslots
    - strtod
    - crypt_init
    - open
    - strtol
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:33,1
    - Dst: fopen
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:37,1
    - Dst: printf
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:39,1
    - Dst: exit
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:40,1
    - Dst: fgets
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:43,1
    - Dst: strlen
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:49,1
    - Dst: strncmp
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:58,1
    - Dst: crypt_activate_by_passphrase
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:65,1
    - Dst: crypt_load
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:72,1
    - Dst: printf
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:75,1
    - Dst: fclose
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:80,1
    - Dst: crypt_free
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:81,1
    - Dst: exit
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:82,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 32
    argCount: 4
    argNames:
    - cd
    - pwd_file
    - my_id
    - max_id
    argTypes:
    - struct crypt_device*
    - char*
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 83
    functionName: check
    functionSourceFile: /src/cryptsetup/misc/dict_search/crypt_dict.c
    functionUses: 9
    functionsReached:
    - fgets
    - crypt_load
    - exit
    - fork
    - strncmp
    - crypt_free
    - fopen
    - printf
    - crypt_activate_by_passphrase
    - strlen
    - fclose
    linkageType: ''
    returnType: void
    signature: void check(struct crypt_device *cd, const char *pwd_file, unsigned
      my_id, unsigned max_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:91,1
    - Dst: exit
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:92,1
    - Dst: sscanf
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:95,1
    - Dst: printf
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:96,1
    - Dst: exit
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:97,1
    - Dst: strcmp
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:100,1
    - Dst: strcmp
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:102,1
    - Dst: printf
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:105,1
    - Dst: exit
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:106,1
    - Dst: getuid
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:115,1
    - Dst: printf
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:116,1
    - Dst: exit
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:117,1
    - Dst: prctl
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:121,1
    - Dst: setpriority
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:122,1
    - Dst: crypt_init
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:125,1
    - Dst: crypt_load
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:126,1
    - Dst: printf
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:127,1
    - Dst: exit
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:128,1
    - Dst: check
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:133,1
    - Dst: wait
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:136,1
    - Dst: WIFEXITED
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:136,1
    - Dst: WEXITSTATUS
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:137,1
    - Dst: kill
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:140,1
    - Dst: exit
      Src: /src/cryptsetup/misc/dict_search/crypt_dict.c:144,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 145
    functionName: main
    functionSourceFile: /src/cryptsetup/misc/dict_search/crypt_dict.c
    functionUses: 4
    functionsReached:
    - getuid
    - setpriority
    - crypt_load
    - WIFEXITED
    - exit
    - wait
    - prctl
    - check
    - kill
    - sscanf
    - printf
    - crypt_init
    - strcmp
    - WEXITSTATUS
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/volumekey.c:33,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/volumekey.c:44,1
    - Dst: free
      Src: /src/cryptsetup/lib/volumekey.c:46,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/volumekey.c:49,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - keylength
    - key
    argTypes:
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 53
    functionName: crypt_alloc_volume_key
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - crypt_zalloc
    - crypt_safe_alloc
    - free
    - crypt_safe_memcpy
    linkageType: ''
    returnType: struct volume_key
    signature: struct volume_key *crypt_alloc_volume_key(size_t keylength, const char
      *key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc_size
      Src: /src/cryptsetup/lib/volumekey.c:63,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/volumekey.c:67,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - safe_alloc
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 75
    functionName: crypt_alloc_volume_key_by_safe_alloc
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc_size
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: struct volume_key
    signature: struct volume_key *crypt_alloc_volume_key_by_safe_alloc(void **safe_alloc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:79,1
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:80,1
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:81,1
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:82,1
    - Dst: crypt_safe_alloc_size
      Src: /src/cryptsetup/lib/volumekey.c:82,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/volumekey.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - vk
    - safe_alloc
    argTypes:
    - struct volume_key*
    - void**
    assertStmts:
    - condition: (vk)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/cryptsetup/lib/volumekey.c
    - condition: (crypt_safe_alloc_size(*safe_alloc) == vk->keylength)
      pos:
        line_end: 81
        line_start: 81
        source_file: /src/cryptsetup/lib/volumekey.c
    - condition: (safe_alloc)
      pos:
        line_end: 80
        line_start: 80
        source_file: /src/cryptsetup/lib/volumekey.c
    - condition: (vk->keylength)
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/cryptsetup/lib/volumekey.c
    constantsTouched: []
    func_position:
      end: 87
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 87
    functionName: crypt_volume_key_pass_safe_alloc
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc_size
    - crypt_safe_free
    - assert
    linkageType: ''
    returnType: void
    signature: void crypt_volume_key_pass_safe_alloc(struct volume_key *vk, void **safe_alloc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vk
    argTypes:
    - struct volume_key*
    assertStmts:
    - condition: (vk && vk->key)
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/cryptsetup/lib/volumekey.c
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: crypt_volume_key_get_key
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *crypt_volume_key_get_key(const struct volume_key *vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vk
    argTypes:
    - struct volume_key*
    assertStmts:
    - condition: (vk)
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/cryptsetup/lib/volumekey.c
    constantsTouched: []
    func_position:
      end: 101
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 101
    functionName: crypt_volume_key_length
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: size_t
    signature: size_t crypt_volume_key_length(const struct volume_key *vk)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/cryptsetup/lib/volumekey.c:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - vk
    - key_description
    - keyring_key_type
    argTypes:
    - struct volume_key*
    - char*
    - key_type_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 116
    functionName: crypt_volume_key_set_description
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - strdup
    linkageType: ''
    returnType: int
    signature: "int crypt_volume_key_set_description(struct volume_key *vk,\n\t\t\t\t
      \    const char *key_description, key_type_t keyring_key_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: keyring_type_and_name
      Src: /src/cryptsetup/lib/volumekey.c:121,1
    - Dst: crypt_volume_key_set_description
      Src: /src/cryptsetup/lib/volumekey.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - vk
    - key_name
    argTypes:
    - struct volume_key*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 127
    functionName: crypt_volume_key_set_description_by_name
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_set_description
    - keyring_type_and_name
    linkageType: ''
    returnType: int
    signature: int crypt_volume_key_set_description_by_name(struct volume_key *vk,
      const char *key_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vk
    argTypes:
    - struct volume_key*
    assertStmts:
    - condition: (vk)
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/cryptsetup/lib/volumekey.c
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: crypt_volume_key_description
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *crypt_volume_key_description(const struct volume_key *vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vk
    argTypes:
    - struct volume_key*
    assertStmts:
    - condition: (vk)
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/cryptsetup/lib/volumekey.c
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: crypt_volume_key_kernel_key_type
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: key_type_t
    signature: key_type_t crypt_volume_key_kernel_key_type(const struct volume_key
      *vk)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - vk
    - id
    argTypes:
    - struct volume_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 148
    functionName: crypt_volume_key_set_id
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_volume_key_set_id(struct volume_key *vk, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vk
    argTypes:
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: crypt_volume_key_get_id
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_volume_key_get_id(const struct volume_key *vk)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - vks
    - id
    argTypes:
    - struct volume_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 166
    functionName: crypt_volume_key_by_id
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct volume_key
    signature: struct volume_key *crypt_volume_key_by_id(struct volume_key *vks, int
      id)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - vks
    - vk
    argTypes:
    - struct volume_key**
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 186
    functionName: crypt_volume_key_add_next
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_volume_key_add_next(struct volume_key **vks, struct volume_key
      *vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vk
    argTypes:
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 191
    functionName: crypt_volume_key_next
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct volume_key
    signature: struct volume_key *crypt_volume_key_next(struct volume_key *vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/volumekey.c:199,1
    - Dst: free
      Src: /src/cryptsetup/lib/volumekey.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - vk
    argTypes:
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 204
    functionName: crypt_free_volume_key
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - free
    - crypt_safe_free
    linkageType: ''
    returnType: void
    signature: void crypt_free_volume_key(struct volume_key *vk)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/volumekey.c:213,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/volumekey.c:219,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/volumekey.c:222,1
    - Dst: abort
      Src: /src/cryptsetup/lib/volumekey.c:228,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/volumekey.c:232,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/volumekey.c:236,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - cd
    - keylength
    - quality
    argTypes:
    - struct crypt_device*
    - size_t
    - key_quality_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 239
    functionName: crypt_generate_volume_key
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_safe_free
    - crypt_random_get
    - abort
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: struct volume_key
    signature: "struct volume_key *crypt_generate_volume_key(struct crypt_device *cd,
      size_t keylength,\n\t\t\t\t\t     key_quality_info quality)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - vk
    argTypes:
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 244
    functionName: crypt_volume_key_is_set
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_volume_key_is_set(const struct volume_key *vk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:250,1
    - Dst: keyring_add_key_in_thread_keyring
      Src: /src/cryptsetup/lib/volumekey.c:252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - vk
    argTypes:
    - struct volume_key*
    assertStmts:
    - condition: (vk && vk->key && vk->key_description && vk->keyring_key_type !=
        INVALID_KEY)
      pos:
        line_end: 249
        line_start: 249
        source_file: /src/cryptsetup/lib/volumekey.c
    constantsTouched: []
    func_position:
      end: 260
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 260
    functionName: crypt_volume_key_upload_kernel_key
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - keyring_add_key_in_thread_keyring
    - assert
    linkageType: ''
    returnType: bool
    signature: bool crypt_volume_key_upload_kernel_key(struct volume_key *vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:264,1
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:265,1
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:266,1
    - Dst: crypt_unlink_key_by_description_from_thread_keyring
      Src: /src/cryptsetup/lib/volumekey.c:268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - vk
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    assertStmts:
    - condition: (vk)
      pos:
        line_end: 263
        line_start: 263
        source_file: /src/cryptsetup/lib/volumekey.c
    - condition: (!vk->key_description || vk->keyring_key_type != INVALID_KEY)
      pos:
        line_end: 265
        line_start: 265
        source_file: /src/cryptsetup/lib/volumekey.c
    - condition: (vk->key_description || vk->keyring_key_type == INVALID_KEY)
      pos:
        line_end: 264
        line_start: 264
        source_file: /src/cryptsetup/lib/volumekey.c
    constantsTouched: []
    func_position:
      end: 271
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 271
    functionName: crypt_volume_key_drop_kernel_key
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - crypt_unlink_key_by_description_from_thread_keyring
    - assert
    linkageType: ''
    returnType: void
    signature: void crypt_volume_key_drop_kernel_key(struct crypt_device *cd, struct
      volume_key *vk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/volumekey.c:275,1
    - Dst: crypt_unlink_key_from_thread_keyring
      Src: /src/cryptsetup/lib/volumekey.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cd
    - vk
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    assertStmts:
    - condition: (vk)
      pos:
        line_end: 274
        line_start: 274
        source_file: /src/cryptsetup/lib/volumekey.c
    constantsTouched: []
    func_position:
      end: 282
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 282
    functionName: crypt_volume_key_drop_uploaded_kernel_key
    functionSourceFile: /src/cryptsetup/lib/volumekey.c
    functionUses: 0
    functionsReached:
    - crypt_unlink_key_from_thread_keyring
    - assert
    linkageType: ''
    returnType: void
    signature: void crypt_volume_key_drop_uploaded_kernel_key(struct crypt_device
      *cd, struct volume_key *vk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:25,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:26,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:27,1
    - Dst: LUKS2_keyslot_open
      Src: /src/cryptsetup/lib/keyslot_context.c:29,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - cd
    - kc
    - keyslot
    - segment
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - int
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 24
        line_start: 24
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_PASSPHRASE)
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 34
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 34
    functionName: get_luks2_key_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - LUKS2_keyslot_open
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_luks2_key_by_passphrase(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot,\n\tint segment,\n\tstruct volume_key
      **r_vk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:43,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:44,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:45,1
    - Dst: LUKS_open_key_with_hdr
      Src: /src/cryptsetup/lib/keyslot_context.c:47,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/keyslot_context.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - cd
    - kc
    - keyslot
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 42
        line_start: 42
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_PASSPHRASE)
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 44
        line_start: 44
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 53
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 53
    functionName: get_luks1_volume_key_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - LUKS_open_key_with_hdr
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_luks1_volume_key_by_passphrase(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot,\n\tstruct volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_luks2_key_by_passphrase
      Src: /src/cryptsetup/lib/keyslot_context.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - kc
    - keyslot
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: get_luks2_volume_key_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_luks2_key_by_passphrase
    linkageType: ''
    returnType: int
    signature: "int get_luks2_volume_key_by_passphrase(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot,\n\tstruct volume_key **r_vk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:70,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:71,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:72,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:73,1
    - Dst: BITLK_get_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - cd
    - kc
    - params
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - struct bitlk_metadata*
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 69
        line_start: 69
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 72
        line_start: 72
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_PASSPHRASE)
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (params)
      pos:
        line_end: 71
        line_start: 71
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 80
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 80
    functionName: get_bitlk_volume_key_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - BITLK_get_volume_key
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_bitlk_volume_key_by_passphrase(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tconst struct bitlk_metadata *params,\n\tstruct
      volume_key **r_vk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:89,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:90,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:91,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:92,1
    - Dst: FVAULT2_get_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:94,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - cd
    - kc
    - params
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - struct fvault2_params*
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 88
        line_start: 88
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_PASSPHRASE)
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (params)
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 99
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 99
    functionName: get_fvault2_volume_key_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - FVAULT2_get_volume_key
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_fvault2_volume_key_by_passphrase(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tconst struct fvault2_params *params,\n\tstruct
      volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:106,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:107,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:108,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - cd
    - kc
    - r_passphrase
    - r_passphrase_size
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - char**
    - size_t*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 105
        line_start: 105
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_passphrase_size)
      pos:
        line_end: 108
        line_start: 108
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_PASSPHRASE)
      pos:
        line_end: 106
        line_start: 106
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_passphrase)
      pos:
        line_end: 107
        line_start: 107
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 115
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 115
    functionName: get_passphrase_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_passphrase_by_passphrase(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tconst char **r_passphrase,\n\tsize_t *r_passphrase_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:124,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:125,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:126,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:127,1
    - Dst: crypt_keyfile_device_read
      Src: /src/cryptsetup/lib/keyslot_context.c:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - cd
    - kc
    - r_passphrase
    - r_passphrase_size
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - char**
    - size_t*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 123
        line_start: 123
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_passphrase)
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_passphrase_size)
      pos:
        line_end: 126
        line_start: 126
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYFILE)
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 143
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 143
    functionName: get_passphrase_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyfile_device_read
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_passphrase_by_keyfile(struct crypt_device *cd,\n\tstruct crypt_keyslot_context
      *kc,\n\tconst char **r_passphrase,\n\tsize_t *r_passphrase_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:155,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:156,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:157,1
    - Dst: get_passphrase_by_keyfile
      Src: /src/cryptsetup/lib/keyslot_context.c:159,1
    - Dst: LUKS2_keyslot_open
      Src: /src/cryptsetup/lib/keyslot_context.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - cd
    - kc
    - keyslot
    - segment
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - int
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 154
        line_start: 154
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYFILE)
      pos:
        line_end: 155
        line_start: 155
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 156
        line_start: 156
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 168
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 168
    functionName: get_luks2_key_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - LUKS2_keyslot_open
    - get_passphrase_by_keyfile
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_luks2_key_by_keyfile(struct crypt_device *cd,\n\tstruct crypt_keyslot_context
      *kc,\n\tint keyslot,\n\tint segment,\n\tstruct volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_luks2_key_by_keyfile
      Src: /src/cryptsetup/lib/keyslot_context.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - kc
    - keyslot
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 170
    functionDepth: 3
    functionLinenumber: 170
    functionLinenumberEnd: 176
    functionName: get_luks2_volume_key_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_luks2_key_by_keyfile
    linkageType: ''
    returnType: int
    signature: "int get_luks2_volume_key_by_keyfile(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot,\n\tstruct volume_key **r_vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:187,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:188,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:189,1
    - Dst: get_passphrase_by_keyfile
      Src: /src/cryptsetup/lib/keyslot_context.c:191,1
    - Dst: LUKS_open_key_with_hdr
      Src: /src/cryptsetup/lib/keyslot_context.c:195,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/keyslot_context.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - cd
    - kc
    - keyslot
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 186
        line_start: 186
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYFILE)
      pos:
        line_end: 187
        line_start: 187
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 188
        line_start: 188
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 201
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 201
    functionName: get_luks1_volume_key_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - get_passphrase_by_keyfile
    - LUKS_open_key_with_hdr
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_luks1_volume_key_by_keyfile(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot,\n\tstruct volume_key **r_vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:212,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:213,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:214,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:215,1
    - Dst: get_passphrase_by_keyfile
      Src: /src/cryptsetup/lib/keyslot_context.c:217,1
    - Dst: BITLK_get_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - cd
    - kc
    - params
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - struct bitlk_metadata*
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 211
        line_start: 211
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (params)
      pos:
        line_end: 213
        line_start: 213
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 214
        line_start: 214
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYFILE)
      pos:
        line_end: 212
        line_start: 212
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 226
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 226
    functionName: get_bitlk_volume_key_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_passphrase_by_keyfile
    - BITLK_get_volume_key
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_bitlk_volume_key_by_keyfile(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tconst struct bitlk_metadata *params,\n\tstruct
      volume_key **r_vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:237,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:238,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:239,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:240,1
    - Dst: get_passphrase_by_keyfile
      Src: /src/cryptsetup/lib/keyslot_context.c:242,1
    - Dst: FVAULT2_get_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - cd
    - kc
    - params
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - struct fvault2_params*
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 236
        line_start: 236
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYFILE)
      pos:
        line_end: 237
        line_start: 237
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 239
        line_start: 239
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (params)
      pos:
        line_end: 238
        line_start: 238
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 251
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 251
    functionName: get_fvault2_volume_key_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - FVAULT2_get_volume_key
    - get_passphrase_by_keyfile
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_fvault2_volume_key_by_keyfile(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tconst struct fvault2_params *params,\n\tstruct
      volume_key **r_vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:259,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:260,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:267,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - cd
    - kc
    - keyslot
    - segment
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - int
    - struct volume_key**
    assertStmts:
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEY)
      pos:
        line_end: 258
        line_start: 258
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 259
        line_start: 259
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 274
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 274
    functionName: get_key_by_key
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_alloc_volume_key
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_key_by_key(struct crypt_device *cd __attribute__((unused)),\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot __attribute__((unused)),\n\tint segment
      __attribute__((unused)),\n\tstruct volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_key_by_key
      Src: /src/cryptsetup/lib/keyslot_context.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - kc
    - keyslot
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 276
    functionDepth: 3
    functionLinenumber: 276
    functionLinenumberEnd: 282
    functionName: get_volume_key_by_key
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_key_by_key
    linkageType: ''
    returnType: int
    signature: "int get_volume_key_by_key(struct crypt_device *cd,\n\tstruct crypt_keyslot_context
      *kc,\n\tint keyslot __attribute__((unused)),\n\tstruct volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_key_by_key
      Src: /src/cryptsetup/lib/keyslot_context.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - kc
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 289
    functionName: get_generic_volume_key_by_key
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_key_by_key
    linkageType: ''
    returnType: int
    signature: "int get_generic_volume_key_by_key(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tstruct volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_key_by_key
      Src: /src/cryptsetup/lib/keyslot_context.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - kc
    - params
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - struct bitlk_metadata*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 291
    functionDepth: 3
    functionLinenumber: 291
    functionLinenumberEnd: 297
    functionName: get_bitlk_volume_key_by_key
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_key_by_key
    linkageType: ''
    returnType: int
    signature: "int get_bitlk_volume_key_by_key(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tconst struct bitlk_metadata *params __attribute__((unused)),\n\tstruct
      volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_key_by_key
      Src: /src/cryptsetup/lib/keyslot_context.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - kc
    - params
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - struct fvault2_params*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 305
    functionName: get_fvault2_volume_key_by_key
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_key_by_key
    linkageType: ''
    returnType: int
    signature: "int get_fvault2_volume_key_by_key(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tconst struct fvault2_params *params __attribute__((unused)),\n\tstruct
      volume_key **r_vk)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:314,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:316,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:317,1
    - Dst: get_key_by_key
      Src: /src/cryptsetup/lib/keyslot_context.c:322,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:330,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:336,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:338,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - cd
    - kc
    - r_vk
    - r_signature
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - struct volume_key**
    - struct volume_key**
    assertStmts:
    - condition: "(kc && ((kc->type == CRYPT_KC_TYPE_KEY) ||\n\t\t      (kc->type
        == CRYPT_KC_TYPE_SIGNED_KEY)))"
      pos:
        line_end: 314
        line_start: 313
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 315
        line_start: 315
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_signature)
      pos:
        line_end: 316
        line_start: 316
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 347
      start: 307
    functionDepth: 3
    functionLinenumber: 307
    functionLinenumberEnd: 347
    functionName: get_generic_signed_key_by_key
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_free_volume_key
    - crypt_alloc_volume_key
    - get_key_by_key
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_generic_signed_key_by_key(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tstruct volume_key **r_vk,\n\tstruct volume_key
      **r_signature)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:358,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:359,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:360,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/keyslot_context.c:362,1
    - Dst: LUKS2_token_unlock_key
      Src: /src/cryptsetup/lib/keyslot_context.c:366,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - cd
    - kc
    - keyslot
    - segment
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - int
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 357
        line_start: 357
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 359
        line_start: 359
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_TOKEN)
      pos:
        line_end: 358
        line_start: 358
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 372
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 372
    functionName: get_luks2_key_by_token
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - LUKS2_token_unlock_key
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_luks2_key_by_token(struct crypt_device *cd,\n\tstruct crypt_keyslot_context
      *kc,\n\tint keyslot,\n\tint segment,\n\tstruct volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_luks2_key_by_token
      Src: /src/cryptsetup/lib/keyslot_context.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - kc
    - keyslot
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 380
    functionName: get_luks2_volume_key_by_token
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_luks2_key_by_token
    linkageType: ''
    returnType: int
    signature: "int get_luks2_volume_key_by_token(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot,\n\tstruct volume_key **r_vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:389,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:390,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:391,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:392,1
    - Dst: LUKS2_token_unlock_passphrase
      Src: /src/cryptsetup/lib/keyslot_context.c:395,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/keyslot_context.c:395,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - cd
    - kc
    - r_passphrase
    - r_passphrase_size
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - char**
    - size_t*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 388
        line_start: 388
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_passphrase)
      pos:
        line_end: 390
        line_start: 390
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_passphrase_size)
      pos:
        line_end: 391
        line_start: 391
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_TOKEN)
      pos:
        line_end: 389
        line_start: 389
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 409
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 409
    functionName: get_passphrase_by_token
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - LUKS2_token_unlock_passphrase
    - crypt_get_hdr
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_passphrase_by_token(struct crypt_device *cd,\n\tstruct crypt_keyslot_context
      *kc,\n\tconst char **r_passphrase,\n\tsize_t *r_passphrase_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:418,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:419,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:420,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:421,1
    - Dst: crypt_keyring_get_user_key
      Src: /src/cryptsetup/lib/keyslot_context.c:424,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/keyslot_context.c:427,1
    - Dst: _
      Src: /src/cryptsetup/lib/keyslot_context.c:427,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - cd
    - kc
    - r_passphrase
    - r_passphrase_size
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - char**
    - size_t*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 417
        line_start: 417
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYRING)
      pos:
        line_end: 418
        line_start: 418
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_passphrase)
      pos:
        line_end: 419
        line_start: 419
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_passphrase_size)
      pos:
        line_end: 420
        line_start: 420
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 437
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 437
    functionName: get_passphrase_by_keyring
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - log_err
    - _
    - crypt_keyring_get_user_key
    - assert
    linkageType: ''
    returnType: int
    signature: "int get_passphrase_by_keyring(struct crypt_device *cd,\n\tstruct crypt_keyslot_context
      *kc,\n\tconst char **r_passphrase,\n\tsize_t *r_passphrase_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:447,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:448,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:449,1
    - Dst: get_passphrase_by_keyring
      Src: /src/cryptsetup/lib/keyslot_context.c:451,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/keyslot_context.c:451,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/keyslot_context.c:454,1
    - Dst: _
      Src: /src/cryptsetup/lib/keyslot_context.c:454,1
    - Dst: LUKS2_keyslot_open
      Src: /src/cryptsetup/lib/keyslot_context.c:459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - cd
    - kc
    - keyslot
    - segment
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - int
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 446
        line_start: 446
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYRING)
      pos:
        line_end: 447
        line_start: 447
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 448
        line_start: 448
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 464
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 464
    functionName: get_luks2_key_by_keyring
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _
    - get_passphrase_by_keyring
    - assert
    - log_err
    - LUKS2_keyslot_open
    - CONST_CAST
    linkageType: ''
    returnType: int
    signature: "int get_luks2_key_by_keyring(struct crypt_device *cd,\n\tstruct crypt_keyslot_context
      *kc,\n\tint keyslot,\n\tint segment,\n\tstruct volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_luks2_key_by_keyring
      Src: /src/cryptsetup/lib/keyslot_context.c:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - kc
    - keyslot
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 466
    functionDepth: 3
    functionLinenumber: 466
    functionLinenumberEnd: 472
    functionName: get_luks2_volume_key_by_keyring
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_luks2_key_by_keyring
    linkageType: ''
    returnType: int
    signature: "int get_luks2_volume_key_by_keyring(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot,\n\tstruct volume_key **r_vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:481,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:482,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:483,1
    - Dst: get_passphrase_by_keyring
      Src: /src/cryptsetup/lib/keyslot_context.c:485,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/keyslot_context.c:485,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/keyslot_context.c:488,1
    - Dst: _
      Src: /src/cryptsetup/lib/keyslot_context.c:488,1
    - Dst: LUKS_open_key_with_hdr
      Src: /src/cryptsetup/lib/keyslot_context.c:493,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/keyslot_context.c:494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - cd
    - kc
    - keyslot
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 480
        line_start: 480
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 482
        line_start: 482
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYRING)
      pos:
        line_end: 481
        line_start: 481
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 499
      start: 474
    functionDepth: 2
    functionLinenumber: 474
    functionLinenumberEnd: 499
    functionName: get_luks1_volume_key_by_keyring
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_get_hdr
    - get_passphrase_by_keyring
    - assert
    - log_err
    - LUKS_open_key_with_hdr
    - CONST_CAST
    linkageType: ''
    returnType: int
    signature: "int get_luks1_volume_key_by_keyring(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot,\n\tstruct volume_key **r_vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:511,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:512,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:513,1
    - Dst: crypt_keyring_get_key_by_name
      Src: /src/cryptsetup/lib/keyslot_context.c:515,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/keyslot_context.c:518,1
    - Dst: _
      Src: /src/cryptsetup/lib/keyslot_context.c:518,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/keyslot_context.c:523,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/keyslot_context.c:525,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - cd
    - kc
    - keyslot
    - segment
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - int
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 510
        line_start: 510
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_vk)
      pos:
        line_end: 512
        line_start: 512
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (kc && kc->type == CRYPT_KC_TYPE_VK_KEYRING)
      pos:
        line_end: 511
        line_start: 511
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 531
      start: 501
    functionDepth: 3
    functionLinenumber: 501
    functionLinenumberEnd: 531
    functionName: get_key_by_vk_in_keyring
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_alloc_volume_key_by_safe_alloc
    - crypt_keyring_get_key_by_name
    - _
    - assert
    - log_err
    - crypt_safe_free
    linkageType: ''
    returnType: int
    signature: "int get_key_by_vk_in_keyring(struct crypt_device *cd,\n\tstruct crypt_keyslot_context
      *kc,\n\tint keyslot __attribute__((unused)),\n\tint segment __attribute__((unused)),\n\tstruct
      volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_key_by_vk_in_keyring
      Src: /src/cryptsetup/lib/keyslot_context.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - kc
    - keyslot
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - int
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 533
    functionDepth: 4
    functionLinenumber: 533
    functionLinenumberEnd: 539
    functionName: get_volume_key_by_vk_in_keyring
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - get_key_by_vk_in_keyring
    linkageType: ''
    returnType: int
    signature: "int get_volume_key_by_vk_in_keyring(struct crypt_device *cd,\n\tstruct
      crypt_keyslot_context *kc,\n\tint keyslot __attribute__((unused)),\n\tstruct
      volume_key **r_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 542
        line_start: 542
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 549
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 549
    functionName: crypt_keyslot_context_init_common
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void crypt_keyslot_context_init_common(struct crypt_keyslot_context
      *kc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:553,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYRING)
      pos:
        line_end: 552
        line_start: 552
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 556
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 556
    functionName: keyring_context_free
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - free
    - assert
    linkageType: ''
    returnType: void
    signature: void keyring_context_free(struct crypt_keyslot_context *kc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:562,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:563,1
    - Dst: crypt_keyring_get_keysize_by_name
      Src: /src/cryptsetup/lib/keyslot_context.c:566,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - cd
    - kc
    - r_key_size
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - size_t*
    assertStmts:
    - condition: (kc && kc->type == CRYPT_KC_TYPE_VK_KEYRING)
      pos:
        line_end: 561
        line_start: 561
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_key_size)
      pos:
        line_end: 562
        line_start: 562
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 573
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 573
    functionName: keyring_get_key_size
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyring_get_keysize_by_name
    - assert
    linkageType: ''
    returnType: int
    signature: int keyring_get_key_size(struct crypt_device *cd, struct crypt_keyslot_context
      *kc, size_t *r_key_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:578,1
    - Dst: crypt_keyslot_context_init_common
      Src: /src/cryptsetup/lib/keyslot_context.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - kc
    - key_description
    argTypes:
    - struct crypt_keyslot_context*
    - char*
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 577
        line_start: 577
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 589
      start: 575
    functionDepth: 1
    functionLinenumber: 575
    functionLinenumberEnd: 589
    functionName: crypt_keyslot_context_init_by_keyring_internal
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_common
    - assert
    linkageType: ''
    returnType: void
    signature: "void crypt_keyslot_context_init_by_keyring_internal(struct crypt_keyslot_context
      *kc,\n\tconst char *key_description)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:593,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEY)
      pos:
        line_end: 592
        line_start: 592
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 596
      start: 591
    functionDepth: 2
    functionLinenumber: 591
    functionLinenumberEnd: 596
    functionName: key_context_free
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_free_volume_key
    - assert
    linkageType: ''
    returnType: void
    signature: void key_context_free(struct crypt_keyslot_context *kc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:602,1
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cd
    - kc
    - r_key_size
    argTypes:
    - struct crypt_device*
    - struct crypt_keyslot_context*
    - size_t*
    assertStmts:
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEY)
      pos:
        line_end: 601
        line_start: 601
        source_file: /src/cryptsetup/lib/keyslot_context.c
    - condition: (r_key_size)
      pos:
        line_end: 602
        line_start: 602
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 607
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 607
    functionName: key_get_key_size
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: "int key_get_key_size(struct crypt_device *cd __attribute__((unused)),\n\t\t\t
      \      struct crypt_keyslot_context *kc,\n\t\t\t       size_t *r_key_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:613,1
    - Dst: crypt_keyslot_context_init_common
      Src: /src/cryptsetup/lib/keyslot_context.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - kc
    - volume_key
    - volume_key_size
    argTypes:
    - struct crypt_keyslot_context*
    - char*
    - size_t
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 612
        line_start: 612
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 630
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 630
    functionName: crypt_keyslot_context_init_by_key_internal
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_common
    - assert
    linkageType: ''
    returnType: void
    signature: "void crypt_keyslot_context_init_by_key_internal(struct crypt_keyslot_context
      *kc,\n\tconst char *volume_key,\n\tsize_t volume_key_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:634,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:636,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc && kc->type == CRYPT_KC_TYPE_SIGNED_KEY)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 638
      start: 632
    functionDepth: 2
    functionLinenumber: 632
    functionLinenumberEnd: 638
    functionName: signed_key_context_free
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_free_volume_key
    - assert
    linkageType: ''
    returnType: void
    signature: void signed_key_context_free(struct crypt_keyslot_context *kc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:646,1
    - Dst: crypt_keyslot_context_init_common
      Src: /src/cryptsetup/lib/keyslot_context.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - kc
    - volume_key
    - volume_key_size
    - signature
    - signature_size
    argTypes:
    - struct crypt_keyslot_context*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 645
        line_start: 645
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 657
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 657
    functionName: crypt_keyslot_context_init_by_signed_key_internal
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_common
    - assert
    linkageType: ''
    returnType: void
    signature: "void crypt_keyslot_context_init_by_signed_key_internal(struct crypt_keyslot_context
      *kc,\n\tconst char *volume_key,\n\tsize_t volume_key_size,\n\tconst char *signature,\n\tsize_t
      signature_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:663,1
    - Dst: crypt_keyslot_context_init_common
      Src: /src/cryptsetup/lib/keyslot_context.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - kc
    - passphrase
    - passphrase_size
    argTypes:
    - struct crypt_keyslot_context*
    - char*
    - size_t
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 662
        line_start: 662
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 676
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 676
    functionName: crypt_keyslot_context_init_by_passphrase_internal
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_common
    - assert
    linkageType: ''
    returnType: void
    signature: "void crypt_keyslot_context_init_by_passphrase_internal(struct crypt_keyslot_context
      *kc,\n\tconst char *passphrase,\n\tsize_t passphrase_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:680,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc && kc->type == CRYPT_KC_TYPE_KEYFILE)
      pos:
        line_end: 679
        line_start: 679
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 683
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 683
    functionName: keyfile_context_free
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - free
    - assert
    linkageType: ''
    returnType: void
    signature: void keyfile_context_free(struct crypt_keyslot_context *kc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:690,1
    - Dst: crypt_keyslot_context_init_common
      Src: /src/cryptsetup/lib/keyslot_context.c:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 4
    argNames:
    - kc
    - keyfile
    - keyfile_size
    - keyfile_offset
    argTypes:
    - struct crypt_keyslot_context*
    - char*
    - size_t
    - uint64_t
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 689
        line_start: 689
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 705
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 705
    functionName: crypt_keyslot_context_init_by_keyfile_internal
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_common
    - assert
    linkageType: ''
    returnType: void
    signature: "void crypt_keyslot_context_init_by_keyfile_internal(struct crypt_keyslot_context
      *kc,\n\tconst char *keyfile,\n\tsize_t keyfile_size,\n\tuint64_t keyfile_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:709,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:711,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/keyslot_context.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc && kc->type == CRYPT_KC_TYPE_TOKEN)
      pos:
        line_end: 708
        line_start: 708
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 713
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 713
    functionName: token_context_free
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - free
    - crypt_safe_free
    - assert
    linkageType: ''
    returnType: void
    signature: void token_context_free(struct crypt_keyslot_context *kc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:722,1
    - Dst: crypt_keyslot_context_init_common
      Src: /src/cryptsetup/lib/keyslot_context.c:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 6
    argNames:
    - kc
    - token
    - type
    - pin
    - pin_size
    - usrptr
    argTypes:
    - struct crypt_keyslot_context*
    - int
    - char*
    - char*
    - size_t
    - void*
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 721
        line_start: 721
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 736
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 736
    functionName: crypt_keyslot_context_init_by_token_internal
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_common
    - assert
    linkageType: ''
    returnType: void
    signature: "void crypt_keyslot_context_init_by_token_internal(struct crypt_keyslot_context
      *kc,\n\tint token,\n\tconst char *type,\n\tconst char *pin,\n\tsize_t pin_size,\n\tvoid
      *usrptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:740,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc && kc->type == CRYPT_KC_TYPE_VK_KEYRING)
      pos:
        line_end: 739
        line_start: 739
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 743
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 743
    functionName: vk_in_keyring_context_free
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - free
    - assert
    linkageType: ''
    returnType: void
    signature: void vk_in_keyring_context_free(struct crypt_keyslot_context *kc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct crypt_keyslot_context*::context_free
      Src: /src/cryptsetup/lib/keyslot_context.c:751,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/keyslot_context.c:753,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 754
    functionName: crypt_keyslot_context_destroy_internal
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - struct crypt_keyslot_context*::context_free
    - crypt_safe_free
    linkageType: ''
    returnType: void
    signature: void crypt_keyslot_context_destroy_internal(struct crypt_keyslot_context
      *kc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/keyslot_context.c:758,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 756
    functionDepth: 2
    functionLinenumber: 756
    functionLinenumberEnd: 760
    functionName: crypt_keyslot_context_free
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 26
    functionsReached:
    - crypt_keyslot_context_destroy_internal
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_keyslot_context_free(struct crypt_keyslot_context *kc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/keyslot_context.c:773,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/keyslot_context.c:779,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:781,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/keyslot_context.c:784,1
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/keyslot_context.c:794,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - passphrase
    - passphrase_size
    - kc
    - self_contained
    argTypes:
    - char*
    - size_t
    - struct crypt_keyslot_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 762
    functionDepth: 2
    functionLinenumber: 762
    functionLinenumberEnd: 805
    functionName: _crypt_keyslot_context_init_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - free
    - crypt_safe_memcpy
    - crypt_keyslot_context_init_by_passphrase_internal
    - crypt_zalloc
    linkageType: ''
    returnType: int
    signature: "int _crypt_keyslot_context_init_by_passphrase(const char *passphrase,\n\tsize_t
      passphrase_size,\n\tstruct crypt_keyslot_context **kc,\n\tbool self_contained)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/lib/keyslot_context.c:814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - passphrase
    - passphrase_size
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 807
    functionDepth: 3
    functionLinenumber: 807
    functionLinenumberEnd: 815
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_passphrase
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_NEW(int, crypt_keyslot_context_init_by_passphrase,
      2, 8,\n\t/* crypt_keyslot_context_init_by_passphrase parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *passphrase,\n\tsize_t
      passphrase_size,\n\tstruct crypt_keyslot_context **kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_passphrase
      Src: /src/cryptsetup/lib/keyslot_context.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - passphrase
    - passphrase_size
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 817
    functionDepth: 3
    functionLinenumber: 817
    functionLinenumberEnd: 825
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_passphrase
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_OLD(int, crypt_keyslot_context_init_by_passphrase,
      2, 6,\n\t/* crypt_keyslot_context_init_by_passphrase parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *passphrase,\n\tsize_t
      passphrase_size,\n\tstruct crypt_keyslot_context **kc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/keyslot_context.c:839,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/keyslot_context.c:844,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:846,1
    - Dst: crypt_keyslot_context_init_by_keyfile_internal
      Src: /src/cryptsetup/lib/keyslot_context.c:852,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 5
    argNames:
    - keyfile
    - keyfile_size
    - keyfile_offset
    - kc
    - self_contained
    argTypes:
    - char*
    - size_t
    - uint64_t
    - struct crypt_keyslot_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 827
    functionDepth: 2
    functionLinenumber: 827
    functionLinenumberEnd: 862
    functionName: _crypt_keyslot_context_init_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_by_keyfile_internal
    - crypt_zalloc
    - strdup
    - free
    linkageType: ''
    returnType: int
    signature: "int _crypt_keyslot_context_init_by_keyfile(const char *keyfile,\n\tsize_t
      keyfile_size,\n\tuint64_t keyfile_offset,\n\tstruct crypt_keyslot_context **kc,\n\tbool
      self_contained)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/lib/keyslot_context.c:872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - cd
    - keyfile
    - keyfile_size
    - keyfile_offset
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - uint64_t
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 864
    functionDepth: 3
    functionLinenumber: 864
    functionLinenumberEnd: 873
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_keyfile
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_NEW(int, crypt_keyslot_context_init_by_keyfile,
      2, 8,\n\t/* crypt_keyslot_context_init_by_keyfile parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *keyfile,\n\tsize_t
      keyfile_size,\n\tuint64_t keyfile_offset,\n\tstruct crypt_keyslot_context **kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_keyfile
      Src: /src/cryptsetup/lib/keyslot_context.c:883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - cd
    - keyfile
    - keyfile_size
    - keyfile_offset
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - uint64_t
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 875
    functionDepth: 3
    functionLinenumber: 875
    functionLinenumberEnd: 884
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_keyfile
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_OLD(int, crypt_keyslot_context_init_by_keyfile,
      2, 6,\n\t/* crypt_keyslot_context_init_by_keyfile parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *keyfile,\n\tsize_t
      keyfile_size,\n\tuint64_t keyfile_offset,\n\tstruct crypt_keyslot_context **kc)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/keyslot_context.c:900,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/keyslot_context.c:905,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/keyslot_context.c:911,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/keyslot_context.c:913,1
    - Dst: crypt_keyslot_context_init_by_token_internal
      Src: /src/cryptsetup/lib/keyslot_context.c:917,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/keyslot_context.c:929,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:930,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:931,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 7
    argNames:
    - token
    - type
    - pin
    - pin_size
    - usrptr
    - kc
    - self_contained
    argTypes:
    - int
    - char*
    - char*
    - size_t
    - void*
    - struct crypt_keyslot_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 886
    functionDepth: 2
    functionLinenumber: 886
    functionLinenumberEnd: 934
    functionName: _crypt_keyslot_context_init_by_token
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - free
    - crypt_safe_memcpy
    - crypt_safe_free
    - crypt_keyslot_context_init_by_token_internal
    - strdup
    - crypt_zalloc
    linkageType: ''
    returnType: int
    signature: "int _crypt_keyslot_context_init_by_token(int token,\n\tconst char
      *type,\n\tconst char *pin, size_t pin_size,\n\tvoid *usrptr,\n\tstruct crypt_keyslot_context
      **kc,\n\tbool self_contained)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/lib/keyslot_context.c:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - cd
    - token
    - type
    - pin
    - pin_size
    - usrptr
    - kc
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - char*
    - size_t
    - void*
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 936
    functionDepth: 3
    functionLinenumber: 936
    functionLinenumberEnd: 946
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_token
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_NEW(int, crypt_keyslot_context_init_by_token,
      2, 8,\n\t/* crypt_keyslot_context_init_by_token parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tint token,\n\tconst char *type,\n\tconst
      char *pin, size_t pin_size,\n\tvoid *usrptr,\n\tstruct crypt_keyslot_context
      **kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_token
      Src: /src/cryptsetup/lib/keyslot_context.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - cd
    - token
    - type
    - pin
    - pin_size
    - usrptr
    - kc
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - char*
    - size_t
    - void*
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 948
    functionDepth: 3
    functionLinenumber: 948
    functionLinenumberEnd: 958
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_token
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_OLD(int, crypt_keyslot_context_init_by_token,
      2, 6,\n\t/* crypt_keyslot_context_init_by_token parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tint token,\n\tconst char *type,\n\tconst
      char *pin, size_t pin_size,\n\tvoid *usrptr,\n\tstruct crypt_keyslot_context
      **kc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/keyslot_context.c:971,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:976,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:977,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/keyslot_context.c:980,1
    - Dst: crypt_keyslot_context_init_by_key_internal
      Src: /src/cryptsetup/lib/keyslot_context.c:983,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - volume_key
    - volume_key_size
    - kc
    - self_contained
    argTypes:
    - char*
    - size_t
    - struct crypt_keyslot_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 960
    functionDepth: 2
    functionLinenumber: 960
    functionLinenumberEnd: 993
    functionName: _crypt_keyslot_context_init_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - free
    - crypt_keyslot_context_init_by_key_internal
    - crypt_volume_key_get_key
    - crypt_zalloc
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int _crypt_keyslot_context_init_by_volume_key(const char *volume_key,\n\tsize_t
      volume_key_size,\n\tstruct crypt_keyslot_context **kc,\n\tbool self_contained)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - volume_key
    - volume_key_size
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 995
    functionDepth: 3
    functionLinenumber: 995
    functionLinenumberEnd: 1003
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_volume_key
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_NEW(int, crypt_keyslot_context_init_by_volume_key,
      2, 8,\n\t/* crypt_keyslot_context_init_by_volume_key parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *volume_key,\n\tsize_t
      volume_key_size,\n\tstruct crypt_keyslot_context **kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - volume_key
    - volume_key_size
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1005
    functionDepth: 3
    functionLinenumber: 1005
    functionLinenumberEnd: 1013
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_volume_key
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_OLD(int, crypt_keyslot_context_init_by_volume_key,
      2, 6,\n\t/* crypt_keyslot_context_init_by_volume_key parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *volume_key,\n\tsize_t
      volume_key_size,\n\tstruct crypt_keyslot_context **kc)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/keyslot_context.c:1028,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1033,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1035,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1039,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1041,1
    - Dst: crypt_keyslot_context_init_by_signed_key_internal
      Src: /src/cryptsetup/lib/keyslot_context.c:1044,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1057,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1058,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:1059,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 6
    argNames:
    - volume_key
    - volume_key_size
    - signature
    - signature_size
    - kc
    - self_contained
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - struct crypt_keyslot_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1015
    functionDepth: 2
    functionLinenumber: 1015
    functionLinenumberEnd: 1062
    functionName: _crypt_keyslot_context_init_by_signed_key
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - free
    - crypt_free_volume_key
    - crypt_volume_key_get_key
    - crypt_keyslot_context_init_by_signed_key_internal
    - crypt_zalloc
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int _crypt_keyslot_context_init_by_signed_key(const char *volume_key,\n\tsize_t
      volume_key_size,\n\tconst char *signature,\n\tsize_t signature_size,\n\tstruct
      crypt_keyslot_context **kc,\n\tbool self_contained)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_signed_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - cd
    - volume_key
    - volume_key_size
    - signature
    - signature_size
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - char*
    - size_t
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1064
    functionDepth: 3
    functionLinenumber: 1064
    functionLinenumberEnd: 1074
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_signed_key
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_NEW(int, crypt_keyslot_context_init_by_signed_key,
      2, 8,\n\t/* crypt_keyslot_context_init_by_signed_key parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *volume_key,\n\tsize_t
      volume_key_size,\n\tconst char *signature,\n\tsize_t signature_size,\n\tstruct
      crypt_keyslot_context **kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_signed_key
      Src: /src/cryptsetup/lib/keyslot_context.c:1085,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - cd
    - volume_key
    - volume_key_size
    - signature
    - signature_size
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - char*
    - size_t
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1076
    functionDepth: 3
    functionLinenumber: 1076
    functionLinenumberEnd: 1086
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_signed_key
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_OLD(int, crypt_keyslot_context_init_by_signed_key,
      2, 7,\n\t/* crypt_keyslot_context_init_by_signed_key parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *volume_key,\n\tsize_t
      volume_key_size,\n\tconst char *signature,\n\tsize_t signature_size,\n\tstruct
      crypt_keyslot_context **kc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/keyslot_context.c:1098,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/keyslot_context.c:1103,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:1104,1
    - Dst: crypt_keyslot_context_init_by_keyring_internal
      Src: /src/cryptsetup/lib/keyslot_context.c:1110,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - key_description
    - kc
    - self_contained
    argTypes:
    - char*
    - struct crypt_keyslot_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1088
    functionDepth: 2
    functionLinenumber: 1088
    functionLinenumberEnd: 1120
    functionName: _crypt_keyslot_context_init_by_keyring
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_by_keyring_internal
    - crypt_zalloc
    - strdup
    - free
    linkageType: ''
    returnType: int
    signature: "int _crypt_keyslot_context_init_by_keyring(const char *key_description,\n\tstruct
      crypt_keyslot_context **kc,\n\tbool self_contained)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_keyring
      Src: /src/cryptsetup/lib/keyslot_context.c:1128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - key_description
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1122
    functionDepth: 3
    functionLinenumber: 1122
    functionLinenumberEnd: 1129
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_keyring
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_NEW(int, crypt_keyslot_context_init_by_keyring,
      2, 8,\n\t/* crypt_keyslot_context_init_by_keyring parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *key_description,\n\tstruct
      crypt_keyslot_context **kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_keyring
      Src: /src/cryptsetup/lib/keyslot_context.c:1137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - key_description
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1131
    functionDepth: 3
    functionLinenumber: 1131
    functionLinenumberEnd: 1138
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_keyring
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_OLD(int, crypt_keyslot_context_init_by_keyring,
      2, 7,\n\t/* crypt_keyslot_context_init_by_keyring parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *key_description,\n\tstruct
      crypt_keyslot_context **kc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/keyslot_context.c:1150,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/keyslot_context.c:1155,1
    - Dst: free
      Src: /src/cryptsetup/lib/keyslot_context.c:1156,1
    - Dst: crypt_keyslot_context_init_common
      Src: /src/cryptsetup/lib/keyslot_context.c:1169,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - key_description
    - kc
    - self_contained
    argTypes:
    - char*
    - struct crypt_keyslot_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1140
    functionDepth: 1
    functionLinenumber: 1140
    functionLinenumberEnd: 1179
    functionName: _crypt_keyslot_context_init_by_vk_in_keyring
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_common
    - crypt_zalloc
    - strdup
    - free
    linkageType: ''
    returnType: int
    signature: "int _crypt_keyslot_context_init_by_vk_in_keyring(const char *key_description,\n\tstruct
      crypt_keyslot_context **kc,\n\tbool self_contained)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/lib/keyslot_context.c:1187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - key_description
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1181
    functionDepth: 2
    functionLinenumber: 1181
    functionLinenumberEnd: 1188
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_vk_in_keyring
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_NEW(int, crypt_keyslot_context_init_by_vk_in_keyring,
      2, 8,\n\t/* crypt_keyslot_context_init_by_vk_in_keyring parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *key_description,\n\tstruct
      crypt_keyslot_context **kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_keyslot_context_init_by_vk_in_keyring
      Src: /src/cryptsetup/lib/keyslot_context.c:1196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - key_description
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_keyslot_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1190
    functionDepth: 2
    functionLinenumber: 1190
    functionLinenumberEnd: 1197
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - _crypt_keyslot_context_init_by_vk_in_keyring
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_OLD(int, crypt_keyslot_context_init_by_vk_in_keyring,
      2, 7,\n\t/* crypt_keyslot_context_init_by_vk_in_keyring parameters follows */\n\tstruct
      crypt_device *cd __attribute__((unused)),\n\tconst char *key_description,\n\tstruct
      crypt_keyslot_context **kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1199
    functionDepth: 0
    functionLinenumber: 1199
    functionLinenumberEnd: 1202
    functionName: crypt_keyslot_context_get_error
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_keyslot_context_get_error(struct crypt_keyslot_context *kc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/keyslot_context.c:1214,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/keyslot_context.c:1216,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/keyslot_context.c:1219,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - cd
    - pin
    - pin_size
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - struct crypt_keyslot_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1227
    functionName: crypt_keyslot_context_set_pin
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 2
    functionsReached:
    - crypt_safe_alloc
    - crypt_safe_free
    - crypt_safe_memcpy
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_context_set_pin(struct crypt_device *cd __attribute__((unused)),\n\tconst
      char *pin, size_t pin_size,\n\tstruct crypt_keyslot_context *kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1229
    functionDepth: 0
    functionLinenumber: 1229
    functionLinenumberEnd: 1232
    functionName: crypt_keyslot_context_get_type
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_keyslot_context_get_type(const struct crypt_keyslot_context
      *kc)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/keyslot_context.c:1236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - kc
    argTypes:
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 1235
        line_start: 1235
        source_file: /src/cryptsetup/lib/keyslot_context.c
    constantsTouched: []
    func_position:
      end: 1256
      start: 1234
    functionDepth: 0
    functionLinenumber: 1234
    functionLinenumberEnd: 1256
    functionName: keyslot_context_type_string
    functionSourceFile: /src/cryptsetup/lib/keyslot_context.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *keyslot_context_type_string(const struct crypt_keyslot_context
      *kc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_storage_init
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:52,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:53,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:54,1
    - Dst: crypt_storage_kernel_only
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:58,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:59,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 8
    argNames:
    - cd
    - w
    - iv_start
    - sector_size
    - cipher
    - cipher_mode
    - vk
    - flags
    argTypes:
    - struct crypt_device*
    - struct crypt_storage_wrapper*
    - uint64_t
    - int
    - char*
    - char*
    - struct volume_key*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 69
    functionName: crypt_storage_backend_init
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - crypt_volume_key_get_key
    - crypt_storage_kernel_only
    - crypt_storage_destroy
    - crypt_storage_init
    - log_dbg
    linkageType: ''
    returnType: int
    signature: "int crypt_storage_backend_init(struct crypt_device *cd,\n\t\tstruct
      crypt_storage_wrapper *w,\n\t\tuint64_t iv_start,\n\t\tint sector_size,\n\t\tconst
      char *cipher,\n\t\tconst char *cipher_mode,\n\t\tconst struct volume_key *vk,\n\t\tuint32_t
      flags)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:89,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:91,1
    - Dst: getpid
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:91,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:93,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:93,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:96,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:99,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:99,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:100,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:108,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:111,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:116,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:119,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:123,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:128,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:130,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:131,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 9
    argNames:
    - cd
    - cw
    - device
    - device_offset
    - iv_start
    - sector_size
    - cipher_spec
    - vk
    - open_flags
    argTypes:
    - struct crypt_device*
    - struct crypt_storage_wrapper*
    - struct device*
    - uint64_t
    - uint64_t
    - int
    - char*
    - struct volume_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 139
    functionName: crypt_storage_dmcrypt_init
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached:
    - _
    - snprintf
    - dm_get_dir
    - crypt_volume_key_description
    - dm_crypt_target_set
    - dm_create_device
    - dm_targets_free
    - dm_remove_device
    - log_dbg
    - device_block_adjust
    - getpid
    - log_err
    - device_path
    - open
    linkageType: ''
    returnType: int
    signature: "int crypt_storage_dmcrypt_init(\n\tstruct crypt_device *cd,\n\tstruct
      crypt_storage_wrapper *cw,\n\tstruct device *device,\n\tuint64_t device_offset,\n\tuint64_t
      iv_start,\n\tint sector_size,\n\tconst char *cipher_spec,\n\tstruct volume_key
      *vk,\n\tint open_flags)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:159,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:164,1
    - Dst: memset
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:168,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:170,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:171,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:173,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:178,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:184,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:185,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:192,1
    - Dst: crypt_storage_backend_init
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:197,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:203,1
    - Dst: crypt_storage_dmcrypt_init
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:208,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:211,1
    - Dst: crypt_storage_wrapper_destroy
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:217,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 9
    argNames:
    - cd
    - cw
    - device
    - data_offset
    - iv_start
    - sector_size
    - cipher
    - vk
    - flags
    argTypes:
    - struct crypt_device*
    - struct crypt_storage_wrapper**
    - struct device*
    - uint64_t
    - uint64_t
    - int
    - char*
    - struct volume_key*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 220
    functionName: crypt_storage_wrapper_init
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached:
    - memset
    - device_open
    - crypt_storage_wrapper_destroy
    - malloc
    - log_dbg
    - crypt_storage_dmcrypt_init
    - crypt_storage_backend_init
    - crypt_parse_name_and_mode
    - device_alignment
    - crypt_is_cipher_null
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int crypt_storage_wrapper_init(struct crypt_device *cd,\n\tstruct
      crypt_storage_wrapper **cw,\n\tstruct device *device,\n\tuint64_t data_offset,\n\tuint64_t
      iv_start,\n\tint sector_size,\n\tconst char *cipher,\n\tstruct volume_key *vk,\n\tuint32_t
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cw
    - offset
    - buffer
    - buffer_length
    argTypes:
    - struct crypt_storage_wrapper*
    - off_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 232
    functionName: crypt_storage_wrapper_read
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached:
    - read_lseek_blockwise
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t crypt_storage_wrapper_read(struct crypt_storage_wrapper *cw,\n\t\toff_t
      offset, void *buffer, size_t buffer_length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:241,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:248,1
    - Dst: crypt_storage_decrypt
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - cw
    - offset
    - buffer
    - buffer_length
    argTypes:
    - struct crypt_storage_wrapper*
    - off_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 265
    functionName: crypt_storage_wrapper_read_decrypt
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached:
    - read_lseek_blockwise
    - crypt_storage_decrypt
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t crypt_storage_wrapper_read_decrypt(struct crypt_storage_wrapper
      *cw,\n\t\toff_t offset, void *buffer, size_t buffer_length)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_storage_wrapper_read_decrypt
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:278,1
    - Dst: crypt_storage_decrypt
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:284,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - cw
    - offset
    - buffer
    - buffer_length
    argTypes:
    - struct crypt_storage_wrapper*
    - off_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 292
    functionName: crypt_storage_wrapper_decrypt
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached:
    - crypt_storage_wrapper_read_decrypt
    - crypt_storage_decrypt
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t crypt_storage_wrapper_decrypt(struct crypt_storage_wrapper
      *cw,\n\t\toff_t offset, void *buffer, size_t buffer_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cw
    - offset
    - buffer
    - buffer_length
    argTypes:
    - struct crypt_storage_wrapper*
    - off_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 303
    functionName: crypt_storage_wrapper_write
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached:
    - write_lseek_blockwise
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t crypt_storage_wrapper_write(struct crypt_storage_wrapper *cw,\n\t\toff_t
      offset, void *buffer, size_t buffer_length)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:309,1
    - Dst: crypt_storage_encrypt
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:317,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - cw
    - offset
    - buffer
    - buffer_length
    argTypes:
    - struct crypt_storage_wrapper*
    - off_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 328
    functionName: crypt_storage_wrapper_encrypt_write
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached:
    - crypt_storage_encrypt
    - write_lseek_blockwise
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t crypt_storage_wrapper_encrypt_write(struct crypt_storage_wrapper
      *cw,\n\t\toff_t offset, void *buffer, size_t buffer_length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:336,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:338,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:339,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:342,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - cw
    argTypes:
    - struct crypt_storage_wrapper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 343
    functionName: crypt_storage_wrapper_destroy
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 1
    functionsReached:
    - close
    - dm_remove_device
    - crypt_storage_destroy
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_storage_wrapper_destroy(struct crypt_storage_wrapper *cw)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fdatasync
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:350,1
    - Dst: fdatasync
      Src: /src/cryptsetup/lib/utils_storage_wrappers.c:352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cw
    argTypes:
    - struct crypt_storage_wrapper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 353
    functionName: crypt_storage_wrapper_datasync
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached:
    - fdatasync
    linkageType: ''
    returnType: int
    signature: int crypt_storage_wrapper_datasync(const struct crypt_storage_wrapper
      *cw)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cw
    argTypes:
    - struct crypt_storage_wrapper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: crypt_storage_wrapper_get_type
    functionSourceFile: /src/cryptsetup/lib/utils_storage_wrappers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: crypt_storage_wrapper_type
    signature: crypt_storage_wrapper_type crypt_storage_wrapper_get_type(const struct
      crypt_storage_wrapper *cw)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - (
    - c
    - ','
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    functionName: log_dbg
    functionSourceFile: /src/cryptsetup/lib/internal.h
    functionUses: 59
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_dbg(c, x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - (
    - c
    - ','
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    functionName: log_std
    functionSourceFile: /src/cryptsetup/lib/internal.h
    functionUses: 44
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_std(c, x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - (
    - c
    - ','
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    functionName: log_verbose
    functionSourceFile: /src/cryptsetup/lib/internal.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_verbose(c, x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - (
    - c
    - ','
    - x
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: log_err
    functionSourceFile: /src/cryptsetup/lib/internal.h
    functionUses: 115
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_err(c, x...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - major
    - minor
    - patch
    - release
    argTypes:
    - uint16_t
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: compact_version
    functionSourceFile: /src/cryptsetup/lib/internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t compact_version(uint16_t major, uint16_t minor, uint16_t patch,
      uint16_t release)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/cryptsetup/lib/internal.h:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 273
    functionName: crypt_zalloc
    functionSourceFile: /src/cryptsetup/lib/internal.h
    functionUses: 8
    functionsReached:
    - calloc
    linkageType: ''
    returnType: void
    signature: void *crypt_zalloc(size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - u
    - b
    - size
    argTypes:
    - uint64_t*
    - uint64_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 283
    functionName: uint64_mult_overflow
    functionSourceFile: /src/cryptsetup/lib/internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool uint64_mult_overflow(uint64_t *u, uint64_t b, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _local_sym
    - ','
    - _public_sym
    - ','
    - _ver_str
    - ','
    - _maj
    - ','
    - _min
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: _CRYPT_SYMVER
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_symver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CRYPT_SYMVER(_local_sym, _public_sym, _ver_str, _maj, _min)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _local_sym
    - ','
    - _public_sym
    - ','
    - _ver_str
    - ','
    - _maj
    - ','
    - _min
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: _CRYPT_SYMVER
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_symver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CRYPT_SYMVER(_local_sym, _public_sym, _ver_str, _maj, _min)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - _public_sym
    - ','
    - _prefix_str
    - ','
    - _maj
    - ','
    - _min
    - ','
    - _ret
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: _CRYPT_FUNC
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_symver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CRYPT_FUNC(_public_sym, _prefix_str, _maj, _min, _ret, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _ret
    - ','
    - _public_sym
    - ','
    - _maj
    - ','
    - _min
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_symver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CRYPT_SYMBOL_EXPORT_OLD(_ret, _public_sym, _maj, _min, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _ret
    - ','
    - _public_sym
    - ','
    - _maj
    - ','
    - _min
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_symver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CRYPT_SYMBOL_EXPORT_NEW(_ret, _public_sym, _maj, _min, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _ret
    - ','
    - _public_sym
    - ','
    - _maj
    - ','
    - _min
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_symver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CRYPT_SYMBOL_EXPORT_OLD(_ret, _public_sym, _maj, _min, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _ret
    - ','
    - _public_sym
    - ','
    - _maj
    - ','
    - _min
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_symver.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CRYPT_SYMBOL_EXPORT_NEW(_ret, _public_sym, _maj, _min, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - Text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: _
    functionSourceFile: /src/cryptsetup/lib/nls.h
    functionUses: 212
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(Text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - String
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: N_
    functionSourceFile: /src/cryptsetup/lib/nls.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: N_(String)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - String
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: N_
    functionSourceFile: /src/cryptsetup/lib/nls.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: N_(String)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - Text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: _
    functionSourceFile: /src/cryptsetup/lib/nls.h
    functionUses: 212
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(Text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - Text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: N_
    functionSourceFile: /src/cryptsetup/lib/nls.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: N_(Text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - Singular
    - ','
    - Plural
    - ','
    - Count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: ngettext
    functionSourceFile: /src/cryptsetup/lib/nls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ngettext(Singular, Plural, Count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/random.c:37,1
    - Dst: read
      Src: /src/cryptsetup/lib/random.c:40,1
    - Dst: assert
      Src: /src/cryptsetup/lib/random.c:49,1
    - Dst: assert
      Src: /src/cryptsetup/lib/random.c:50,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - char*
    - size_t
    assertStmts:
    - condition: (urandom_fd != -1)
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/cryptsetup/lib/random.c
    - condition: (len == 0)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/cryptsetup/lib/random.c
    - condition: ((size_t)(buf - old_buf) == old_len)
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/cryptsetup/lib/random.c
    constantsTouched: []
    func_position:
      end: 53
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 53
    functionName: _get_urandom
    functionSourceFile: /src/cryptsetup/lib/random.c
    functionUses: 0
    functionsReached:
    - read
    - assert
    linkageType: ''
    returnType: int
    signature: int _get_urandom(char *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/random.c:59,1
    - Dst: _
      Src: /src/cryptsetup/lib/random.c:60,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/random.c:64,1
    - Dst: _
      Src: /src/cryptsetup/lib/random.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - warn
    - expected_len
    - read_len
    argTypes:
    - struct crypt_device*
    - int
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 66
    functionName: _get_random_progress
    functionSourceFile: /src/cryptsetup/lib/random.c
    functionUses: 0
    functionsReached:
    - _
    - log_std
    linkageType: ''
    returnType: void
    signature: "void _get_random_progress(struct crypt_device *ctx, int warn,\n\t\t\t\t
      size_t expected_len, size_t read_len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/random.c:77,1
    - Dst: FD_ZERO
      Src: /src/cryptsetup/lib/random.c:80,1
    - Dst: FD_SET
      Src: /src/cryptsetup/lib/random.c:81,1
    - Dst: select
      Src: /src/cryptsetup/lib/random.c:86,1
    - Dst: _get_random_progress
      Src: /src/cryptsetup/lib/random.c:91,1
    - Dst: read
      Src: /src/cryptsetup/lib/random.c:101,1
    - Dst: assert
      Src: /src/cryptsetup/lib/random.c:123,1
    - Dst: assert
      Src: /src/cryptsetup/lib/random.c:124,1
    - Dst: _get_random_progress
      Src: /src/cryptsetup/lib/random.c:127,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 3
    argNames:
    - ctx
    - buf
    - len
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    assertStmts:
    - condition: (random_fd != -1)
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/cryptsetup/lib/random.c
    - condition: (len == 0)
      pos:
        line_end: 122
        line_start: 122
        source_file: /src/cryptsetup/lib/random.c
    - condition: ((size_t)(buf - old_buf) == old_len)
      pos:
        line_end: 123
        line_start: 123
        source_file: /src/cryptsetup/lib/random.c
    constantsTouched: []
    func_position:
      end: 130
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 130
    functionName: _get_random
    functionSourceFile: /src/cryptsetup/lib/random.c
    functionUses: 0
    functionsReached:
    - read
    - _get_random_progress
    - assert
    - FD_SET
    - select
    - FD_ZERO
    linkageType: ''
    returnType: int
    signature: int _get_random(struct crypt_device *ctx, char *buf, size_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/random.c:139,1
    - Dst: open
      Src: /src/cryptsetup/lib/random.c:145,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/lib/random.c:149,1
    - Dst: log_verbose
      Src: /src/cryptsetup/lib/random.c:150,1
    - Dst: _
      Src: /src/cryptsetup/lib/random.c:150,1
    - Dst: crypt_random_exit
      Src: /src/cryptsetup/lib/random.c:155,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/random.c:156,1
    - Dst: _
      Src: /src/cryptsetup/lib/random.c:156,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 158
    functionName: crypt_random_init
    functionSourceFile: /src/cryptsetup/lib/random.c
    functionUses: 0
    functionsReached:
    - _
    - log_verbose
    - log_err
    - crypt_fips_mode
    - open
    - crypt_random_exit
    linkageType: ''
    returnType: int
    signature: int crypt_random_init(struct crypt_device *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: _get_urandom
      Src: /src/cryptsetup/lib/random.c:167,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/lib/random.c:170,1
    - Dst: crypt_backend_rng
      Src: /src/cryptsetup/lib/random.c:171,1
    - Dst: _get_urandom
      Src: /src/cryptsetup/lib/random.c:173,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/lib/random.c:176,1
    - Dst: crypt_backend_rng
      Src: /src/cryptsetup/lib/random.c:177,1
    - Dst: crypt_get_rng_type
      Src: /src/cryptsetup/lib/random.c:180,1
    - Dst: crypt_random_default_key_rng
      Src: /src/cryptsetup/lib/random.c:181,1
    - Dst: _get_urandom
      Src: /src/cryptsetup/lib/random.c:184,1
    - Dst: _get_random
      Src: /src/cryptsetup/lib/random.c:187,1
    - Dst: abort
      Src: /src/cryptsetup/lib/random.c:190,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/random.c:194,1
    - Dst: _
      Src: /src/cryptsetup/lib/random.c:194,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/random.c:199,1
    - Dst: _
      Src: /src/cryptsetup/lib/random.c:199,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 4
    argNames:
    - ctx
    - buf
    - len
    - quality
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 202
    functionName: crypt_random_get
    functionSourceFile: /src/cryptsetup/lib/random.c
    functionUses: 1
    functionsReached:
    - _
    - crypt_random_default_key_rng
    - log_err
    - abort
    - crypt_get_rng_type
    - crypt_backend_rng
    - crypt_fips_mode
    - _get_urandom
    - _get_random
    linkageType: ''
    returnType: int
    signature: int crypt_random_get(struct crypt_device *ctx, char *buf, size_t len,
      int quality)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/cryptsetup/lib/random.c:209,1
    - Dst: close
      Src: /src/cryptsetup/lib/random.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 217
    functionName: crypt_random_exit
    functionSourceFile: /src/cryptsetup/lib/random.c
    functionUses: 1
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void crypt_random_exit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/random.c:222,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/random.c:226,1
    - Dst: abort
      Src: /src/cryptsetup/lib/random.c:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 231
    functionName: crypt_random_default_key_rng
    functionSourceFile: /src/cryptsetup/lib/random.c
    functionUses: 1
    functionsReached:
    - strcmp
    - abort
    linkageType: ''
    returnType: int
    signature: int crypt_random_default_key_rng(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - act_flags
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: act2dmflags
    functionSourceFile: /src/cryptsetup/lib/utils_dm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t act2dmflags(uint64_t act_flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - dmd
    argTypes:
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: single_segment
    functionSourceFile: /src/cryptsetup/lib/utils_dm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool single_segment(const struct crypt_dm_active_device *dmd)
  - 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: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: be16toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: be32toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: be64toh
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    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: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: bswap_16
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bswap_16(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: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: bswap_32
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bswap_32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 54
    functionName: bswap_64
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bswap_64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: htobe16
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: htole16
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: be16toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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/cryptsetup/lib/bitops.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: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: htobe32
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    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: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: htole32
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: be32toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: le32toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: htobe64
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    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: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: htole64
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: be64toh
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    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: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: le64toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: htobe16
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: htole16
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: be16toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: le16toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: htobe32
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    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: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: htole32
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: be32toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: le32toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: htobe64
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    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: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: htole64
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: be64toh
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    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: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: le64toh
    functionSourceFile: /src/cryptsetup/lib/bitops.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: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: swab16
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: swab16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: swab32
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: swab32(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: swab64
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: swab64(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: cpu_to_le16
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cpu_to_le16(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: cpu_to_le32
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cpu_to_le32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: cpu_to_le64
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cpu_to_le64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 98
    functionName: cpu_to_be16
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cpu_to_be16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: cpu_to_be32
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cpu_to_be32(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: cpu_to_be64
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cpu_to_be64(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: le16_to_cpu
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16_to_cpu(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: le32_to_cpu
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32_to_cpu(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: le64_to_cpu
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64_to_cpu(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: be16_to_cpu
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16_to_cpu(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: be32_to_cpu
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32_to_cpu(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: be64_to_cpu
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64_to_cpu(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: setbit
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: setbit(a,i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: clrbit
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: clrbit(a,i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: isset
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isset(a,i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: isclr
    functionSourceFile: /src/cryptsetup/lib/bitops.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isclr(a,i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/cryptsetup/lib/utils.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: crypt_getpagesize
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: size_t
    signature: size_t crypt_getpagesize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/cryptsetup/lib/utils.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: crypt_cpusonline
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: unsigned
    signature: unsigned crypt_cpusonline(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/cryptsetup/lib/utils.c:37,1
    - Dst: sysconf
      Src: /src/cryptsetup/lib/utils.c:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 52
    functionName: crypt_getphysmemory_kb
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_getphysmemory_kb(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/cryptsetup/lib/utils.c:59,1
    - Dst: sysconf
      Src: /src/cryptsetup/lib/utils.c:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 74
    functionName: crypt_getphysmemoryfree_kb
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_getphysmemoryfree_kb(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils.c:83,1
    - Dst: read
      Src: /src/cryptsetup/lib/utils.c:86,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils.c:87,1
    - Dst: strstr
      Src: /src/cryptsetup/lib/utils.c:96,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils.c:100,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 104
    functionName: crypt_swapavailable
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - close
    - strstr
    - sscanf
    - read
    - open
    linkageType: ''
    returnType: bool
    signature: bool crypt_swapavailable(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getpriority
      Src: /src/cryptsetup/lib/utils.c:111,1
    - Dst: getuid
      Src: /src/cryptsetup/lib/utils.c:121,1
    - Dst: geteuid
      Src: /src/cryptsetup/lib/utils.c:121,1
    - Dst: setpriority
      Src: /src/cryptsetup/lib/utils.c:126,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils.c:127,1
    - Dst: setpriority
      Src: /src/cryptsetup/lib/utils.c:130,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils.c:131,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - cd
    - priority
    - raise
    argTypes:
    - struct crypt_device*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 133
    functionName: crypt_process_priority
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - getuid
    - setpriority
    - log_dbg
    - geteuid
    - getpriority
    linkageType: ''
    returnType: void
    signature: void crypt_process_priority(struct crypt_device *cd, int *priority,
      bool raise)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/cryptsetup/lib/utils.c:151,1
    - Dst: read
      Src: /src/cryptsetup/lib/utils.c:161,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/utils.c:166,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/utils.c:178,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - fd
    - bytes
    argTypes:
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 180
    functionName: keyfile_seek
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - crypt_safe_memzero
    - lseek
    - read
    linkageType: ''
    returnType: int
    signature: int keyfile_seek(int fd, uint64_t bytes)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils.c:202,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:204,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:204,1
    - Dst: isatty
      Src: /src/cryptsetup/lib/utils.c:211,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:212,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:212,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils.c:227,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:228,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:228,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils.c:231,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:236,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:236,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/utils.c:249,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:251,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:251,1
    - Dst: keyfile_seek
      Src: /src/cryptsetup/lib/utils.c:256,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:257,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:257,1
    - Dst: crypt_safe_realloc
      Src: /src/cryptsetup/lib/utils.c:264,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:266,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:266,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/utils.c:284,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:286,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:286,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:303,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:303,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:310,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:310,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils.c:315,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils.c:315,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils.c:324,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/utils.c:327,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 115
    argCount: 7
    argNames:
    - cd
    - keyfile
    - key
    - key_size_read
    - keyfile_offset
    - key_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char**
    - size_t*
    - uint64_t
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 329
    functionName: crypt_keyfile_device_read
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 2
    functionsReached:
    - crypt_safe_realloc
    - crypt_safe_alloc
    - _
    - read_buffer
    - close
    - keyfile_seek
    - S_ISREG
    - isatty
    - log_err
    - crypt_safe_free
    - stat
    - open
    linkageType: ''
    returnType: int
    signature: "int crypt_keyfile_device_read(struct crypt_device *cd,  const char
      *keyfile,\n\t\t\t      char **key, size_t *key_size_read,\n\t\t\t      uint64_t
      keyfile_offset, size_t key_size,\n\t\t\t      uint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyfile_device_read
      Src: /src/cryptsetup/lib/utils.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - cd
    - keyfile
    - key
    - key_size_read
    - keyfile_offset
    - keyfile_size_max
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char**
    - size_t*
    - size_t
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 338
    functionName: crypt_keyfile_read
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - crypt_keyfile_device_read
    linkageType: ''
    returnType: int
    signature: "int crypt_keyfile_read(struct crypt_device *cd,  const char *keyfile,\n\t\t
      \      char **key, size_t *key_size_read,\n\t\t       size_t keyfile_offset,
      size_t keyfile_size_max,\n\t\t       uint32_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: uname
      Src: /src/cryptsetup/lib/utils.c:346,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils.c:349,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils.c:352,1
    - Dst: compact_version
      Src: /src/cryptsetup/lib/utils.c:359,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - kversion
    argTypes:
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 362
    functionName: kernel_version
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - compact_version
    - uname
    - sscanf
    linkageType: ''
    returnType: int
    signature: int kernel_version(uint64_t *kversion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils.c:369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - str
    - list
    - list_size
    argTypes:
    - char*
    - char**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 373
    functionName: crypt_string_in
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool crypt_string_in(const char *str, char **list, size_t list_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils.c:382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 383
    functionName: crypt_strcmp
    functionSourceFile: /src/cryptsetup/lib/utils.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int crypt_strcmp(const char *a, const char *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:41,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:43,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:45,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - pbkdf_type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 49
    functionName: crypt_get_pbkdf_type_params
    functionSourceFile: /src/cryptsetup/lib/utils_pbkdf.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct crypt_pbkdf_type
    signature: struct crypt_pbkdf_type *crypt_get_pbkdf_type_params(const char *pbkdf_type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_getphysmemory_kb
      Src: /src/cryptsetup/lib/utils_pbkdf.c:53,1
    - Dst: crypt_swapavailable
      Src: /src/cryptsetup/lib/utils_pbkdf.c:70,1
    - Dst: crypt_getphysmemoryfree_kb
      Src: /src/cryptsetup/lib/utils_pbkdf.c:71,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 84
    functionName: pbkdf_adjusted_phys_memory_kb
    functionSourceFile: /src/cryptsetup/lib/utils_pbkdf.c
    functionUses: 0
    functionsReached:
    - crypt_getphysmemoryfree_kb
    - crypt_getphysmemory_kb
    - crypt_swapavailable
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pbkdf_adjusted_phys_memory_kb(void)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/utils_pbkdf.c:96,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:101,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:105,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:105,1
    - Dst: crypt_parse_pbkdf
      Src: /src/cryptsetup/lib/utils_pbkdf.c:109,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:111,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:111,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/utils_pbkdf.c:115,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:116,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:116,1
    - Dst: crypt_pbkdf_get_limits
      Src: /src/cryptsetup/lib/utils_pbkdf.c:120,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/lib/utils_pbkdf.c:124,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:125,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/lib/utils_pbkdf.c:125,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:126,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:127,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:127,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:131,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:133,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:133,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:138,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:138,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:148,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:148,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:153,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:153,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:160,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:160,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:165,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:165,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:169,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:169,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:173,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:173,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:178,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:178,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 68
    argCount: 2
    argNames:
    - cd
    - pbkdf
    argTypes:
    - struct crypt_device*
    - struct crypt_pbkdf_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 183
    functionName: verify_pbkdf_params
    functionSourceFile: /src/cryptsetup/lib/utils_pbkdf.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_hash_size
    - log_err
    - crypt_pbkdf_get_limits
    - crypt_parse_pbkdf
    - init_crypto
    - strcmp
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: "int verify_pbkdf_params(struct crypt_device *cd,\n\t\t\tconst struct
      crypt_pbkdf_type *pbkdf)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_pbkdf
      Src: /src/cryptsetup/lib/utils_pbkdf.c:189,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/lib/utils_pbkdf.c:196,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:197,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_pbkdf.c:198,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_pbkdf.c:198,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/lib/utils_pbkdf.c:202,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:205,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/lib/utils_pbkdf.c:206,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/lib/utils_pbkdf.c:208,1
    - Dst: verify_pbkdf_params
      Src: /src/cryptsetup/lib/utils_pbkdf.c:210,1
    - Dst: crypt_pbkdf_get_limits
      Src: /src/cryptsetup/lib/utils_pbkdf.c:214,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_pbkdf.c:218,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_pbkdf.c:219,1
    - Dst: crypt_cpusonline
      Src: /src/cryptsetup/lib/utils_pbkdf.c:251,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_pbkdf.c:253,1
    - Dst: pbkdf_adjusted_phys_memory_kb
      Src: /src/cryptsetup/lib/utils_pbkdf.c:262,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_pbkdf.c:264,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:271,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_pbkdf.c:272,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_pbkdf.c:275,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 58
    argCount: 3
    argNames:
    - cd
    - pbkdf
    - dev_type
    argTypes:
    - struct crypt_device*
    - struct crypt_pbkdf_type*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 280
    functionName: init_pbkdf_type
    functionSourceFile: /src/cryptsetup/lib/utils_pbkdf.c
    functionUses: 0
    functionsReached:
    - crypt_get_pbkdf_type_params
    - _
    - verify_pbkdf_params
    - pbkdf_adjusted_phys_memory_kb
    - crypt_cpusonline
    - log_err
    - log_dbg
    - strdup
    - crypt_fips_mode
    - crypt_get_pbkdf
    - crypt_pbkdf_get_limits
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int init_pbkdf_type(struct crypt_device *cd,\n\t\t    const struct
      crypt_pbkdf_type *pbkdf,\n\t\t    const char *dev_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_pbkdf.c:290,1
    - Dst: crypt_get_pbkdf
      Src: /src/cryptsetup/lib/utils_pbkdf.c:292,1
    - Dst: init_pbkdf_type
      Src: /src/cryptsetup/lib/utils_pbkdf.c:294,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/lib/utils_pbkdf.c:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - cd
    - pbkdf
    argTypes:
    - struct crypt_device*
    - struct crypt_pbkdf_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 295
    functionName: crypt_set_pbkdf_type
    functionSourceFile: /src/cryptsetup/lib/utils_pbkdf.c
    functionUses: 16
    functionsReached:
    - log_dbg
    - crypt_get_type
    - init_pbkdf_type
    - crypt_get_pbkdf
    linkageType: ''
    returnType: int
    signature: int crypt_set_pbkdf_type(struct crypt_device *cd, const struct crypt_pbkdf_type
      *pbkdf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_pbkdf
      Src: /src/cryptsetup/lib/utils_pbkdf.c:302,1
    - Dst: crypt_get_pbkdf
      Src: /src/cryptsetup/lib/utils_pbkdf.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 303
    functionName: crypt_get_pbkdf_type
    functionSourceFile: /src/cryptsetup/lib/utils_pbkdf.c
    functionUses: 2
    functionsReached:
    - crypt_get_pbkdf
    linkageType: ''
    returnType: struct crypt_pbkdf_type
    signature: struct crypt_pbkdf_type *crypt_get_pbkdf_type(struct crypt_device *cd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:310,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/lib/utils_pbkdf.c:310,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/lib/utils_pbkdf.c:311,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_pbkdf.c:312,1
    - Dst: crypt_get_pbkdf_type_params
      Src: /src/cryptsetup/lib/utils_pbkdf.c:313,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 316
    functionName: crypt_get_pbkdf_default
    functionSourceFile: /src/cryptsetup/lib/utils_pbkdf.c
    functionUses: 4
    functionsReached:
    - crypt_get_pbkdf_type_params
    - strcmp
    - crypt_fips_mode
    linkageType: ''
    returnType: struct crypt_pbkdf_type
    signature: struct crypt_pbkdf_type *crypt_get_pbkdf_default(const char *type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_pbkdf
      Src: /src/cryptsetup/lib/utils_pbkdf.c:326,1
    - Dst: verify_pbkdf_params
      Src: /src/cryptsetup/lib/utils_pbkdf.c:330,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_pbkdf.c:332,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_pbkdf.c:342,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - cd
    - iteration_time_ms
    argTypes:
    - struct crypt_device*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 318
    functionDepth: 2
    functionLinenumber: 318
    functionLinenumberEnd: 343
    functionName: crypt_set_iteration_time
    functionSourceFile: /src/cryptsetup/lib/utils_pbkdf.c
    functionUses: 5
    functionsReached:
    - log_dbg
    - verify_pbkdf_params
    - crypt_get_pbkdf
    linkageType: ''
    returnType: void
    signature: void crypt_set_iteration_time(struct crypt_device *cd, uint64_t iteration_time_ms)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/lib/utils_devpath.c:39,1
    - Dst: opendir
      Src: /src/cryptsetup/lib/utils_devpath.c:44,1
    - Dst: readdir
      Src: /src/cryptsetup/lib/utils_devpath.c:48,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_devpath.c:50,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_devpath.c:54,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_devpath.c:55,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_devpath.c:56,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_devpath.c:57,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_devpath.c:60,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_devpath.c:61,1
    - Dst: S_ISDIR
      Src: /src/cryptsetup/lib/utils_devpath.c:64,1
    - Dst: __lookup_dev
      Src: /src/cryptsetup/lib/utils_devpath.c:65,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_devpath.c:68,1
    - Dst: dm_is_dm_kernel_name
      Src: /src/cryptsetup/lib/utils_devpath.c:70,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_devpath.c:73,1
    - Dst: closedir
      Src: /src/cryptsetup/lib/utils_devpath.c:79,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 35
    argCount: 4
    argNames:
    - path
    - dev
    - dir_level
    - max_level
    argTypes:
    - char*
    - dev_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 81
    functionName: __lookup_dev
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 1
    functionsReached:
    - closedir
    - opendir
    - S_ISDIR
    - strncmp
    - strncpy
    - strdup
    - stat
    - __lookup_dev
    - strlen
    - strcmp
    - readdir
    - S_ISBLK
    - dm_is_dm_kernel_name
    linkageType: ''
    returnType: char
    signature: char *__lookup_dev(char *path, dev_t dev, int dir_level, const int
      max_level)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makedev
      Src: /src/cryptsetup/lib/utils_devpath.c:91,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_devpath.c:92,1
    - Dst: __lookup_dev
      Src: /src/cryptsetup/lib/utils_devpath.c:96,1
    - Dst: dm_is_dm_device
      Src: /src/cryptsetup/lib/utils_devpath.c:100,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_devpath.c:101,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/utils_devpath.c:101,1
    - Dst: __lookup_dev
      Src: /src/cryptsetup/lib/utils_devpath.c:102,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_devpath.c:106,1
    - Dst: __lookup_dev
      Src: /src/cryptsetup/lib/utils_devpath.c:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - major
    - minor
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 108
    functionName: lookup_dev_old
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - dm_is_dm_device
    - dm_get_dir
    - makedev
    - strncpy
    - __lookup_dev
    linkageType: ''
    returnType: char
    signature: char *lookup_dev_old(int major, int minor)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_devpath.c:120,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:123,1
    - Dst: readlink
      Src: /src/cryptsetup/lib/utils_devpath.c:126,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_devpath.c:129,1
    - Dst: lookup_dev_old
      Src: /src/cryptsetup/lib/utils_devpath.c:130,1
    - Dst: strrchr
      Src: /src/cryptsetup/lib/utils_devpath.c:135,1
    - Dst: dm_is_dm_kernel_name
      Src: /src/cryptsetup/lib/utils_devpath.c:140,1
    - Dst: dm_device_path
      Src: /src/cryptsetup/lib/utils_devpath.c:141,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:142,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_devpath.c:143,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_devpath.c:148,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_devpath.c:149,1
    - Dst: makedev
      Src: /src/cryptsetup/lib/utils_devpath.c:150,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_devpath.c:151,1
    - Dst: lookup_dev_old
      Src: /src/cryptsetup/lib/utils_devpath.c:153,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 1
    argNames:
    - dev_id
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 113
    functionDepth: 3
    functionLinenumber: 113
    functionLinenumberEnd: 157
    functionName: crypt_lookup_dev
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - snprintf
    - free
    - makedev
    - dm_device_path
    - readlink
    - strdup
    - sscanf
    - strrchr
    - stat
    - S_ISBLK
    - dm_is_dm_kernel_name
    - lookup_dev_old
    linkageType: ''
    returnType: char
    signature: char *crypt_lookup_dev(const char *dev_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_devpath.c:164,1
    - Dst: read
      Src: /src/cryptsetup/lib/utils_devpath.c:166,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_devpath.c:167,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_devpath.c:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - sysfs_path
    - value
    argTypes:
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 176
    functionName: _read_uint64
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 1
    functionsReached:
    - open
    - sscanf
    - close
    - read
    linkageType: ''
    returnType: int
    signature: int _read_uint64(const char *sysfs_path, uint64_t *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:182,1
    - Dst: _read_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - major
    - minor
    - value
    - attr
    argTypes:
    - int
    - int
    - uint64_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 187
    functionName: _sysfs_get_uint64
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 1
    functionsReached:
    - _read_uint64
    - snprintf
    linkageType: ''
    returnType: int
    signature: int _sysfs_get_uint64(int major, int minor, uint64_t *value, const
      char *attr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:193,1
    - Dst: _read_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - sysfs_path
    - value
    - attr
    argTypes:
    - char*
    - uint64_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 198
    functionName: _path_get_uint64
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - _read_uint64
    - snprintf
    linkageType: ''
    returnType: int
    signature: int _path_get_uint64(const char *sysfs_path, uint64_t *value, const
      char *attr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:205,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_devpath.c:209,1
    - Dst: read
      Src: /src/cryptsetup/lib/utils_devpath.c:211,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_devpath.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - major
    - minor
    - buf
    - buf_size
    - attr
    argTypes:
    - int
    - int
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 215
    functionName: _sysfs_get_string
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - open
    - snprintf
    - close
    - read
    linkageType: ''
    returnType: int
    signature: int _sysfs_get_string(int major, int minor, char *buf, size_t buf_size,
      const char *attr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_devpath.c:222,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_devpath.c:225,1
    - Dst: _sysfs_get_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:228,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_devpath.c:228,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_devpath.c:228,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - dev_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: crypt_dev_get_partition_number
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - minor
    - major
    - _sysfs_get_uint64
    - stat
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int crypt_dev_get_partition_number(const char *dev_path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _sysfs_get_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - major
    - minor
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 243
    functionName: crypt_dev_is_rotational
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - _sysfs_get_uint64
    linkageType: ''
    returnType: int
    signature: int crypt_dev_is_rotational(int major, int minor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _sysfs_get_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - major
    - minor
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 253
    functionName: crypt_dev_is_dax
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - _sysfs_get_uint64
    linkageType: ''
    returnType: int
    signature: int crypt_dev_is_dax(int major, int minor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _sysfs_get_string
      Src: /src/cryptsetup/lib/utils_devpath.c:259,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_devpath.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - major
    - minor
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 263
    functionName: crypt_dev_is_zoned
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - strncmp
    - _sysfs_get_string
    linkageType: ''
    returnType: int
    signature: int crypt_dev_is_zoned(int major, int minor)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _sysfs_get_string
      Src: /src/cryptsetup/lib/utils_devpath.c:270,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_devpath.c:273,1
    - Dst: _sysfs_get_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:277,1
    - Dst: _sysfs_get_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:281,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - major
    - minor
    - tag_size
    argTypes:
    - int
    - int
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 286
    functionName: crypt_dev_is_nop_dif
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - strncmp
    - _sysfs_get_uint64
    - _sysfs_get_string
    linkageType: ''
    returnType: int
    signature: int crypt_dev_is_nop_dif(int major, int minor, uint32_t *tag_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_devpath.c:293,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_devpath.c:296,1
    - Dst: _sysfs_get_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:299,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_devpath.c:299,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_devpath.c:299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - dev_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 304
    functionName: crypt_dev_is_partition
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - minor
    - major
    - _sysfs_get_uint64
    - stat
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int crypt_dev_is_partition(const char *dev_path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_dev_is_partition
      Src: /src/cryptsetup/lib/utils_devpath.c:311,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_devpath.c:314,1
    - Dst: _sysfs_get_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:317,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_devpath.c:317,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_devpath.c:317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - dev_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 323
    functionName: crypt_dev_partition_offset
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - crypt_dev_is_partition
    - minor
    - major
    - _sysfs_get_uint64
    - stat
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_dev_partition_offset(const char *dev_path)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_devpath.c:337,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_devpath.c:340,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:343,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_devpath.c:344,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_devpath.c:344,1
    - Dst: opendir
      Src: /src/cryptsetup/lib/utils_devpath.c:347,1
    - Dst: readlink
      Src: /src/cryptsetup/lib/utils_devpath.c:351,1
    - Dst: closedir
      Src: /src/cryptsetup/lib/utils_devpath.c:353,1
    - Dst: strrchr
      Src: /src/cryptsetup/lib/utils_devpath.c:359,1
    - Dst: closedir
      Src: /src/cryptsetup/lib/utils_devpath.c:361,1
    - Dst: dm_is_dm_kernel_name
      Src: /src/cryptsetup/lib/utils_devpath.c:367,1
    - Dst: closedir
      Src: /src/cryptsetup/lib/utils_devpath.c:368,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/utils_devpath.c:372,1
    - Dst: readdir
      Src: /src/cryptsetup/lib/utils_devpath.c:373,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_devpath.c:374,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:377,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_devpath.c:381,1
    - Dst: S_ISDIR
      Src: /src/cryptsetup/lib/utils_devpath.c:384,1
    - Dst: _path_get_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:385,1
    - Dst: _path_get_uint64
      Src: /src/cryptsetup/lib/utils_devpath.c:386,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:389,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_devpath.c:391,1
    - Dst: closedir
      Src: /src/cryptsetup/lib/utils_devpath.c:396,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 45
    argCount: 3
    argNames:
    - dev_path
    - offset
    - size
    argTypes:
    - char*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 399
    functionName: crypt_get_partition_device
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - closedir
    - _path_get_uint64
    - opendir
    - snprintf
    - S_ISDIR
    - minor
    - major
    - strncmp
    - readlink
    - strdup
    - strrchr
    - stat
    - strlen
    - readdir
    - S_ISBLK
    - dm_is_dm_kernel_name
    linkageType: ''
    returnType: char
    signature: char *crypt_get_partition_device(const char *dev_path, uint64_t offset,
      uint64_t size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_dev_is_partition
      Src: /src/cryptsetup/lib/utils_devpath.c:408,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_devpath.c:411,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:414,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_devpath.c:415,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_devpath.c:415,1
    - Dst: readlink
      Src: /src/cryptsetup/lib/utils_devpath.c:418,1
    - Dst: strrchr
      Src: /src/cryptsetup/lib/utils_devpath.c:424,1
    - Dst: strrchr
      Src: /src/cryptsetup/lib/utils_devpath.c:428,1
    - Dst: dm_is_dm_kernel_name
      Src: /src/cryptsetup/lib/utils_devpath.c:433,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:436,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_devpath.c:439,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - dev_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 440
    functionName: crypt_get_base_device
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - snprintf
    - crypt_dev_is_partition
    - minor
    - major
    - readlink
    - strdup
    - strrchr
    - stat
    - dm_is_dm_kernel_name
    linkageType: ''
    returnType: char
    signature: char *crypt_get_base_device(const char *dev_path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/cryptsetup/lib/utils_devpath.c:447,1
    - Dst: readdir
      Src: /src/cryptsetup/lib/utils_devpath.c:453,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_devpath.c:455,1
    - Dst: dirfd
      Src: /src/cryptsetup/lib/utils_devpath.c:458,1
    - Dst: fstatat
      Src: /src/cryptsetup/lib/utils_devpath.c:459,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_devpath.c:464,1
    - Dst: S_ISLNK
      Src: /src/cryptsetup/lib/utils_devpath.c:464,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_devpath.c:467,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/utils_devpath.c:467,1
    - Dst: closedir
      Src: /src/cryptsetup/lib/utils_devpath.c:473,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 1
    argNames:
    - dm_uuid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 476
    functionName: lookup_by_disk_id
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - closedir
    - opendir
    - S_ISLNK
    - fstatat
    - strncmp
    - S_ISREG
    - dirfd
    - strlen
    - readdir
    linkageType: ''
    returnType: int
    signature: int lookup_by_disk_id(const char *dm_uuid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/cryptsetup/lib/utils_devpath.c:485,1
    - Dst: readdir
      Src: /src/cryptsetup/lib/utils_devpath.c:491,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_devpath.c:493,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_devpath.c:496,1
    - Dst: dirfd
      Src: /src/cryptsetup/lib/utils_devpath.c:503,1
    - Dst: openat
      Src: /src/cryptsetup/lib/utils_devpath.c:506,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_devpath.c:510,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_devpath.c:510,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_devpath.c:511,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/utils_devpath.c:516,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_devpath.c:519,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/utils_devpath.c:519,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_devpath.c:523,1
    - Dst: closedir
      Src: /src/cryptsetup/lib/utils_devpath.c:526,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 31
    argCount: 1
    argNames:
    - dm_uuid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 529
    functionName: lookup_by_sysfs_uuid_field
    functionSourceFile: /src/cryptsetup/lib/utils_devpath.c
    functionUses: 0
    functionsReached:
    - closedir
    - read_buffer
    - opendir
    - snprintf
    - fstat
    - strncmp
    - S_ISREG
    - openat
    - dirfd
    - close
    - strlen
    - readdir
    linkageType: ''
    returnType: int
    signature: int lookup_by_sysfs_uuid_field(const char *dm_uuid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: crypt_set_debug_level
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_set_debug_level(int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 158
    functionName: crypt_get_debug_level
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_get_debug_level(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: struct crypt_device*::log
      Src: /src/cryptsetup/lib/setup.c:169,1
    - Dst: _default_log
      Src: /src/cryptsetup/lib/setup.c:171,1
    - Dst: fprintf
      Src: /src/cryptsetup/lib/setup.c:174,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - cd
    - level
    - msg
    argTypes:
    - struct crypt_device*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 175
    functionName: crypt_log
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 7
    functionsReached:
    - struct crypt_device*::log
    - _default_log
    - fprintf
    linkageType: ''
    returnType: void
    signature: void crypt_log(struct crypt_device *cd, int level, const char *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: format
      Src: /src/cryptsetup/lib/setup.c:177,1
    - Dst: va_start
      Src: /src/cryptsetup/lib/setup.c:184,1
    - Dst: vsnprintf
      Src: /src/cryptsetup/lib/setup.c:186,1
    - Dst: strncat
      Src: /src/cryptsetup/lib/setup.c:191,1
    - Dst: crypt_log
      Src: /src/cryptsetup/lib/setup.c:193,1
    - Dst: va_end
      Src: /src/cryptsetup/lib/setup.c:196,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 3
    argNames:
    - cd
    - level
    - format
    argTypes:
    - struct crypt_device*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 197
    functionName: crypt_logf
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_log
    - format
    - vsnprintf
    - strncat
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void crypt_logf(struct crypt_device *cd, int level, const char *format,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: mdata_device_path
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_path
    linkageType: ''
    returnType: char
    signature: char *mdata_device_path(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: data_device_path
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_path
    linkageType: ''
    returnType: char
    signature: char *data_device_path(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 213
    functionName: crypt_metadata_device
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct device
    signature: struct device *crypt_metadata_device(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 218
    functionName: crypt_data_device
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct device
    signature: struct device *crypt_data_device(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 221
        line_start: 221
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 224
    functionName: crypt_get_metadata_size_bytes
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_get_metadata_size_bytes(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 227
        line_start: 227
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 230
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 230
    functionName: crypt_get_keyslots_size_bytes
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_get_keyslots_size_bytes(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 233
        line_start: 233
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: crypt_get_data_offset_sectors
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_get_data_offset_sectors(struct crypt_device *cd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:242,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:243,1
    - Dst: opal_supported
      Src: /src/cryptsetup/lib/setup.c:245,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:248,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:248,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:250,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:250,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - cd
    - opal_device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 241
        line_start: 241
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (opal_device)
      pos:
        line_end: 242
        line_start: 242
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 257
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 257
    functionName: crypt_opal_supported
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - assert
    - log_err
    - device_path
    - opal_supported
    linkageType: ''
    returnType: int
    signature: int crypt_opal_supported(struct crypt_device *cd, struct device *opal_device)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_random_init
      Src: /src/cryptsetup/lib/setup.c:264,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:266,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:266,1
    - Dst: crypt_backend_init
      Src: /src/cryptsetup/lib/setup.c:270,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:272,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:272,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:275,1
    - Dst: crypt_backend_version
      Src: /src/cryptsetup/lib/setup.c:276,1
    - Dst: crypt_argon2_version
      Src: /src/cryptsetup/lib/setup.c:276,1
    - Dst: uname
      Src: /src/cryptsetup/lib/setup.c:278,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:279,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 285
    functionName: init_crypto
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - _
    - crypt_argon2_version
    - crypt_backend_version
    - crypt_random_init
    - log_err
    - log_dbg
    - uname
    - crypt_backend_init
    linkageType: ''
    returnType: int
    signature: int init_crypto(struct crypt_device *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/setup.c:298,1
    - Dst: crypt_plain_hash
      Src: /src/cryptsetup/lib/setup.c:302,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:305,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:305,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:308,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:308,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/setup.c:310,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/setup.c:313,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:315,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/setup.c:317,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/setup.c:321,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/setup.c:323,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/setup.c:328,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 6
    argNames:
    - cd
    - hash_name
    - key_size
    - pass
    - passLen
    - vk
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - char*
    - size_t
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 287
    functionDepth: 3
    functionLinenumber: 287
    functionLinenumberEnd: 331
    functionName: process_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_alloc_volume_key_by_safe_alloc
    - crypt_safe_alloc
    - _
    - crypt_safe_memcpy
    - crypt_plain_hash
    - crypt_safe_free
    - log_err
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int process_key(struct crypt_device *cd, const char *hash_name,\n\t\t
      \      size_t key_size, const char *pass, size_t passLen,\n\t\t       struct
      volume_key **vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: isPLAIN
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int isPLAIN(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: isLUKS1
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 5
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int isLUKS1(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 346
    functionName: isLUKS2
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 9
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int isLUKS2(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:350,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: isLUKS
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - isLUKS1
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: int isLUKS(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 356
    functionName: isLOOPAES
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int isLOOPAES(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 361
    functionName: isVERITY
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int isVERITY(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 366
    functionName: isTCRYPT
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int isTCRYPT(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: isINTEGRITY
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int isINTEGRITY(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 376
    functionName: isBITLK
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int isBITLK(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: isFVAULT2
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int isFVAULT2(const char *type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:389,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:389,1
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:393,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:395,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:395,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:399,1
    - Dst: LUKS2_unmet_requirements
      Src: /src/cryptsetup/lib/setup.c:402,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 3
    argNames:
    - cd
    - cdflags
    - mask
    argTypes:
    - struct crypt_device*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 403
    functionName: _onlyLUKS
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - isLUKS
    - isLUKS1
    - log_err
    - LUKS2_unmet_requirements
    linkageType: ''
    returnType: int
    signature: int _onlyLUKS(struct crypt_device *cd, uint32_t cdflags, uint32_t mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 2
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: onlyLUKSunrestricted
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _onlyLUKS
    linkageType: ''
    returnType: int
    signature: int onlyLUKSunrestricted(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 413
    functionName: onlyLUKSnoRequirements
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _onlyLUKS
    linkageType: ''
    returnType: int
    signature: int onlyLUKSnoRequirements(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 418
    functionName: onlyLUKS
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - _onlyLUKS
    linkageType: ''
    returnType: int
    signature: int onlyLUKS(struct crypt_device *cd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:426,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:426,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:430,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:432,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:432,1
    - Dst: LUKS2_unmet_requirements
      Src: /src/cryptsetup/lib/setup.c:439,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - cd
    - cdflags
    - mask
    argTypes:
    - struct crypt_device*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 440
    functionName: _onlyLUKS2
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - log_err
    - LUKS2_unmet_requirements
    - _
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: int _onlyLUKS2(struct crypt_device *cd, uint32_t cdflags, uint32_t
      mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 445
    functionName: onlyLUKS2unrestricted
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _onlyLUKS2
    linkageType: ''
    returnType: int
    signature: int onlyLUKS2unrestricted(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 451
    functionName: onlyLUKS2
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - _onlyLUKS2
    linkageType: ''
    returnType: int
    signature: int onlyLUKS2(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 457
    functionName: onlyLUKS2reencrypt
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _onlyLUKS2
    linkageType: ''
    returnType: int
    signature: int onlyLUKS2reencrypt(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:461,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/setup.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 467
    functionName: crypt_set_null_type
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_safe_memzero
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_set_null_type(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 476
    functionName: crypt_reset_null_type
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_reset_null_type(struct crypt_device *cd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:484,1
    - Dst: LUKS_keyslot_find_empty
      Src: /src/cryptsetup/lib/setup.c:485,1
    - Dst: LUKS2_keyslot_find_empty
      Src: /src/cryptsetup/lib/setup.c:487,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:489,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:489,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:494,1
    - Dst: LUKS_keyslot_info
      Src: /src/cryptsetup/lib/setup.c:495,1
    - Dst: LUKS2_keyslot_info
      Src: /src/cryptsetup/lib/setup.c:497,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:500,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:500,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/lib/setup.c:501,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:506,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:506,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:511,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 513
    functionName: keyslot_verify_or_find_empty
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_keyslot_max
    - isLUKS1
    - LUKS2_keyslot_find_empty
    - LUKS_keyslot_info
    - log_err
    - log_dbg
    - LUKS_keyslot_find_empty
    - LUKS2_keyslot_info
    linkageType: ''
    returnType: int
    signature: int keyslot_verify_or_find_empty(struct crypt_device *cd, int *keyslot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:527,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/setup.c:528,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:530,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/setup.c:530,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:530,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:531,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:531,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/setup.c:535,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:535,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/setup.c:536,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/setup.c:536,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:537,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/setup.c:537,1
    - Dst: create_or_reload_device
      Src: /src/cryptsetup/lib/setup.c:541,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:543,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - cd
    - name
    - vk
    - size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 545
    functionName: PLAIN_activate
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - MISALIGNED
    - _
    - crypt_get_iv_offset
    - dm_crypt_target_set
    - crypt_get_cipher_spec
    - dm_targets_free
    - log_dbg
    - log_err
    - create_or_reload_device
    - device_block_size
    - crypt_get_data_offset
    - crypt_get_sector_size
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int PLAIN_activate(struct crypt_device *cd,\n\t\t     const char *name,\n\t\t
      \    struct volume_key *vk,\n\t\t     uint64_t size,\n\t\t     uint32_t flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct crypt_device*::confirm
      Src: /src/cryptsetup/lib/setup.c:552,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - msg
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 553
    functionName: crypt_confirm
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - struct crypt_device*::confirm
    linkageType: ''
    returnType: int
    signature: int crypt_confirm(struct crypt_device *cd, const char *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - cd
    - usrptr
    argTypes:
    - struct crypt_device*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 566
    functionName: crypt_set_log_callback
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void crypt_set_log_callback(struct crypt_device *cd,\n\tvoid (*log)(int
      level, const char *msg, void *usrptr),\n\tvoid *usrptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - usrptr
    argTypes:
    - struct crypt_device*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 576
    functionName: crypt_set_confirm_callback
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void crypt_set_confirm_callback(struct crypt_device *cd,\n\tint (*confirm)(const
      char *msg, void *usrptr),\n\tvoid *usrptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/setup.c:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 581
    functionName: crypt_get_dir
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 14
    functionsReached:
    - dm_get_dir
    linkageType: ''
    returnType: char
    signature: char *crypt_get_dir(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:591,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:593,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/setup.c:596,1
    - Dst: memset
      Src: /src/cryptsetup/lib/setup.c:599,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:601,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:603,1
    - Dst: dm_backend_init
      Src: /src/cryptsetup/lib/setup.c:607,1
    - Dst: crypt_random_default_key_rng
      Src: /src/cryptsetup/lib/setup.c:609,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 613
    functionName: crypt_init
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 92
    functionsReached:
    - memset
    - free
    - crypt_random_default_key_rng
    - malloc
    - log_dbg
    - device_alloc
    - dm_backend_init
    linkageType: ''
    returnType: int
    signature: int crypt_init(struct crypt_device **cd, const char *device)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:621,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/setup.c:623,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:628,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:628,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:629,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 634
    functionName: crypt_check_data_device_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - device_size
    - log_err
    - device_path
    - crypt_get_data_offset
    linkageType: ''
    returnType: int
    signature: int crypt_check_data_device_size(struct crypt_device *cd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:641,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:648,1
    - Dst: crypt_check_data_device_size
      Src: /src/cryptsetup/lib/setup.c:652,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:653,1
    - Dst: device_set_block_size
      Src: /src/cryptsetup/lib/setup.c:654,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:654,1
    - Dst: LUKS2_get_sector_size
      Src: /src/cryptsetup/lib/setup.c:654,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 636
    functionDepth: 2
    functionLinenumber: 636
    functionLinenumberEnd: 657
    functionName: _crypt_set_data_device
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_free
    - device_alloc
    - isLUKS2
    - LUKS2_get_sector_size
    - crypt_check_data_device_size
    - device_set_block_size
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: int _crypt_set_data_device(struct crypt_device *cd, const char *device)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:665,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:667,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:667,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:667,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:668,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:668,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:669,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:669,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:673,1
    - Dst: crypt_get_luks2_reencrypt
      Src: /src/cryptsetup/lib/setup.c:673,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:674,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:674,1
    - Dst: _crypt_set_data_device
      Src: /src/cryptsetup/lib/setup.c:678,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 13
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 659
    functionDepth: 3
    functionLinenumber: 659
    functionLinenumberEnd: 679
    functionName: crypt_set_data_device
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 5
    functionsReached:
    - _
    - _crypt_set_data_device
    - crypt_get_luks2_reencrypt
    - isLUKS1
    - isLUKS2
    - log_dbg
    - isINTEGRITY
    - log_err
    - isVERITY
    - isTCRYPT
    linkageType: ''
    returnType: int
    signature: int crypt_set_data_device(struct crypt_device *cd, const char *device)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init
      Src: /src/cryptsetup/lib/setup.c:688,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:689,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:692,1
    - Dst: _crypt_set_data_device
      Src: /src/cryptsetup/lib/setup.c:693,1
    - Dst: crypt_free
      Src: /src/cryptsetup/lib/setup.c:695,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - cd
    - device
    - data_device
    argTypes:
    - struct crypt_device**
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 681
    functionDepth: 3
    functionLinenumber: 681
    functionLinenumberEnd: 700
    functionName: crypt_init_data_device
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 21
    functionsReached:
    - _crypt_set_data_device
    - crypt_free
    - log_dbg
    - crypt_init
    - strcmp
    linkageType: ''
    returnType: int
    signature: int crypt_init_data_device(struct crypt_device **cd, const char *device,
      const char *data_device)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:706,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:708,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - force_type
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 710
    functionName: crypt_free_type
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - isPLAIN
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_free_type(struct crypt_device *cd, const char *force_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_free
      Src: /src/cryptsetup/lib/setup.c:711,1
    - Dst: LUKS2_hdr_free
      Src: /src/cryptsetup/lib/setup.c:712,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 714
    functionName: if
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - LUKS2_reencrypt_free
    - LUKS2_hdr_free
    - free
    linkageType: ''
    returnType: else
    signature: else if (isLUKS2(type))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 716
    functionName: if
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: else
    signature: else if (isLUKS1(type))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:718,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 720
    functionName: if
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: else
    signature: else if (isLOOPAES(type))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:727,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 729
    functionName: if
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_free
    - free
    linkageType: ''
    returnType: else
    signature: else if (isVERITY(type))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:733,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:734,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 729
    functionDepth: 2
    functionLinenumber: 729
    functionLinenumberEnd: 735
    functionName: if
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_free_volume_key
    linkageType: ''
    returnType: else
    signature: else if (isINTEGRITY(type))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:736,1
    - Dst: BITLK_bitlk_metadata_free
      Src: /src/cryptsetup/lib/setup.c:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 735
    functionDepth: 1
    functionLinenumber: 735
    functionLinenumberEnd: 738
    functionName: if
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - BITLK_bitlk_metadata_free
    - free
    linkageType: ''
    returnType: else
    signature: else if (isBITLK(type))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 747
    functionDepth: 0
    functionLinenumber: 747
    functionLinenumberEnd: 750
    functionName: crypt_get_pbkdf
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct crypt_pbkdf_type
    signature: struct crypt_pbkdf_type *crypt_get_pbkdf(struct crypt_device *cd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:761,1
    - Dst: LUKS2_hdr_read
      Src: /src/cryptsetup/lib/setup.c:763,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:768,1
    - Dst: verify_pbkdf_params
      Src: /src/cryptsetup/lib/setup.c:775,1
    - Dst: init_pbkdf_type
      Src: /src/cryptsetup/lib/setup.c:776,1
    - Dst: LUKS2_hdr_free
      Src: /src/cryptsetup/lib/setup.c:782,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:783,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/setup.c:788,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:794,1
    - Dst: LUKS2_hdr_free
      Src: /src/cryptsetup/lib/setup.c:795,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 3
    argNames:
    - cd
    - reload
    - repair
    argTypes:
    - struct crypt_device*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 755
    functionDepth: 3
    functionLinenumber: 755
    functionLinenumberEnd: 798
    functionName: _crypt_load_luks2
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - free
    - verify_pbkdf_params
    - memcpy
    - LUKS2_hdr_free
    - log_dbg
    - strdup
    - init_pbkdf_type
    - LUKS2_hdr_read
    linkageType: ''
    returnType: int
    signature: int _crypt_load_luks2(struct crypt_device *cd, int reload, int repair)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:802,1
    - Dst: LUKS2_hdr_rollback
      Src: /src/cryptsetup/lib/setup.c:805,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:806,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:806,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:810,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 812
    functionName: _luks2_rollback
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - free
    - isLUKS2
    - log_err
    - LUKS2_hdr_rollback
    linkageType: ''
    returnType: void
    signature: void _luks2_rollback(struct crypt_device *cd)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:821,1
    - Dst: LUKS2_hdr_version_unlocked
      Src: /src/cryptsetup/lib/setup.c:826,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:828,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:829,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:835,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:836,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:837,1
    - Dst: verify_pbkdf_params
      Src: /src/cryptsetup/lib/setup.c:841,1
    - Dst: init_pbkdf_type
      Src: /src/cryptsetup/lib/setup.c:842,1
    - Dst: LUKS_read_phdr
      Src: /src/cryptsetup/lib/setup.c:847,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:851,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:857,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:859,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/setup.c:866,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:871,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/setup.c:874,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:875,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:876,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:877,1
    - Dst: _crypt_load_luks2
      Src: /src/cryptsetup/lib/setup.c:889,1
    - Dst: device_set_block_size
      Src: /src/cryptsetup/lib/setup.c:891,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:891,1
    - Dst: LUKS2_get_sector_size
      Src: /src/cryptsetup/lib/setup.c:891,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:893,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:893,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:893,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:896,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:896,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/setup.c:900,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 65
    argCount: 4
    argNames:
    - cd
    - requested_type
    - quiet
    - repair
    argTypes:
    - struct crypt_device*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 814
    functionDepth: 4
    functionLinenumber: 814
    functionLinenumberEnd: 903
    functionName: _crypt_load_luks
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - memcpy
    - LUKS2_get_sector_size
    - _crypt_load_luks2
    - init_pbkdf_type
    - init_crypto
    - free
    - LUKS_read_phdr
    - isLUKS2
    - mdata_device_path
    - log_dbg
    - strdup
    - strcmp
    - crypt_safe_memzero
    - verify_pbkdf_params
    - log_err
    - device_set_block_size
    - crypt_data_device
    - _
    - LUKS2_hdr_version_unlocked
    - isLUKS1
    - asprintf
    linkageType: ''
    returnType: int
    signature: "int _crypt_load_luks(struct crypt_device *cd, const char *requested_type,\n\t\t\t
      \   bool quiet, bool repair)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:912,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/setup.c:916,1
    - Dst: TCRYPT_read_phdr
      Src: /src/cryptsetup/lib/setup.c:918,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:929,1
    - Dst: crypt_free_type
      Src: /src/cryptsetup/lib/setup.c:933,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct crypt_params_tcrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 905
    functionDepth: 3
    functionLinenumber: 905
    functionLinenumberEnd: 935
    functionName: _crypt_load_tcrypt
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strdup
    - init_crypto
    - crypt_free_type
    - TCRYPT_read_phdr
    linkageType: ''
    returnType: int
    signature: int _crypt_load_tcrypt(struct crypt_device *cd, struct crypt_params_tcrypt
      *params)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:942,1
    - Dst: VERITY_read_sb
      Src: /src/cryptsetup/lib/setup.c:952,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:956,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/setup.c:965,1
    - Dst: crypt_set_data_device
      Src: /src/cryptsetup/lib/setup.c:972,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:976,1
    - Dst: crypt_free_type
      Src: /src/cryptsetup/lib/setup.c:984,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 41
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 937
    functionDepth: 4
    functionLinenumber: 937
    functionLinenumberEnd: 986
    functionName: _crypt_load_verity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_hash_size
    - crypt_set_data_device
    - strdup
    - init_crypto
    - VERITY_read_sb
    - crypt_free_type
    - device_alloc
    linkageType: ''
    returnType: int
    signature: int _crypt_load_verity(struct crypt_device *cd, struct crypt_params_verity
      *params)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:993,1
    - Dst: INTEGRITY_read_sb
      Src: /src/cryptsetup/lib/setup.c:997,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1009,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1013,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1016,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:1021,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:1028,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1035,1
    - Dst: crypt_free_type
      Src: /src/cryptsetup/lib/setup.c:1040,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 45
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct crypt_params_integrity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 988
    functionDepth: 3
    functionLinenumber: 988
    functionLinenumberEnd: 1042
    functionName: _crypt_load_integrity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - strdup
    - INTEGRITY_read_sb
    - init_crypto
    - crypt_free_type
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int _crypt_load_integrity(struct crypt_device *cd,\n\t\t\t\t struct
      crypt_params_integrity *params)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:1048,1
    - Dst: BITLK_read_sb
      Src: /src/cryptsetup/lib/setup.c:1052,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/setup.c:1056,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1063,1
    - Dst: device_set_block_size
      Src: /src/cryptsetup/lib/setup.c:1068,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:1068,1
    - Dst: crypt_free_type
      Src: /src/cryptsetup/lib/setup.c:1071,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1044
    functionDepth: 3
    functionLinenumber: 1044
    functionLinenumberEnd: 1073
    functionName: _crypt_load_bitlk
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - BITLK_read_sb
    - strdup
    - asprintf
    - init_crypto
    - crypt_free_type
    - device_set_block_size
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: int _crypt_load_bitlk(struct crypt_device *cd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:1079,1
    - Dst: FVAULT2_read_metadata
      Src: /src/cryptsetup/lib/setup.c:1083,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1087,1
    - Dst: crypt_free_type
      Src: /src/cryptsetup/lib/setup.c:1091,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1075
    functionDepth: 3
    functionLinenumber: 1075
    functionLinenumberEnd: 1093
    functionName: _crypt_load_fvault2
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - init_crypto
    - FVAULT2_read_metadata
    - strdup
    - crypt_free_type
    linkageType: ''
    returnType: int
    signature: int _crypt_load_fvault2(struct crypt_device *cd)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1104,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:1105,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1107,1
    - Dst: crypt_reset_null_type
      Src: /src/cryptsetup/lib/setup.c:1110,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:1115,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:1115,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:1116,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:1116,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1117,1
    - Dst: _crypt_load_luks
      Src: /src/cryptsetup/lib/setup.c:1121,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:1122,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:1123,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1124,1
    - Dst: _crypt_load_verity
      Src: /src/cryptsetup/lib/setup.c:1127,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:1128,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:1129,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1130,1
    - Dst: _crypt_load_tcrypt
      Src: /src/cryptsetup/lib/setup.c:1133,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:1134,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:1135,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1136,1
    - Dst: _crypt_load_integrity
      Src: /src/cryptsetup/lib/setup.c:1139,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:1140,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:1141,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1142,1
    - Dst: _crypt_load_bitlk
      Src: /src/cryptsetup/lib/setup.c:1145,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:1146,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:1147,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1148,1
    - Dst: _crypt_load_fvault2
      Src: /src/cryptsetup/lib/setup.c:1151,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 54
    argCount: 3
    argNames:
    - cd
    - requested_type
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1095
    functionDepth: 5
    functionLinenumber: 1095
    functionLinenumberEnd: 1156
    functionName: crypt_load
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 74
    functionsReached:
    - isBITLK
    - isFVAULT2
    - isLUKS1
    - crypt_metadata_device
    - mdata_device_path
    - isLUKS2
    - log_dbg
    - _crypt_load_verity
    - isINTEGRITY
    - _crypt_load_bitlk
    - crypt_reset_null_type
    - isVERITY
    - _crypt_load_luks
    - isTCRYPT
    - _crypt_load_fvault2
    - _crypt_load_tcrypt
    - _crypt_load_integrity
    linkageType: ''
    returnType: int
    signature: "int crypt_load(struct crypt_device *cd,\n\t       const char *requested_type,\n\t
      \      void *params)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:1171,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:1176,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/setup.c:1179,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/setup.c:1184,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/setup.c:1189,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:1190,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/setup.c:1196,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:1206,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1161
    functionDepth: 1
    functionLinenumber: 1161
    functionLinenumberEnd: 1208
    functionName: _init_by_name_crypt_none
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - snprintf
    - dm_targets_free
    - dm_query_device
    - crypt_parse_name_and_mode
    - single_segment
    - strlen
    linkageType: ''
    returnType: int
    signature: int _init_by_name_crypt_none(struct crypt_device *cd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:1214,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:1216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1210
    functionDepth: 0
    functionLinenumber: 1210
    functionLinenumberEnd: 1220
    functionName: LUKS_UUID
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - isLUKS1
    - isLUKS2
    linkageType: ''
    returnType: char
    signature: char *LUKS_UUID(struct crypt_device *cd)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:1233,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1242,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/setup.c:1250,1
    - Dst: dm_device_deps
      Src: /src/cryptsetup/lib/setup.c:1256,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/lib/setup.c:1256,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/setup.c:1261,1
    - Dst: crypt_set_null_type
      Src: /src/cryptsetup/lib/setup.c:1266,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1270,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1270,1
    - Dst: dm_get_active_iname
      Src: /src/cryptsetup/lib/setup.c:1277,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:1279,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:1280,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:1287,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1288,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:1294,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:1301,1
    - Dst: strstr
      Src: /src/cryptsetup/lib/setup.c:1306,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/setup.c:1306,1
    - Dst: crypt_string_in
      Src: /src/cryptsetup/lib/setup.c:1307,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/setup.c:1307,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/setup.c:1307,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/lib/setup.c:1307,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:1308,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1309,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:1315,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/setup.c:1319,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:1328,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:1328,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:1333,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1334,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1335,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/setup.c:1336,1
    - Dst: crypt_set_key_in_keyring
      Src: /src/cryptsetup/lib/setup.c:1338,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:1339,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:1339,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1341,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1342,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/setup.c:1343,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:1345,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:1347,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:1348,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:1348,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1349,1
    - Dst: _crypt_load_luks
      Src: /src/cryptsetup/lib/setup.c:1350,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1352,1
    - Dst: crypt_set_null_type
      Src: /src/cryptsetup/lib/setup.c:1353,1
    - Dst: device_close
      Src: /src/cryptsetup/lib/setup.c:1354,1
    - Dst: device_close
      Src: /src/cryptsetup/lib/setup.c:1355,1
    - Dst: dm_uuid_cmp
      Src: /src/cryptsetup/lib/setup.c:1360,1
    - Dst: LUKS_UUID
      Src: /src/cryptsetup/lib/setup.c:1360,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1362,1
    - Dst: LUKS_UUID
      Src: /src/cryptsetup/lib/setup.c:1363,1
    - Dst: crypt_free_type
      Src: /src/cryptsetup/lib/setup.c:1364,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1369,1
    - Dst: crypt_set_null_type
      Src: /src/cryptsetup/lib/setup.c:1370,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:1373,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:1373,1
    - Dst: TCRYPT_init_by_name
      Src: /src/cryptsetup/lib/setup.c:1374,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:1376,1
    - Dst: _crypt_load_bitlk
      Src: /src/cryptsetup/lib/setup.c:1377,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1379,1
    - Dst: crypt_set_null_type
      Src: /src/cryptsetup/lib/setup.c:1380,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:1383,1
    - Dst: _crypt_load_fvault2
      Src: /src/cryptsetup/lib/setup.c:1384,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1386,1
    - Dst: crypt_set_null_type
      Src: /src/cryptsetup/lib/setup.c:1387,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:1392,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:1393,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:1394,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:1396,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:1399,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 153
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1222
    functionDepth: 5
    functionLinenumber: 1222
    functionLinenumberEnd: 1401
    functionName: _init_by_name_crypt
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_free
    - crypt_set_null_type
    - isFVAULT2
    - strstr
    - _crypt_load_bitlk
    - single_segment
    - dm_uuid_cmp
    - _crypt_load_fvault2
    - device_close
    - free
    - _crypt_load_luks
    - crypt_string_in
    - MOVE_REF
    - LUKS_UUID
    - isLUKS2
    - log_dbg
    - dm_query_device
    - strdup
    - crypt_parse_name_and_mode
    - strlen
    - crypt_volume_key_length
    - dm_get_dir
    - dm_targets_free
    - isBITLK
    - log_err
    - isPLAIN
    - TCRYPT_init_by_name
    - isLOOPAES
    - crypt_free_type
    - isTCRYPT
    - dm_device_deps
    - _
    - snprintf
    - ARRAY_SIZE
    - isLUKS1
    - crypt_metadata_device
    - crypt_set_key_in_keyring
    - device_path
    - asprintf
    - dm_get_active_iname
    linkageType: ''
    returnType: int
    signature: int _init_by_name_crypt(struct crypt_device *cd, const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:1409,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:1416,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1417,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:1424,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1429,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1439,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1440,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1442,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1443,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1444,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:1447,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1403
    functionDepth: 1
    functionLinenumber: 1403
    functionLinenumberEnd: 1449
    functionName: _init_by_name_verity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - dm_targets_free
    - MOVE_REF
    - log_dbg
    - dm_query_device
    - isVERITY
    - single_segment
    linkageType: ''
    returnType: int
    signature: int _init_by_name_verity(struct crypt_device *cd, const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:1457,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:1463,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1464,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:1471,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1479,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1480,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1481,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:1484,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:1486,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:1488,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/setup.c:1489,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:1492,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1451
    functionDepth: 1
    functionLinenumber: 1451
    functionLinenumberEnd: 1494
    functionName: _init_by_name_integrity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - dm_targets_free
    - MOVE_REF
    - log_dbg
    - isINTEGRITY
    - dm_query_device
    - single_segment
    linkageType: ''
    returnType: int
    signature: int _init_by_name_integrity(struct crypt_device *cd, const char *name)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1508,1
    - Dst: crypt_status
      Src: /src/cryptsetup/lib/setup.c:1510,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1515,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1515,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:1519,1
    - Dst: crypt_init
      Src: /src/cryptsetup/lib/setup.c:1526,1
    - Dst: crypt_init
      Src: /src/cryptsetup/lib/setup.c:1528,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:1528,1
    - Dst: log_verbose
      Src: /src/cryptsetup/lib/setup.c:1532,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1532,1
    - Dst: crypt_init
      Src: /src/cryptsetup/lib/setup.c:1537,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:1544,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1545,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:1546,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1547,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:1548,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1549,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:1550,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1551,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:1552,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1553,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:1554,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1555,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:1556,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1557,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:1558,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1559,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:1560,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1561,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1563,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1565,1
    - Dst: crypt_set_data_device
      Src: /src/cryptsetup/lib/setup.c:1568,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:1568,1
    - Dst: _init_by_name_crypt
      Src: /src/cryptsetup/lib/setup.c:1576,1
    - Dst: _init_by_name_verity
      Src: /src/cryptsetup/lib/setup.c:1578,1
    - Dst: _init_by_name_integrity
      Src: /src/cryptsetup/lib/setup.c:1580,1
    - Dst: crypt_free
      Src: /src/cryptsetup/lib/setup.c:1583,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1587,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:1591,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 73
    argCount: 3
    argNames:
    - cd
    - name
    - header_device
    argTypes:
    - struct crypt_device**
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1496
    functionDepth: 6
    functionLinenumber: 1496
    functionLinenumberEnd: 1593
    functionName: crypt_init_by_name_and_header
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 20
    functionsReached:
    - _init_by_name_verity
    - _
    - log_verbose
    - dm_targets_free
    - crypt_set_data_device
    - strncmp
    - crypt_free
    - log_dbg
    - log_err
    - device_path
    - dm_query_device
    - strdup
    - crypt_status
    - _init_by_name_integrity
    - crypt_init
    - _init_by_name_crypt
    linkageType: ''
    returnType: int
    signature: "int crypt_init_by_name_and_header(struct crypt_device **cd,\n\t\t\t\t
      \ const char *name,\n\t\t\t\t  const char *header_device)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_init_by_name_and_header
      Src: /src/cryptsetup/lib/setup.c:1597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1595
    functionDepth: 7
    functionLinenumber: 1595
    functionLinenumberEnd: 1598
    functionName: crypt_init_by_name
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 15
    functionsReached:
    - crypt_init_by_name_and_header
    linkageType: ''
    returnType: int
    signature: int crypt_init_by_name(struct crypt_device **cd, const char *name)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1614,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1614,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1619,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1619,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1624,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1624,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1629,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1629,1
    - Dst: NOTPOW2
      Src: /src/cryptsetup/lib/setup.c:1638,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1639,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1639,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/setup.c:1643,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1647,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1647,1
    - Dst: device_set_block_size
      Src: /src/cryptsetup/lib/setup.c:1650,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:1650,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1653,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:1657,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/setup.c:1661,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1665,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/setup.c:1666,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1669,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 6
    argNames:
    - cd
    - cipher
    - cipher_mode
    - uuid
    - volume_key_size
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - size_t
    - struct crypt_params_plain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1603
    functionDepth: 2
    functionLinenumber: 1603
    functionLinenumberEnd: 1680
    functionName: _crypt_format_plain
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_alloc_volume_key
    - device_size
    - log_err
    - crypt_data_device
    - strdup
    - asprintf
    - strlen
    - device_set_block_size
    - NOTPOW2
    linkageType: ''
    returnType: int
    signature: "int _crypt_format_plain(struct crypt_device *cd,\n\t\t\t       const
      char *cipher,\n\t\t\t       const char *cipher_mode,\n\t\t\t       const char
      *uuid,\n\t\t\t       size_t volume_key_size,\n\t\t\t       struct crypt_params_plain
      *params)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1698,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1699,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1699,1
    - Dst: device_is_zoned
      Src: /src/cryptsetup/lib/setup.c:1703,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1703,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1704,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1704,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:1705,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1705,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1711,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1711,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1715,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:1719,1
    - Dst: crypt_generate_volume_key
      Src: /src/cryptsetup/lib/setup.c:1722,1
    - Dst: verify_pbkdf_params
      Src: /src/cryptsetup/lib/setup.c:1727,1
    - Dst: init_pbkdf_type
      Src: /src/cryptsetup/lib/setup.c:1728,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:1733,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1735,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:1744,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:1746,1
    - Dst: device_is_dax
      Src: /src/cryptsetup/lib/setup.c:1750,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:1750,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:1751,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1751,1
    - Dst: device_topology_alignment
      Src: /src/cryptsetup/lib/setup.c:1761,1
    - Dst: LUKS_check_cipher
      Src: /src/cryptsetup/lib/setup.c:1765,1
    - Dst: LUKS_generate_phdr
      Src: /src/cryptsetup/lib/setup.c:1769,1
    - Dst: device_check_access
      Src: /src/cryptsetup/lib/setup.c:1776,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1776,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/setup.c:1781,1
    - Dst: LUKS_wipe_header_areas
      Src: /src/cryptsetup/lib/setup.c:1786,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:1788,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1789,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1789,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:1790,1
    - Dst: LUKS_write_phdr
      Src: /src/cryptsetup/lib/setup.c:1794,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:1796,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/setup.c:1800,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:1800,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:1801,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:1802,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1802,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:1803,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:1803,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 79
    argCount: 7
    argNames:
    - cd
    - cipher
    - cipher_mode
    - uuid
    - volume_key
    - volume_key_size
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - size_t
    - struct crypt_params_luks1*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1682
    functionDepth: 3
    functionLinenumber: 1682
    functionLinenumberEnd: 1806
    functionName: _crypt_format_luks1
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_free
    - device_check_access
    - LUKS_wipe_header_areas
    - LUKS_check_cipher
    - init_pbkdf_type
    - device_is_dax
    - LUKS_generate_phdr
    - free
    - mdata_device_path
    - strdup
    - strcmp
    - device_is_zoned
    - verify_pbkdf_params
    - log_std
    - device_topology_alignment
    - device_size
    - log_err
    - crypt_get_data_offset
    - device_alloc
    - crypt_data_device
    - _
    - LUKS_write_phdr
    - crypt_metadata_device
    - device_path
    - asprintf
    - crypt_alloc_volume_key
    - crypt_generate_volume_key
    linkageType: ''
    returnType: int
    signature: "int _crypt_format_luks1(struct crypt_device *cd,\n\t\t\t       const
      char *cipher,\n\t\t\t       const char *cipher_mode,\n\t\t\t       const char
      *uuid,\n\t\t\t       const char *volume_key,\n\t\t\t       size_t volume_key_size,\n\t\t\t
      \      struct crypt_params_luks1 *params)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:1820,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:1821,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:1822,1
    - Dst: INTEGRITY_tag_size
      Src: /src/cryptsetup/lib/setup.c:1834,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:1836,1
    - Dst: INTEGRITY_key_size
      Src: /src/cryptsetup/lib/setup.c:1841,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1843,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1843,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1847,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1847,1
    - Dst: crypt_cipher_check_kernel
      Src: /src/cryptsetup/lib/setup.c:1854,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1856,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1856,1
    - Dst: crypt_cipher_wrapped_key
      Src: /src/cryptsetup/lib/setup.c:1862,1
    - Dst: INTEGRITY_tag_size
      Src: /src/cryptsetup/lib/setup.c:1863,1
    - Dst: LUKS_check_cipher
      Src: /src/cryptsetup/lib/setup.c:1864,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 42
    argCount: 9
    argNames:
    - cd
    - cipher
    - cipher_mode
    - integrity
    - required_integrity_key_size
    - volume_key_size
    - params
    - ret_integrity
    - ret_integrity_key_size
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - size_t
    - size_t
    - struct crypt_params_luks2*
    - char**
    - size_t*
    assertStmts:
    - condition: (cipher)
      pos:
        line_end: 1819
        line_start: 1819
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (ret_integrity)
      pos:
        line_end: 1821
        line_start: 1821
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (cipher_mode)
      pos:
        line_end: 1820
        line_start: 1820
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 1875
      start: 1808
    functionDepth: 1
    functionLinenumber: 1808
    functionLinenumberEnd: 1875
    functionName: LUKS2_check_encryption_params
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - LUKS_check_cipher
    - assert
    - INTEGRITY_key_size
    - log_err
    - crypt_cipher_wrapped_key
    - crypt_cipher_check_kernel
    - strcmp
    - INTEGRITY_tag_size
    linkageType: ''
    returnType: int
    signature: "int LUKS2_check_encryption_params(struct crypt_device *cd,\n\tconst
      char *cipher,\n\tconst char *cipher_mode,\n\tconst char *integrity,\n\tsize_t
      required_integrity_key_size,\n\tsize_t volume_key_size,\n\tconst struct crypt_params_luks2
      *params,\n\tconst char **ret_integrity,\n\tsize_t *ret_integrity_key_size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:1883,1
    - Dst: NOTPOW2
      Src: /src/cryptsetup/lib/setup.c:1886,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1887,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1887,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/setup.c:1891,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1894,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:1897,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1897,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:1902,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1903,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:1905,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1907,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:1915,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1916,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1916,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 7
    argNames:
    - cd
    - device_size_bytes
    - data_offset_bytes
    - sector_size
    - modify_sector_size
    - verify_data_area_alignment
    - ret_sector_size
    argTypes:
    - struct crypt_device*
    - uint64_t
    - uint64_t
    - uint32_t
    - bool
    - bool
    - uint32_t*
    assertStmts:
    - condition: (ret_sector_size)
      pos:
        line_end: 1882
        line_start: 1882
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 1923
      start: 1877
    functionDepth: 1
    functionLinenumber: 1877
    functionLinenumberEnd: 1923
    functionName: LUKS2_check_encryption_sector
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - MISALIGNED
    - _
    - log_std
    - dm_flags
    - assert
    - log_err
    - log_dbg
    - NOTPOW2
    linkageType: ''
    returnType: int
    signature: "int LUKS2_check_encryption_sector(struct crypt_device *cd, uint64_t
      device_size_bytes,\n\t\tuint64_t data_offset_bytes, uint32_t sector_size, bool
      modify_sector_size,\n\t\tbool verify_data_area_alignment, uint32_t *ret_sector_size)"
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1950,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1951,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1951,1
    - Dst: device_is_zoned
      Src: /src/cryptsetup/lib/setup.c:1955,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1955,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1956,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1956,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:1957,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1957,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:1963,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1963,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:1974,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:1976,1
    - Dst: device_is_dax
      Src: /src/cryptsetup/lib/setup.c:1980,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:1980,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:1981,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:1981,1
    - Dst: device_optimal_encryption_sector_size
      Src: /src/cryptsetup/lib/setup.c:1984,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:1984,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:1985,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:1986,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:1986,1
    - Dst: device_check_access
      Src: /src/cryptsetup/lib/setup.c:1990,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:1990,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:1994,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:1998,1
    - Dst: crypt_generate_volume_key
      Src: /src/cryptsetup/lib/setup.c:2001,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/lib/setup.c:2007,1
    - Dst: verify_pbkdf_params
      Src: /src/cryptsetup/lib/setup.c:2008,1
    - Dst: init_pbkdf_type
      Src: /src/cryptsetup/lib/setup.c:2009,1
    - Dst: device_topology_alignment
      Src: /src/cryptsetup/lib/setup.c:2022,1
    - Dst: LUKS2_check_encryption_params
      Src: /src/cryptsetup/lib/setup.c:2029,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/setup.c:2034,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2034,1
    - Dst: LUKS2_hdr_get_storage_params
      Src: /src/cryptsetup/lib/setup.c:2038,1
    - Dst: LUKS2_check_encryption_sector
      Src: /src/cryptsetup/lib/setup.c:2043,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/setup.c:2050,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/setup.c:2052,1
    - Dst: LUKS2_generate_hdr
      Src: /src/cryptsetup/lib/setup.c:2058,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:2070,1
    - Dst: LUKS2_config_set_requirement_version
      Src: /src/cryptsetup/lib/setup.c:2071,1
    - Dst: LUKS2_hdr_labels
      Src: /src/cryptsetup/lib/setup.c:2078,1
    - Dst: device_set_block_size
      Src: /src/cryptsetup/lib/setup.c:2084,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2084,1
    - Dst: LUKS2_wipe_header_areas
      Src: /src/cryptsetup/lib/setup.c:2086,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2088,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2088,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2089,1
    - Dst: LUKS2_hdr_and_areas_size
      Src: /src/cryptsetup/lib/setup.c:2090,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2091,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2091,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:2091,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2091,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:2096,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/setup.c:2097,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2097,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:2098,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2102,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2102,1
    - Dst: data_device_path
      Src: /src/cryptsetup/lib/setup.c:2103,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2105,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2105,1
    - Dst: data_device_path
      Src: /src/cryptsetup/lib/setup.c:2106,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2109,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2109,1
    - Dst: data_device_path
      Src: /src/cryptsetup/lib/setup.c:2110,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:2117,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:2119,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:2120,1
    - Dst: INTEGRITY_format
      Src: /src/cryptsetup/lib/setup.c:2126,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2129,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2129,1
    - Dst: data_device_path
      Src: /src/cryptsetup/lib/setup.c:2130,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:2131,1
    - Dst: LUKS2_hdr_write_force
      Src: /src/cryptsetup/lib/setup.c:2138,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2141,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2141,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2142,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2144,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2144,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2145,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2148,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2148,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2149,1
    - Dst: LUKS2_hdr_free
      Src: /src/cryptsetup/lib/setup.c:2154,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/setup.c:2159,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2159,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:2160,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:2161,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2161,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:2162,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2162,1
    CyclomaticComplexity: 76
    EdgeCount: 76
    ICount: 161
    argCount: 9
    argNames:
    - cd
    - cipher
    - cipher_mode
    - uuid
    - volume_key
    - volume_key_size
    - params
    - sector_size_autodetect
    - integrity_inline
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - size_t
    - struct crypt_params_luks2*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2165
      start: 1925
    functionDepth: 4
    functionLinenumber: 1925
    functionLinenumberEnd: 2165
    functionName: _crypt_format_luks2
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_free
    - device_check_access
    - LUKS2_hdr_free
    - LUKS2_check_encryption_params
    - init_pbkdf_type
    - device_is_dax
    - LUKS2_wipe_header_areas
    - LUKS2_check_encryption_sector
    - crypt_set_pbkdf_type
    - mdata_device_path
    - LUKS2_hdr_labels
    - log_dbg
    - crypt_get_integrity_tag_size
    - data_device_path
    - strdup
    - LUKS2_generate_hdr
    - LUKS2_hdr_write_force
    - device_is_zoned
    - log_std
    - verify_pbkdf_params
    - crypt_free_volume_key
    - device_topology_alignment
    - device_size
    - crypt_volume_key_get_key
    - log_err
    - crypt_get_data_offset
    - device_alloc
    - device_optimal_encryption_sector_size
    - crypt_data_device
    - device_set_block_size
    - LUKS2_hdr_and_areas_size
    - _
    - snprintf
    - crypt_metadata_device
    - INTEGRITY_format
    - LUKS2_config_set_requirement_version
    - device_path
    - LUKS2_hdr_get_storage_params
    - crypt_wipe_device
    - crypt_alloc_volume_key
    - crypt_generate_volume_key
    linkageType: ''
    returnType: int
    signature: "int _crypt_format_luks2(struct crypt_device *cd,\n\t\t\t       const
      char *cipher,\n\t\t\t       const char *cipher_mode,\n\t\t\t       const char
      *uuid,\n\t\t\t       const char *volume_key,\n\t\t\t       size_t volume_key_size,\n\t\t\t
      \      struct crypt_params_luks2 *params,\n\t\t\t       bool sector_size_autodetect,
      bool integrity_inline)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:2182,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:2183,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:2184,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:2185,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:2186,1
    - Dst: opal_geometry
      Src: /src/cryptsetup/lib/setup.c:2188,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2188,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2191,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2191,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/setup.c:2195,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2195,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:2197,1
    - Dst: NOTPOW2
      Src: /src/cryptsetup/lib/setup.c:2202,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2203,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2203,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2208,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2208,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:2213,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2214,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2214,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:2220,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2221,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2221,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:2238,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2241,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2241,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:2253,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2254,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2254,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/setup.c:2262,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:2270,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:2277,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 66
    argCount: 9
    argNames:
    - cd
    - partition_offset_sectors
    - data_offset_sectors
    - required_alignment_sectors
    - default_alignment_bytes
    - ret_alignment_offset_bytes
    - ret_alignment_bytes
    - ret_opal_block_bytes
    - ret_opal_alignment_granularity_blocks
    argTypes:
    - struct crypt_device*
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t*
    - uint64_t*
    - uint32_t*
    - uint64_t*
    assertStmts:
    - condition: (ret_alignment_bytes)
      pos:
        line_end: 2183
        line_start: 2183
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (ret_alignment_offset_bytes)
      pos:
        line_end: 2182
        line_start: 2182
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (cd)
      pos:
        line_end: 2181
        line_start: 2181
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (ret_opal_alignment_granularity_blocks)
      pos:
        line_end: 2185
        line_start: 2185
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (ret_opal_block_bytes)
      pos:
        line_end: 2184
        line_start: 2184
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 2281
      start: 2167
    functionDepth: 1
    functionLinenumber: 2167
    functionLinenumberEnd: 2281
    functionName: opal_topology_alignment
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - MISALIGNED
    - _
    - assert
    - log_err
    - log_dbg
    - size_round_up
    - opal_geometry
    - device_block_size
    - NOTPOW2
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int opal_topology_alignment(struct crypt_device *cd,\n\t\t\t\t   uint64_t
      partition_offset_sectors,\n\t\t\t\t   uint64_t data_offset_sectors,\n\t\t\t\t
      \  uint64_t required_alignment_sectors,\n\t\t\t\t   uint64_t default_alignment_bytes,\n\t\t\t\t
      \  uint64_t *ret_alignment_offset_bytes,\n\t\t\t\t   uint64_t *ret_alignment_bytes,\n\t\t\t\t
      \  uint32_t *ret_opal_block_bytes,\n\t\t\t\t   uint64_t *ret_opal_alignment_granularity_blocks)"
  - BBCount: 71
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:2311,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:2315,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2315,1
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:2317,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2327,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2328,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2328,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:2333,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2334,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2334,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:2342,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:2344,1
    - Dst: crypt_opal_supported
      Src: /src/cryptsetup/lib/setup.c:2348,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2348,1
    - Dst: crypt_dev_partition_offset
      Src: /src/cryptsetup/lib/setup.c:2355,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:2355,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2355,1
    - Dst: device_check_access
      Src: /src/cryptsetup/lib/setup.c:2357,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2357,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2365,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2365,1
    - Dst: device_check_access
      Src: /src/cryptsetup/lib/setup.c:2366,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2366,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2371,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:2375,1
    - Dst: crypt_generate_volume_key
      Src: /src/cryptsetup/lib/setup.c:2377,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:2385,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:2385,1
    - Dst: crypt_set_pbkdf_type
      Src: /src/cryptsetup/lib/setup.c:2394,1
    - Dst: verify_pbkdf_params
      Src: /src/cryptsetup/lib/setup.c:2395,1
    - Dst: init_pbkdf_type
      Src: /src/cryptsetup/lib/setup.c:2396,1
    - Dst: opal_topology_alignment
      Src: /src/cryptsetup/lib/setup.c:2405,1
    - Dst: device_optimal_encryption_sector_size
      Src: /src/cryptsetup/lib/setup.c:2413,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2413,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:2418,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:2419,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2419,1
    - Dst: crypt_dev_get_partition_number
      Src: /src/cryptsetup/lib/setup.c:2432,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:2432,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2432,1
    - Dst: LUKS2_check_encryption_params
      Src: /src/cryptsetup/lib/setup.c:2440,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/setup.c:2447,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2447,1
    - Dst: LUKS2_hdr_get_storage_params
      Src: /src/cryptsetup/lib/setup.c:2451,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2458,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2458,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:2458,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2458,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2468,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2468,1
    - Dst: LUKS2_check_encryption_sector
      Src: /src/cryptsetup/lib/setup.c:2472,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/setup.c:2479,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/setup.c:2481,1
    - Dst: LUKS2_generate_hdr
      Src: /src/cryptsetup/lib/setup.c:2488,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:2501,1
    - Dst: LUKS2_config_set_requirement_version
      Src: /src/cryptsetup/lib/setup.c:2502,1
    - Dst: LUKS2_hdr_labels
      Src: /src/cryptsetup/lib/setup.c:2507,1
    - Dst: device_set_block_size
      Src: /src/cryptsetup/lib/setup.c:2513,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2513,1
    - Dst: LUKS2_wipe_header_areas
      Src: /src/cryptsetup/lib/setup.c:2515,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2517,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2517,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2518,1
    - Dst: LUKS2_hdr_and_areas_size
      Src: /src/cryptsetup/lib/setup.c:2519,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2520,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2520,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:2520,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2520,1
    - Dst: opal_exclusive_lock
      Src: /src/cryptsetup/lib/setup.c:2526,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2526,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2528,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2528,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:2528,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2528,1
    - Dst: opal_setup_ranges
      Src: /src/cryptsetup/lib/setup.c:2532,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2532,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2538,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2538,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2540,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2540,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:2547,1
    - Dst: opal_unlock
      Src: /src/cryptsetup/lib/setup.c:2548,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2548,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/setup.c:2552,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2552,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:2553,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2557,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2557,1
    - Dst: data_device_path
      Src: /src/cryptsetup/lib/setup.c:2558,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2560,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2560,1
    - Dst: data_device_path
      Src: /src/cryptsetup/lib/setup.c:2561,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2564,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2564,1
    - Dst: data_device_path
      Src: /src/cryptsetup/lib/setup.c:2565,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:2571,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:2572,1
    - Dst: INTEGRITY_format
      Src: /src/cryptsetup/lib/setup.c:2580,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2587,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2587,1
    - Dst: data_device_path
      Src: /src/cryptsetup/lib/setup.c:2588,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:2590,1
    - Dst: INTEGRITY_data_sectors
      Src: /src/cryptsetup/lib/setup.c:2594,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2594,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:2595,1
    - Dst: LUKS2_segment_set_size
      Src: /src/cryptsetup/lib/setup.c:2600,1
    - Dst: opal_lock
      Src: /src/cryptsetup/lib/setup.c:2606,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2606,1
    - Dst: LUKS2_hdr_write_force
      Src: /src/cryptsetup/lib/setup.c:2612,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2615,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2615,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2616,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2618,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2618,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2619,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2622,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2622,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2623,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2624,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2624,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2626,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2626,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2627,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:2631,1
    - Dst: opal_exclusive_unlock
      Src: /src/cryptsetup/lib/setup.c:2637,1
    - Dst: opal_reset_segment
      Src: /src/cryptsetup/lib/setup.c:2642,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2642,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2644,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2644,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:2645,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2645,1
    - Dst: opal_exclusive_unlock
      Src: /src/cryptsetup/lib/setup.c:2647,1
    - Dst: LUKS2_hdr_free
      Src: /src/cryptsetup/lib/setup.c:2648,1
    - Dst: crypt_set_null_type
      Src: /src/cryptsetup/lib/setup.c:2650,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:2651,1
    CyclomaticComplexity: 107
    EdgeCount: 107
    ICount: 253
    argCount: 8
    argNames:
    - cd
    - cipher
    - cipher_mode
    - uuid
    - volume_keys
    - volume_keys_size
    - params
    - opal_params
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - size_t
    - struct crypt_params_luks2*
    - struct crypt_params_hw_opal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2283
    functionDepth: 4
    functionLinenumber: 2283
    functionLinenumberEnd: 2655
    functionName: crypt_format_luks2_opal
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - MISALIGNED
    - device_free
    - device_check_access
    - crypt_set_null_type
    - LUKS2_hdr_free
    - LUKS2_check_encryption_params
    - crypt_opal_supported
    - crypt_dev_get_partition_number
    - init_pbkdf_type
    - opal_reset_segment
    - init_crypto
    - opal_topology_alignment
    - LUKS2_wipe_header_areas
    - opal_exclusive_lock
    - LUKS2_check_encryption_sector
    - opal_setup_ranges
    - INTEGRITY_data_sectors
    - crypt_set_pbkdf_type
    - mdata_device_path
    - LUKS2_hdr_labels
    - log_dbg
    - crypt_get_integrity_tag_size
    - data_device_path
    - strdup
    - LUKS2_generate_hdr
    - LUKS2_hdr_write_force
    - verify_pbkdf_params
    - crypt_free_volume_key
    - opal_lock
    - device_size
    - crypt_volume_key_get_key
    - log_err
    - opal_unlock
    - crypt_get_data_offset
    - device_alloc
    - device_optimal_encryption_sector_size
    - crypt_data_device
    - device_set_block_size
    - LUKS2_hdr_and_areas_size
    - _
    - snprintf
    - opal_exclusive_unlock
    - crypt_metadata_device
    - INTEGRITY_format
    - LUKS2_config_set_requirement_version
    - device_path
    - LUKS2_hdr_get_storage_params
    - crypt_wipe_device
    - crypt_dev_partition_offset
    - crypt_alloc_volume_key
    - LUKS2_segment_set_size
    - crypt_generate_volume_key
    linkageType: ''
    returnType: int
    signature: "int crypt_format_luks2_opal(struct crypt_device *cd,\n\t\t\t      const
      char *cipher,\n\t\t\t      const char *cipher_mode,\n\t\t\t      const char
      *uuid,\n\t\t\t      const char *volume_keys,\n\t\t\t      size_t volume_keys_size,\n\t\t\t
      \     struct crypt_params_luks2 *params,\n\t\t\t      struct crypt_params_hw_opal
      *opal_params)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2663,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2664,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2664,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2669,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2669,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2674,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2674,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2679,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2679,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2683,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2688,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2691,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 5
    argNames:
    - cd
    - cipher
    - uuid
    - volume_key_size
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - size_t
    - struct crypt_params_loopaes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2697
      start: 2657
    functionDepth: 1
    functionLinenumber: 2657
    functionLinenumberEnd: 2697
    functionName: _crypt_format_loopaes
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - log_err
    - _
    - strdup
    - crypt_metadata_device
    linkageType: ''
    returnType: int
    signature: "int _crypt_format_loopaes(struct crypt_device *cd,\n\t\t\t\t const
      char *cipher,\n\t\t\t\t const char *uuid,\n\t\t\t\t size_t volume_key_size,\n\t\t\t\t
      struct crypt_params_loopaes *params)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2708,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2709,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2709,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2720,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2720,1
    - Dst: VERITY_BLOCK_SIZE_OK
      Src: /src/cryptsetup/lib/setup.c:2724,1
    - Dst: VERITY_BLOCK_SIZE_OK
      Src: /src/cryptsetup/lib/setup.c:2725,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2726,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2726,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/setup.c:2730,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2731,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2731,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/setup.c:2735,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2736,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2736,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2740,1
    - Dst: crypt_set_data_device
      Src: /src/cryptsetup/lib/setup.c:2744,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/setup.c:2750,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/setup.c:2758,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2758,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2758,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2760,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2760,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/setup.c:2764,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2766,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2766,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2773,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:2776,1
    - Dst: VERITY_hash_blocks
      Src: /src/cryptsetup/lib/setup.c:2782,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/setup.c:2783,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2783,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2785,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2785,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/setup.c:2790,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:2790,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2792,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2792,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/setup.c:2798,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2799,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/setup.c:2800,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/setup.c:2824,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/setup.c:2826,1
    - Dst: VERITY_create
      Src: /src/cryptsetup/lib/setup.c:2831,1
    - Dst: VERITY_FEC_process
      Src: /src/cryptsetup/lib/setup.c:2834,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2841,1
    - Dst: VERITY_UUID_generate
      Src: /src/cryptsetup/lib/setup.c:2844,1
    - Dst: VERITY_write_sb
      Src: /src/cryptsetup/lib/setup.c:2847,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:2854,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:2855,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:2856,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:2857,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:2858,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 129
    argCount: 3
    argNames:
    - cd
    - uuid
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2862
      start: 2699
    functionDepth: 4
    functionLinenumber: 2699
    functionLinenumberEnd: 2862
    functionName: _crypt_format_verity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_free
    - crypt_hash_size
    - memcpy
    - free
    - crypt_set_data_device
    - strdup
    - VERITY_BLOCK_SIZE_OK
    - VERITY_hash_blocks
    - device_size
    - malloc
    - log_err
    - MISALIGNED_512
    - VERITY_create
    - VERITY_UUID_generate
    - device_alloc
    - crypt_data_device
    - _
    - device_is_identical
    - VERITY_write_sb
    - crypt_metadata_device
    - crypt_random_get
    - VERITY_FEC_process
    linkageType: ''
    returnType: int
    signature: "int _crypt_format_verity(struct crypt_device *cd,\n\t\t\t\t const
      char *uuid,\n\t\t\t\t struct crypt_params_verity *params)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2879,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2879,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2884,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2884,1
    - Dst: device_check_access
      Src: /src/cryptsetup/lib/setup.c:2888,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2888,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/setup.c:2893,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:2893,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2896,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2896,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2897,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2901,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:2905,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:2912,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2920,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2924,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:2928,1
    - Dst: INTEGRITY_hash_tag_size
      Src: /src/cryptsetup/lib/setup.c:2933,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:2935,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2935,1
    - Dst: crypt_generate_volume_key
      Src: /src/cryptsetup/lib/setup.c:2956,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:2958,1
    - Dst: INTEGRITY_format
      Src: /src/cryptsetup/lib/setup.c:2965,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:2969,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:2969,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:2969,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:2971,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:2974,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:2975,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:2976,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:2977,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:2978,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 90
    argCount: 6
    argNames:
    - cd
    - uuid
    - params
    - integrity_key
    - integrity_key_size
    - integrity_inline
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_params_integrity*
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2982
      start: 2864
    functionDepth: 3
    functionLinenumber: 2864
    functionLinenumberEnd: 2982
    functionName: _crypt_format_integrity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_check_access
    - _
    - log_std
    - free
    - crypt_free_volume_key
    - crypt_metadata_device
    - INTEGRITY_format
    - mdata_device_path
    - log_err
    - strdup
    - INTEGRITY_hash_tag_size
    - crypt_wipe_device
    - crypt_alloc_volume_key
    - crypt_generate_volume_key
    linkageType: ''
    returnType: int
    signature: "int _crypt_format_integrity(struct crypt_device *cd,\n\t\t\t\t   const
      char *uuid,\n\t\t\t\t   struct crypt_params_integrity *params,\n\t\t\t\t   const
      char *integrity_key, size_t integrity_key_size,\n\t\t\t\t   bool integrity_inline)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3004,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3008,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:3008,1
    - Dst: crypt_reset_null_type
      Src: /src/cryptsetup/lib/setup.c:3010,1
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:3012,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:3016,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:3019,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3026,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:3034,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:3036,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:3040,1
    - Dst: INTEGRITY_tag_size
      Src: /src/cryptsetup/lib/setup.c:3046,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3048,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3048,1
    - Dst: device_is_nop_dif
      Src: /src/cryptsetup/lib/setup.c:3059,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3064,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3064,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:3064,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3070,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3070,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:3071,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3074,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/setup.c:3077,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3082,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3085,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3085,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:3089,1
    - Dst: _crypt_format_integrity
      Src: /src/cryptsetup/lib/setup.c:3090,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3091,1
    - Dst: _crypt_format_luks2
      Src: /src/cryptsetup/lib/setup.c:3092,1
    - Dst: crypt_set_null_type
      Src: /src/cryptsetup/lib/setup.c:3098,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:3099,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 75
    argCount: 8
    argNames:
    - cd
    - type
    - cipher
    - cipher_mode
    - uuid
    - volume_key
    - volume_key_size
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3104
      start: 2984
    functionDepth: 5
    functionLinenumber: 2984
    functionLinenumberEnd: 3104
    functionName: crypt_format_inline
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - device_free
    - crypt_set_null_type
    - init_crypto
    - _crypt_format_integrity
    - mdata_device_path
    - isLUKS2
    - log_dbg
    - INTEGRITY_tag_size
    - crypt_free_volume_key
    - log_err
    - isINTEGRITY
    - _crypt_format_luks2
    - device_alloc
    - crypt_data_device
    - _
    - crypt_metadata_device
    - crypt_reset_null_type
    - device_is_nop_dif
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int crypt_format_inline(struct crypt_device *cd,\n\tconst char *type,\n\tconst
      char *cipher,\n\tconst char *cipher_mode,\n\tconst char *uuid,\n\tconst char
      *volume_key,\n\tsize_t volume_key_size,\n\tvoid *params)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3122,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3126,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:3126,1
    - Dst: crypt_reset_null_type
      Src: /src/cryptsetup/lib/setup.c:3128,1
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:3130,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:3134,1
    - Dst: _crypt_format_plain
      Src: /src/cryptsetup/lib/setup.c:3135,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:3137,1
    - Dst: _crypt_format_luks1
      Src: /src/cryptsetup/lib/setup.c:3138,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3140,1
    - Dst: _crypt_format_luks2
      Src: /src/cryptsetup/lib/setup.c:3141,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:3143,1
    - Dst: _crypt_format_loopaes
      Src: /src/cryptsetup/lib/setup.c:3144,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:3145,1
    - Dst: _crypt_format_verity
      Src: /src/cryptsetup/lib/setup.c:3146,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:3147,1
    - Dst: _crypt_format_integrity
      Src: /src/cryptsetup/lib/setup.c:3148,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3150,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3150,1
    - Dst: crypt_set_null_type
      Src: /src/cryptsetup/lib/setup.c:3155,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:3156,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 9
    argNames:
    - cd
    - type
    - cipher
    - cipher_mode
    - uuid
    - volume_key
    - volume_key_size
    - params
    - sector_size_autodetect
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - char*
    - size_t
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3161
      start: 3106
    functionDepth: 5
    functionLinenumber: 3106
    functionLinenumberEnd: 3161
    functionName: _crypt_format
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _crypt_format_verity
    - crypt_set_null_type
    - init_crypto
    - _crypt_format_integrity
    - mdata_device_path
    - isLUKS2
    - log_dbg
    - crypt_free_volume_key
    - _crypt_format_luks1
    - log_err
    - isPLAIN
    - isINTEGRITY
    - isLOOPAES
    - _crypt_format_plain
    - _crypt_format_luks2
    - _
    - _crypt_format_loopaes
    - isLUKS1
    - crypt_reset_null_type
    - isVERITY
    linkageType: ''
    returnType: int
    signature: "int _crypt_format(struct crypt_device *cd,\n\tconst char *type,\n\tconst
      char *cipher,\n\tconst char *cipher_mode,\n\tconst char *uuid,\n\tconst char
      *volume_key,\n\tsize_t volume_key_size,\n\tvoid *params,\n\tbool sector_size_autodetect)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_format
      Src: /src/cryptsetup/lib/setup.c:3174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - cd
    - type
    - cipher
    - cipher_mode
    - uuid
    - volume_key
    - volume_key_size
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3175
      start: 3163
    functionDepth: 6
    functionLinenumber: 3163
    functionLinenumberEnd: 3175
    functionName: CRYPT_SYMBOL_EXPORT_NEW
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _crypt_format
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_NEW(int, crypt_format, 2, 4,\n\t/* crypt_format
      parameters follows */\n\tstruct crypt_device *cd,\n\tconst char *type,\n\tconst
      char *cipher,\n\tconst char *cipher_mode,\n\tconst char *uuid,\n\tconst char
      *volume_key,\n\tsize_t volume_key_size,\n\tvoid *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_format
      Src: /src/cryptsetup/lib/setup.c:3189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - cd
    - type
    - cipher
    - cipher_mode
    - uuid
    - volume_key
    - volume_key_size
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3190
      start: 3178
    functionDepth: 6
    functionLinenumber: 3178
    functionLinenumberEnd: 3190
    functionName: CRYPT_SYMBOL_EXPORT_OLD
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _crypt_format
    linkageType: ''
    returnType: void
    signature: "void CRYPT_SYMBOL_EXPORT_OLD(int, crypt_format, 2, 0,\n\t/* crypt_format
      parameters follows */\n\tstruct crypt_device *cd,\n\tconst char *type,\n\tconst
      char *cipher,\n\tconst char *cipher_mode,\n\tconst char *uuid,\n\tconst char
      *volume_key,\n\tsize_t volume_key_size,\n\tvoid *params)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3201,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:3202,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:3204,1
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:3207,1
    - Dst: _crypt_load_luks
      Src: /src/cryptsetup/lib/setup.c:3211,1
    - Dst: crypt_check_data_device_size
      Src: /src/cryptsetup/lib/setup.c:3216,1
    - Dst: crypt_set_null_type
      Src: /src/cryptsetup/lib/setup.c:3218,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - cd
    - requested_type
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3221
      start: 3192
    functionDepth: 5
    functionLinenumber: 3192
    functionLinenumberEnd: 3221
    functionName: crypt_repair
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - crypt_set_null_type
    - isLUKS
    - crypt_metadata_device
    - mdata_device_path
    - log_dbg
    - _crypt_load_luks
    - crypt_check_data_device_size
    linkageType: ''
    returnType: int
    signature: "int crypt_repair(struct crypt_device *cd,\n\t\t const char *requested_type,\n\t\t
      void *params __attribute__((unused)))"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:3232,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:3232,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3236,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3236,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3237,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3237,1
    - Dst: crypt_volume_key_is_set
      Src: /src/cryptsetup/lib/setup.c:3238,1
    - Dst: crypt_volume_key_is_set
      Src: /src/cryptsetup/lib/setup.c:3238,1
    - Dst: crypt_volume_key_is_set
      Src: /src/cryptsetup/lib/setup.c:3239,1
    - Dst: crypt_volume_key_is_set
      Src: /src/cryptsetup/lib/setup.c:3239,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3242,1
    - Dst: crypt_volume_key_kernel_key_type
      Src: /src/cryptsetup/lib/setup.c:3243,1
    - Dst: crypt_volume_key_kernel_key_type
      Src: /src/cryptsetup/lib/setup.c:3243,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:3244,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3244,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3244,1
    - Dst: crypt_volume_key_is_set
      Src: /src/cryptsetup/lib/setup.c:3247,1
    - Dst: crypt_backend_memeq
      Src: /src/cryptsetup/lib/setup.c:3248,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:3248,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:3249,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:3250,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 14
    argCount: 2
    argNames:
    - svk
    - tvk
    argTypes:
    - struct volume_key*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3254
      start: 3224
    functionDepth: 1
    functionLinenumber: 3224
    functionLinenumberEnd: 3254
    functionName: _compare_volume_keys
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - crypt_volume_key_description
    - crypt_volume_key_is_set
    - crypt_volume_key_kernel_key_type
    - crypt_volume_key_get_key
    - crypt_backend_memeq
    - strcmp
    linkageType: ''
    returnType: int
    signature: int _compare_volume_keys(struct volume_key *svk, struct volume_key
      *tvk)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:3264,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:3264,1
    - Dst: crypt_volume_key_is_set
      Src: /src/cryptsetup/lib/setup.c:3267,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3267,1
    - Dst: crypt_volume_key_is_set
      Src: /src/cryptsetup/lib/setup.c:3268,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3268,1
    - Dst: crypt_volume_key_is_set
      Src: /src/cryptsetup/lib/setup.c:3271,1
    - Dst: crypt_volume_key_is_set
      Src: /src/cryptsetup/lib/setup.c:3271,1
    - Dst: crypt_backend_memeq
      Src: /src/cryptsetup/lib/setup.c:3272,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:3272,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:3273,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:3274,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3277,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3277,1
    - Dst: crypt_volume_key_kernel_key_type
      Src: /src/cryptsetup/lib/setup.c:3278,1
    - Dst: crypt_volume_key_kernel_key_type
      Src: /src/cryptsetup/lib/setup.c:3278,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:3279,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3279,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:3279,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 14
    argCount: 2
    argNames:
    - svk
    - tvk
    argTypes:
    - struct volume_key*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3282
      start: 3256
    functionDepth: 1
    functionLinenumber: 3256
    functionLinenumberEnd: 3282
    functionName: _compare_volume_keys_luks2
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - crypt_volume_key_description
    - crypt_volume_key_is_set
    - crypt_volume_key_kernel_key_type
    - crypt_volume_key_get_key
    - crypt_backend_memeq
    - strcmp
    linkageType: ''
    returnType: int
    signature: int _compare_volume_keys_luks2(struct volume_key *svk, struct volume_key
      *tvk)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3289,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3299,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:3300,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/setup.c:3300,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:3301,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/setup.c:3301,1
    - Dst: dm_uuid_cmp
      Src: /src/cryptsetup/lib/setup.c:3302,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3303,1
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:3306,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:3307,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/setup.c:3307,1
    - Dst: dm_uuid_cmp
      Src: /src/cryptsetup/lib/setup.c:3308,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3309,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:3312,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:3312,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:3313,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/setup.c:3313,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3314,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:3317,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3318,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 3
    argNames:
    - cd
    - src
    - tgt
    argTypes:
    - struct crypt_device*
    - struct crypt_dm_active_device*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3323
      start: 3284
    functionDepth: 1
    functionLinenumber: 3284
    functionLinenumberEnd: 3323
    functionName: _compare_device_types
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - isLUKS
    - strncmp
    - isLUKS2
    - log_dbg
    - isPLAIN
    - isINTEGRITY
    - isLOOPAES
    - strlen
    - dm_uuid_cmp
    linkageType: ''
    returnType: int
    signature: "int _compare_device_types(struct crypt_device *cd,\n\t\t\t       const
      struct crypt_dm_active_device *src,\n\t\t\t       const struct crypt_dm_active_device
      *tgt)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: crypt_capi_to_cipher
      Src: /src/cryptsetup/lib/setup.c:3345,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:3348,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3349,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:3353,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/setup.c:3353,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3354,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3355,1
    - Dst: _compare_volume_keys_luks2
      Src: /src/cryptsetup/lib/setup.c:3356,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3357,1
    - Dst: _compare_volume_keys
      Src: /src/cryptsetup/lib/setup.c:3360,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3361,1
    - Dst: crypt_strcmp
      Src: /src/cryptsetup/lib/setup.c:3365,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3366,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3374,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/setup.c:3378,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3379,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:3384,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:3385,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 44
    argCount: 3
    argNames:
    - cd
    - src
    - tgt
    argTypes:
    - struct crypt_device*
    - struct dm_target*
    - struct dm_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3388
      start: 3325
    functionDepth: 2
    functionLinenumber: 3325
    functionLinenumberEnd: 3388
    functionName: _compare_crypt_devices
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - device_is_identical
    - free
    - crypt_capi_to_cipher
    - crypt_is_cipher_null
    - isLUKS2
    - _compare_volume_keys_luks2
    - log_dbg
    - crypt_strcmp
    - _compare_volume_keys
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int _compare_crypt_devices(struct crypt_device *cd,\n\t\t\t       const
      struct dm_target *src,\n\t\t\t       const struct dm_target *tgt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3408,1
    - Dst: crypt_strcmp
      Src: /src/cryptsetup/lib/setup.c:3412,1
    - Dst: crypt_strcmp
      Src: /src/cryptsetup/lib/setup.c:3413,1
    - Dst: crypt_strcmp
      Src: /src/cryptsetup/lib/setup.c:3414,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3415,1
    - Dst: _compare_volume_keys
      Src: /src/cryptsetup/lib/setup.c:3420,1
    - Dst: _compare_volume_keys
      Src: /src/cryptsetup/lib/setup.c:3421,1
    - Dst: _compare_volume_keys
      Src: /src/cryptsetup/lib/setup.c:3422,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3423,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/setup.c:3427,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3428,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 3
    argNames:
    - cd
    - src
    - tgt
    argTypes:
    - struct crypt_device*
    - struct dm_target*
    - struct dm_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3433
      start: 3390
    functionDepth: 2
    functionLinenumber: 3390
    functionLinenumberEnd: 3433
    functionName: _compare_integrity_devices
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - crypt_strcmp
    - _compare_volume_keys
    - device_is_identical
    linkageType: ''
    returnType: int
    signature: "int _compare_integrity_devices(struct crypt_device *cd,\n\t\t\t       const
      struct dm_target *src,\n\t\t\t       const struct dm_target *tgt)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: _compare_device_types
      Src: /src/cryptsetup/lib/setup.c:3445,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3454,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3458,1
    - Dst: _compare_crypt_devices
      Src: /src/cryptsetup/lib/setup.c:3465,1
    - Dst: _compare_integrity_devices
      Src: /src/cryptsetup/lib/setup.c:3468,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 3
    argNames:
    - cd
    - src
    - tgt
    argTypes:
    - struct crypt_device*
    - struct crypt_dm_active_device*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3485
      start: 3435
    functionDepth: 3
    functionLinenumber: 3435
    functionLinenumberEnd: 3485
    functionName: crypt_compare_dm_devices
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - _compare_device_types
    - _compare_integrity_devices
    - _compare_crypt_devices
    linkageType: ''
    returnType: int
    signature: "int crypt_compare_dm_devices(struct crypt_device *cd,\n\t\t\t       const
      struct crypt_dm_active_device *src,\n\t\t\t       const struct crypt_dm_active_device
      *tgt)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:3494,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:3495,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:3502,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3507,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3507,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:3511,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3515,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3515,1
    - Dst: crypt_compare_dm_devices
      Src: /src/cryptsetup/lib/setup.c:3519,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3521,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3521,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3540,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:3541,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/setup.c:3546,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/setup.c:3549,1
    - Dst: dm_reload_device
      Src: /src/cryptsetup/lib/setup.c:3560,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:3566,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 48
    argCount: 4
    argNames:
    - cd
    - name
    - sdmd
    - dmflags
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_dm_active_device*
    - uint64_t
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 3493
        line_start: 3493
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (sdmd)
      pos:
        line_end: 3494
        line_start: 3494
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 3570
      start: 3487
    functionDepth: 4
    functionLinenumber: 3487
    functionLinenumberEnd: 3570
    functionName: _reload_device
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - _
    - dm_targets_free
    - crypt_free_volume_key
    - isLUKS2
    - assert
    - log_err
    - device_block_adjust
    - dm_reload_device
    - dm_query_device
    - single_segment
    - crypt_compare_dm_devices
    linkageType: ''
    returnType: int
    signature: "int _reload_device(struct crypt_device *cd, const char *name,\n\t\t\t
      \ struct crypt_dm_active_device *sdmd, uint64_t dmflags)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:3585,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:3586,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:3587,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:3595,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3599,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3599,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:3603,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3604,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3604,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:3609,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3611,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3611,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:3616,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3617,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3617,1
    - Dst: crypt_compare_dm_devices
      Src: /src/cryptsetup/lib/setup.c:3622,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3624,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3624,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:3634,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/setup.c:3638,1
    - Dst: crypt_compare_dm_devices
      Src: /src/cryptsetup/lib/setup.c:3645,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3647,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3647,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:3667,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/setup.c:3670,1
    - Dst: dm_reload_device
      Src: /src/cryptsetup/lib/setup.c:3678,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3679,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3679,1
    - Dst: dm_reload_device
      Src: /src/cryptsetup/lib/setup.c:3683,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3684,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3684,1
    - Dst: dm_suspend_device
      Src: /src/cryptsetup/lib/setup.c:3689,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3690,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3690,1
    - Dst: dm_suspend_device
      Src: /src/cryptsetup/lib/setup.c:3695,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3696,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3696,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/setup.c:3701,1
    - Dst: act2dmflags
      Src: /src/cryptsetup/lib/setup.c:3701,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3702,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3702,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/setup.c:3707,1
    - Dst: act2dmflags
      Src: /src/cryptsetup/lib/setup.c:3707,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3717,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3717,1
    - Dst: dm_error_device
      Src: /src/cryptsetup/lib/setup.c:3719,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3720,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3720,1
    - Dst: dm_error_device
      Src: /src/cryptsetup/lib/setup.c:3721,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3722,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3722,1
    - Dst: dm_clear_device
      Src: /src/cryptsetup/lib/setup.c:3725,1
    - Dst: dm_clear_device
      Src: /src/cryptsetup/lib/setup.c:3726,1
    - Dst: dm_status_suspended
      Src: /src/cryptsetup/lib/setup.c:3728,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/setup.c:3729,1
    - Dst: dm_status_suspended
      Src: /src/cryptsetup/lib/setup.c:3730,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/setup.c:3731,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:3737,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:3738,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:3741,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 128
    argCount: 6
    argNames:
    - cd
    - name
    - iname
    - ipath
    - sdmd
    - sdmdi
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - struct crypt_dm_active_device*
    - struct crypt_dm_active_device*
    assertStmts:
    - condition: (sdmdi)
      pos:
        line_end: 3586
        line_start: 3586
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (sdmd)
      pos:
        line_end: 3585
        line_start: 3585
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (cd)
      pos:
        line_end: 3584
        line_start: 3584
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 3744
      start: 3572
    functionDepth: 4
    functionLinenumber: 3572
    functionLinenumberEnd: 3744
    functionName: _reload_device_with_integrity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_free
    - _
    - dm_targets_free
    - crypt_free_volume_key
    - dm_status_suspended
    - assert
    - log_err
    - device_block_adjust
    - dm_reload_device
    - dm_query_device
    - act2dmflags
    - dm_suspend_device
    - single_segment
    - dm_resume_device
    - dm_error_device
    - dm_clear_device
    - crypt_compare_dm_devices
    - device_alloc
    linkageType: ''
    returnType: int
    signature: "int _reload_device_with_integrity(struct crypt_device *cd,\n\tconst
      char *name,\n\tconst char *iname,\n\tconst char *ipath,\n\tstruct crypt_dm_active_device
      *sdmd,\n\tstruct crypt_dm_active_device *sdmdi)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:3759,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:3759,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3760,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3760,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3764,1
    - Dst: LUKS2_segments_dynamic_size
      Src: /src/cryptsetup/lib/setup.c:3764,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3765,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3765,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3769,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:3769,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3770,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3770,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3775,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3777,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:3779,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3783,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3783,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:3786,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3787,1
    - Dst: crypt_key_in_keyring
      Src: /src/cryptsetup/lib/setup.c:3792,1
    - Dst: crypt_key_in_keyring
      Src: /src/cryptsetup/lib/setup.c:3797,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3798,1
    - Dst: LUKS2_key_description_by_segment
      Src: /src/cryptsetup/lib/setup.c:3799,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:3801,1
    - Dst: crypt_loop_device
      Src: /src/cryptsetup/lib/setup.c:3811,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/setup.c:3811,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3812,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/setup.c:3813,1
    - Dst: crypt_loop_resize
      Src: /src/cryptsetup/lib/setup.c:3815,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/setup.c:3815,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3816,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3816,1
    - Dst: INTEGRITY_data_sectors
      Src: /src/cryptsetup/lib/setup.c:3827,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:3827,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:3828,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/lib/setup.c:3835,1
    - Dst: dm_integrity_target_set
      Src: /src/cryptsetup/lib/setup.c:3839,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:3840,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:3840,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:3841,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:3841,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/setup.c:3842,1
    - Dst: _reload_device
      Src: /src/cryptsetup/lib/setup.c:3847,1
    - Dst: INTEGRITY_data_sectors
      Src: /src/cryptsetup/lib/setup.c:3851,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:3851,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:3852,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3855,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/setup.c:3858,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:3860,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3860,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/setup.c:3863,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:3863,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:3864,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:3868,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3869,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3869,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/setup.c:3874,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/setup.c:3874,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:3874,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3875,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3875,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/setup.c:3880,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/setup.c:3885,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:3885,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/setup.c:3886,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/setup.c:3887,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:3887,1
    - Dst: crypt_get_integrity
      Src: /src/cryptsetup/lib/setup.c:3888,1
    - Dst: crypt_get_integrity_key_size
      Src: /src/cryptsetup/lib/setup.c:3888,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:3888,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/setup.c:3889,1
    - Dst: crypt_get_integrity_info
      Src: /src/cryptsetup/lib/setup.c:3893,1
    - Dst: dm_integrity_target_set
      Src: /src/cryptsetup/lib/setup.c:3897,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:3898,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:3898,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:3899,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:3899,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/setup.c:3900,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3907,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:3911,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:3913,1
    - Dst: LUKS2_unmet_requirements
      Src: /src/cryptsetup/lib/setup.c:3914,1
    - Dst: _reload_device
      Src: /src/cryptsetup/lib/setup.c:3920,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/setup.c:3924,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:3926,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3926,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:3929,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:3930,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 131
    argCount: 3
    argNames:
    - cd
    - name
    - new_size
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3933
      start: 3746
    functionDepth: 5
    functionLinenumber: 3746
    functionLinenumberEnd: 3933
    functionName: crypt_resize
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 9
    functionsReached:
    - MISALIGNED
    - crypt_get_iv_offset
    - dm_crypt_target_set
    - crypt_loop_device
    - single_segment
    - LUKS2_unmet_requirements
    - INTEGRITY_data_sectors
    - LUKS2_key_description_by_segment
    - dm_flags
    - isLUKS2
    - crypt_key_in_keyring
    - log_dbg
    - crypt_get_integrity_tag_size
    - device_block_adjust
    - dm_query_device
    - crypt_get_device_name
    - crypt_get_sector_size
    - crypt_loop_resize
    - dm_integrity_target_set
    - isBITLK
    - log_std
    - crypt_get_cipher_spec
    - dm_targets_free
    - LUKS2_segments_dynamic_size
    - crypt_get_integrity_info
    - log_err
    - isPLAIN
    - crypt_get_integrity
    - crypt_get_data_offset
    - isTCRYPT
    - crypt_data_device
    - crypt_get_uuid
    - _
    - crypt_get_integrity_key_size
    - crypt_metadata_device
    - _reload_device
    - device_block_size
    linkageType: ''
    returnType: int
    signature: int crypt_resize(struct crypt_device *cd, const char *name, uint64_t
      new_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3940,1
    - Dst: onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:3942,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/setup.c:3945,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:3947,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3948,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:3949,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3954,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:3954,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3956,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:3956,1
    - Dst: crypt_confirm
      Src: /src/cryptsetup/lib/setup.c:3958,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:3958,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:3961,1
    - Dst: LUKS_hdr_uuid_set
      Src: /src/cryptsetup/lib/setup.c:3962,1
    - Dst: LUKS2_hdr_uuid
      Src: /src/cryptsetup/lib/setup.c:3964,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - cd
    - uuid
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3965
      start: 3935
    functionDepth: 3
    functionLinenumber: 3935
    functionLinenumberEnd: 3965
    functionName: crypt_set_uuid
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 6
    functionsReached:
    - crypt_get_uuid
    - _
    - LUKS_hdr_uuid_set
    - isLUKS1
    - strncmp
    - mdata_device_path
    - onlyLUKS
    - log_dbg
    - crypt_confirm
    - LUKS2_hdr_uuid
    linkageType: ''
    returnType: int
    signature: int crypt_set_uuid(struct crypt_device *cd, const char *uuid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:3971,1
    - Dst: onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:3973,1
    - Dst: LUKS2_hdr_labels
      Src: /src/cryptsetup/lib/setup.c:3976,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cd
    - label
    - subsystem
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3977
      start: 3967
    functionDepth: 3
    functionLinenumber: 3967
    functionLinenumberEnd: 3977
    functionName: crypt_set_label
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 5
    functionsReached:
    - log_dbg
    - onlyLUKS2
    - LUKS2_hdr_labels
    linkageType: ''
    returnType: int
    signature: int crypt_set_label(struct crypt_device *cd, const char *label, const
      char *subsystem)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:3981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3985
      start: 3979
    functionDepth: 2
    functionLinenumber: 3979
    functionLinenumberEnd: 3985
    functionName: crypt_get_label
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 4
    functionsReached:
    - _onlyLUKS2
    linkageType: ''
    returnType: char
    signature: char *crypt_get_label(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:3989,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3993
      start: 3987
    functionDepth: 2
    functionLinenumber: 3987
    functionLinenumberEnd: 3993
    functionName: crypt_get_subsystem
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 4
    functionsReached:
    - _onlyLUKS2
    linkageType: ''
    returnType: char
    signature: char *crypt_get_subsystem(struct crypt_device *cd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:4001,1
    - Dst: _crypt_load_luks
      Src: /src/cryptsetup/lib/setup.c:4008,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4012,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:4013,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4015,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4015,1
    - Dst: LUKS_hdr_backup
      Src: /src/cryptsetup/lib/setup.c:4016,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4017,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4017,1
    - Dst: LUKS2_hdr_backup
      Src: /src/cryptsetup/lib/setup.c:4018,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 3
    argNames:
    - cd
    - requested_type
    - backup_file
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4023
      start: 3995
    functionDepth: 5
    functionLinenumber: 3995
    functionLinenumberEnd: 4023
    functionName: crypt_header_backup
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 7
    functionsReached:
    - isLUKS
    - isLUKS1
    - mdata_device_path
    - isLUKS2
    - log_dbg
    - LUKS2_hdr_backup
    - _crypt_load_luks
    - LUKS_hdr_backup
    linkageType: ''
    returnType: int
    signature: "int crypt_header_backup(struct crypt_device *cd,\n\t\t\tconst char
      *requested_type,\n\t\t\tconst char *backup_file)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:4033,1
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:4036,1
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/setup.c:4039,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4043,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:4044,1
    - Dst: LUKS2_hdr_version_unlocked
      Src: /src/cryptsetup/lib/setup.c:4046,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4048,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4049,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4050,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4050,1
    - Dst: memset
      Src: /src/cryptsetup/lib/setup.c:4054,1
    - Dst: LUKS_hdr_restore
      Src: /src/cryptsetup/lib/setup.c:4058,1
    - Dst: LUKS2_hdr_restore
      Src: /src/cryptsetup/lib/setup.c:4060,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/setup.c:4062,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/setup.c:4063,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4064,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4064,1
    - Dst: LUKS2_hdr_restore
      Src: /src/cryptsetup/lib/setup.c:4065,1
    - Dst: _crypt_load_luks2
      Src: /src/cryptsetup/lib/setup.c:4067,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4068,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4068,1
    - Dst: LUKS_hdr_restore
      Src: /src/cryptsetup/lib/setup.c:4069,1
    - Dst: _crypt_load_luks
      Src: /src/cryptsetup/lib/setup.c:4074,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 33
    argCount: 3
    argNames:
    - cd
    - requested_type
    - backup_file
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4077
      start: 4025
    functionDepth: 5
    functionLinenumber: 4025
    functionLinenumberEnd: 4077
    functionName: crypt_header_restore
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 10
    functionsReached:
    - memset
    - _
    - LUKS2_hdr_restore
    - LUKS2_hdr_version_unlocked
    - isLUKS
    - isLUKS1
    - mdata_device_path
    - isLUKS2
    - log_dbg
    - log_err
    - _crypt_load_luks2
    - _crypt_load_luks
    - init_crypto
    - crypt_safe_memzero
    - LUKS_hdr_restore
    linkageType: ''
    returnType: int
    signature: "int crypt_header_restore(struct crypt_device *cd,\n\t\t\t const char
      *requested_type,\n\t\t\t const char *backup_file)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:4083,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/setup.c:4086,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4086,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:4086,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4088,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4093
      start: 4079
    functionDepth: 1
    functionLinenumber: 4079
    functionLinenumberEnd: 4093
    functionName: crypt_header_is_detached
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 9
    functionsReached:
    - device_is_identical
    - isLUKS
    - crypt_metadata_device
    - log_dbg
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: int crypt_header_is_detached(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4100,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:4100,1
    - Dst: dm_backend_exit
      Src: /src/cryptsetup/lib/setup.c:4102,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:4103,1
    - Dst: crypt_free_type
      Src: /src/cryptsetup/lib/setup.c:4105,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:4107,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:4108,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/setup.c:4116,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:4117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4118
      start: 4095
    functionDepth: 2
    functionLinenumber: 4095
    functionLinenumberEnd: 4118
    functionName: crypt_free
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 76
    functionsReached:
    - device_free
    - free
    - crypt_free_volume_key
    - mdata_device_path
    - log_dbg
    - dm_backend_exit
    - crypt_free_type
    - crypt_safe_memzero
    linkageType: ''
    returnType: void
    signature: void crypt_free(struct crypt_device *cd)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4136,1
    - Dst: onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:4138,1
    - Dst: crypt_status
      Src: /src/cryptsetup/lib/setup.c:4141,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4143,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4143,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:4147,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4153,1
    - Dst: dm_uuid_type_cmp
      Src: /src/cryptsetup/lib/setup.c:4155,1
    - Dst: dm_uuid_type_cmp
      Src: /src/cryptsetup/lib/setup.c:4157,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4160,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4160,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4166,1
    - Dst: dm_uuid_type_cmp
      Src: /src/cryptsetup/lib/setup.c:4166,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4167,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4171,1
    - Dst: dm_uuid_type_cmp
      Src: /src/cryptsetup/lib/setup.c:4171,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4172,1
    - Dst: dm_uuid_type_cmp
      Src: /src/cryptsetup/lib/setup.c:4177,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4179,1
    - Dst: LUKS2_segment_is_hw_opal
      Src: /src/cryptsetup/lib/setup.c:4180,1
    - Dst: dm_uuid_cmp
      Src: /src/cryptsetup/lib/setup.c:4183,1
    - Dst: LUKS_UUID
      Src: /src/cryptsetup/lib/setup.c:4183,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4184,1
    - Dst: LUKS_UUID
      Src: /src/cryptsetup/lib/setup.c:4185,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:4190,1
    - Dst: dm_get_active_iname
      Src: /src/cryptsetup/lib/setup.c:4191,1
    - Dst: dm_status_suspended
      Src: /src/cryptsetup/lib/setup.c:4193,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4198,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4198,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4203,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4204,1
    - Dst: LUKS2_get_opal_segment_number
      Src: /src/cryptsetup/lib/setup.c:4205,1
    - Dst: crypt_dev_get_partition_number
      Src: /src/cryptsetup/lib/setup.c:4210,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:4210,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4210,1
    - Dst: crypt_cipher_wrapped_key
      Src: /src/cryptsetup/lib/setup.c:4217,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/lib/setup.c:4217,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/lib/setup.c:4217,1
    - Dst: dm_suspend_device
      Src: /src/cryptsetup/lib/setup.c:4221,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4224,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4224,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4226,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4226,1
    - Dst: dm_suspend_device
      Src: /src/cryptsetup/lib/setup.c:4232,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4234,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4234,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:4237,1
    - Dst: crypt_volume_key_drop_kernel_key
      Src: /src/cryptsetup/lib/setup.c:4238,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4240,1
    - Dst: opal_exclusive_lock
      Src: /src/cryptsetup/lib/setup.c:4241,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4241,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4243,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4243,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:4243,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4243,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4248,1
    - Dst: opal_lock
      Src: /src/cryptsetup/lib/setup.c:4248,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4248,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4249,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4249,1
    - Dst: opal_exclusive_unlock
      Src: /src/cryptsetup/lib/setup.c:4251,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:4252,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:4253,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:4254,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 103
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4258
      start: 4120
    functionDepth: 3
    functionLinenumber: 4120
    functionLinenumberEnd: 4258
    functionName: crypt_suspend
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 8
    functionsReached:
    - LUKS2_get_opal_segment_number
    - crypt_cipher_wrapped_key
    - single_segment
    - opal_exclusive_lock
    - dm_uuid_cmp
    - free
    - LUKS_UUID
    - dm_status_suspended
    - isLUKS2
    - log_dbg
    - crypt_get_integrity_tag_size
    - dm_query_device
    - crypt_status
    - dm_suspend_device
    - crypt_volume_key_drop_kernel_key
    - dm_targets_free
    - opal_lock
    - log_err
    - crypt_data_device
    - LUKS2_segment_is_hw_opal
    - _
    - crypt_get_cipher
    - opal_exclusive_unlock
    - isLUKS1
    - crypt_get_cipher_mode
    - onlyLUKS
    - dm_uuid_type_cmp
    - device_path
    - crypt_dev_get_partition_number
    - dm_get_active_iname
    linkageType: ''
    returnType: int
    signature: "int crypt_suspend(struct crypt_device *cd,\n\t\t  const char *name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4267,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:4267,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4268,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/setup.c:4270,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/setup.c:4270,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:4271,1
    - Dst: dm_resume_and_reinstate_key
      Src: /src/cryptsetup/lib/setup.c:4277,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4280,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4280,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4282,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4282,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:4284,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - cd
    - vk
    - name
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    - char*
    assertStmts:
    - condition: (vk && crypt_volume_key_get_id(vk) == 0)
      pos:
        line_end: 4266
        line_start: 4266
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (name)
      pos:
        line_end: 4267
        line_start: 4267
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 4287
      start: 4260
    functionDepth: 2
    functionLinenumber: 4260
    functionLinenumberEnd: 4287
    functionName: resume_luks1_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_get_cipher_spec
    - crypt_free_volume_key
    - assert
    - log_err
    - crypt_volume_key_get_id
    - dm_resume_and_reinstate_key
    - crypt_is_cipher_null
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int resume_luks1_by_volume_key(struct crypt_device *cd,\n\t\tstruct
      volume_key *vk,\n\t\tconst char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4291,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4292,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4294,1
    - Dst: keyring_unlink_key_from_keyring
      Src: /src/cryptsetup/lib/setup.c:4297,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4300,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4301,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - cd
    - kid
    argTypes:
    - struct crypt_device*
    - key_serial_t
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 4290
        line_start: 4290
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (cd->keyring_to_link_vk)
      pos:
        line_end: 4291
        line_start: 4291
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 4302
      start: 4289
    functionDepth: 1
    functionLinenumber: 4289
    functionLinenumberEnd: 4302
    functionName: crypt_unlink_key_from_custom_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - assert
    - log_dbg
    - log_err
    - keyring_unlink_key_from_keyring
    linkageType: ''
    returnType: void
    signature: void crypt_unlink_key_from_custom_keyring(struct crypt_device *cd,
      key_serial_t kid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4311,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4312,1
    - Dst: key_type_name
      Src: /src/cryptsetup/lib/setup.c:4314,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4317,1
    - Dst: keyring_add_key_to_keyring
      Src: /src/cryptsetup/lib/setup.c:4320,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:4321,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:4322,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4325,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - cd
    - vk
    - user_key_name
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    - char*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 4310
        line_start: 4310
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (cd->link_vk_to_keyring)
      pos:
        line_end: 4311
        line_start: 4311
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 4328
      start: 4304
    functionDepth: 1
    functionLinenumber: 4304
    functionLinenumberEnd: 4328
    functionName: crypt_single_volume_key_load_in_custom_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - crypt_volume_key_get_key
    - assert
    - key_type_name
    - log_dbg
    - keyring_add_key_to_keyring
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t crypt_single_volume_key_load_in_custom_keyring(struct
      crypt_device *cd,\n\t\t\t\t\t\t\t\t   struct volume_key *vk,\n\t\t\t\t\t\t\t\t
      \  const char *user_key_name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4337,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4338,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4339,1
    - Dst: key_type_name
      Src: /src/cryptsetup/lib/setup.c:4341,1
    - Dst: crypt_single_volume_key_load_in_custom_keyring
      Src: /src/cryptsetup/lib/setup.c:4344,1
    - Dst: crypt_volume_key_next
      Src: /src/cryptsetup/lib/setup.c:4348,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4350,1
    - Dst: crypt_single_volume_key_load_in_custom_keyring
      Src: /src/cryptsetup/lib/setup.c:4351,1
    - Dst: crypt_unlink_key_from_custom_keyring
      Src: /src/cryptsetup/lib/setup.c:4353,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - cd
    - vk
    - kid1_out
    - kid2_out
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    - key_serial_t*
    - key_serial_t*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 4336
        line_start: 4336
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (cd->user_key_name1)
      pos:
        line_end: 4338
        line_start: 4338
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (cd->link_vk_to_keyring)
      pos:
        line_end: 4337
        line_start: 4337
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (cd->user_key_name2)
      pos:
        line_end: 4349
        line_start: 4349
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 4361
      start: 4330
    functionDepth: 2
    functionLinenumber: 4330
    functionLinenumberEnd: 4361
    functionName: crypt_volume_key_load_in_custom_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_single_volume_key_load_in_custom_keyring
    - assert
    - key_type_name
    - crypt_volume_key_next
    - crypt_unlink_key_from_custom_keyring
    linkageType: ''
    returnType: int
    signature: "int crypt_volume_key_load_in_custom_keyring(struct crypt_device *cd,\n\t\t\t\t\t\t
      \  struct volume_key *vk,\n\t\t\t\t\t\t   key_serial_t *kid1_out,\n\t\t\t\t\t\t
      \  key_serial_t *kid2_out)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4376,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4377,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:4377,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4378,1
    - Dst: crypt_get_hw_encryption_type
      Src: /src/cryptsetup/lib/setup.c:4380,1
    - Dst: crypt_use_keyring_for_vk
      Src: /src/cryptsetup/lib/setup.c:4384,1
    - Dst: LUKS2_get_opal_segment_number
      Src: /src/cryptsetup/lib/setup.c:4387,1
    - Dst: LUKS2_split_crypt_and_opal_keys
      Src: /src/cryptsetup/lib/setup.c:4392,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/setup.c:4402,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/setup.c:4402,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:4403,1
    - Dst: LUKS2_volume_key_load_in_keyring_by_digest
      Src: /src/cryptsetup/lib/setup.c:4414,1
    - Dst: crypt_volume_key_load_in_custom_keyring
      Src: /src/cryptsetup/lib/setup.c:4421,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4423,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4423,1
    - Dst: opal_exclusive_lock
      Src: /src/cryptsetup/lib/setup.c:4430,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4430,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4432,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4432,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:4432,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4432,1
    - Dst: opal_unlock
      Src: /src/cryptsetup/lib/setup.c:4436,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4436,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:4443,1
    - Dst: dm_get_active_iname
      Src: /src/cryptsetup/lib/setup.c:4444,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/setup.c:4445,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4447,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4447,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:4448,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/setup.c:4452,1
    - Dst: dm_resume_and_reinstate_key
      Src: /src/cryptsetup/lib/setup.c:4454,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4457,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4457,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4459,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4459,1
    - Dst: crypt_drop_uploaded_keyring_key
      Src: /src/cryptsetup/lib/setup.c:4463,1
    - Dst: crypt_unlink_key_from_custom_keyring
      Src: /src/cryptsetup/lib/setup.c:4465,1
    - Dst: crypt_unlink_key_from_custom_keyring
      Src: /src/cryptsetup/lib/setup.c:4467,1
    - Dst: opal_lock
      Src: /src/cryptsetup/lib/setup.c:4471,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4471,1
    - Dst: opal_exclusive_unlock
      Src: /src/cryptsetup/lib/setup.c:4473,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:4474,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:4475,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:4476,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 87
    argCount: 4
    argNames:
    - cd
    - digest
    - vk
    - name
    argTypes:
    - struct crypt_device*
    - int
    - struct volume_key*
    - char*
    assertStmts:
    - condition: (digest >= 0)
      pos:
        line_end: 4375
        line_start: 4375
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (name)
      pos:
        line_end: 4377
        line_start: 4377
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (vk && crypt_volume_key_get_id(vk) == digest)
      pos:
        line_end: 4376
        line_start: 4376
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 4479
      start: 4363
    functionDepth: 3
    functionLinenumber: 4363
    functionLinenumberEnd: 4479
    functionName: resume_luks2_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_opal_segment_number
    - crypt_alloc_volume_key
    - crypt_drop_uploaded_keyring_key
    - opal_exclusive_lock
    - LUKS2_volume_key_load_in_keyring_by_digest
    - free
    - LUKS2_split_crypt_and_opal_keys
    - crypt_get_integrity_tag_size
    - dm_resume_device
    - crypt_get_cipher_spec
    - opal_lock
    - crypt_free_volume_key
    - log_err
    - dm_resume_and_reinstate_key
    - opal_unlock
    - crypt_use_keyring_for_vk
    - crypt_is_cipher_null
    - crypt_data_device
    - _
    - crypt_get_hw_encryption_type
    - opal_exclusive_unlock
    - crypt_volume_key_load_in_custom_keyring
    - assert
    - device_path
    - crypt_volume_key_get_id
    - crypt_unlink_key_from_custom_keyring
    - dm_get_active_iname
    linkageType: ''
    returnType: int
    signature: "int resume_luks2_by_volume_key(struct crypt_device *cd,\n\t\tint digest,\n\t\tstruct
      volume_key *vk,\n\t\tconst char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:4486,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4488,1
    - Dst: resume_luks2_by_volume_key
      Src: /src/cryptsetup/lib/setup.c:4489,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/setup.c:4490,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4493,1
    - Dst: resume_luks1_by_volume_key
      Src: /src/cryptsetup/lib/setup.c:4494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - cd
    - vk
    - name
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    - char*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 4485
        line_start: 4485
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 4497
      start: 4482
    functionDepth: 4
    functionLinenumber: 4482
    functionLinenumberEnd: 4497
    functionName: resume_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - LUKS2_digest_by_segment
    - isLUKS1
    - resume_luks2_by_volume_key
    - isLUKS2
    - assert
    - resume_luks1_by_volume_key
    linkageType: ''
    returnType: int
    signature: "int resume_by_volume_key(struct crypt_device *cd,\n\t\tstruct volume_key
      *vk,\n\t\tconst char *name)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4511,1
    - Dst: keyslot_context_type_string
      Src: /src/cryptsetup/lib/setup.c:4511,1
    - Dst: onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:4513,1
    - Dst: dm_status_suspended
      Src: /src/cryptsetup/lib/setup.c:4516,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4521,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4521,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4525,1
    - Dst: struct crypt_keyslot_context*::get_luks1_volume_key
      Src: /src/cryptsetup/lib/setup.c:4526,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4527,1
    - Dst: struct crypt_keyslot_context*::get_luks2_volume_key
      Src: /src/cryptsetup/lib/setup.c:4528,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4535,1
    - Dst: LUKS_verify_volume_key
      Src: /src/cryptsetup/lib/setup.c:4536,1
    - Dst: crypt_volume_key_set_id
      Src: /src/cryptsetup/lib/setup.c:4537,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4538,1
    - Dst: LUKS2_digest_verify_by_segment
      Src: /src/cryptsetup/lib/setup.c:4539,1
    - Dst: crypt_volume_key_set_id
      Src: /src/cryptsetup/lib/setup.c:4540,1
    - Dst: resume_by_volume_key
      Src: /src/cryptsetup/lib/setup.c:4546,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:4548,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:4551,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 4
    argNames:
    - cd
    - name
    - keyslot
    - kc
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - struct crypt_keyslot_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4553
      start: 4499
    functionDepth: 5
    functionLinenumber: 4499
    functionLinenumberEnd: 4553
    functionName: crypt_resume_by_keyslot_context
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - struct crypt_keyslot_context*::get_luks1_volume_key
    - _
    - crypt_volume_key_set_id
    - LUKS_verify_volume_key
    - crypt_free_volume_key
    - struct crypt_keyslot_context*::get_luks2_volume_key
    - isLUKS1
    - dm_status_suspended
    - isLUKS2
    - onlyLUKS
    - log_dbg
    - log_err
    - resume_by_volume_key
    - keyslot_context_type_string
    - LUKS2_digest_verify_by_segment
    linkageType: ''
    returnType: int
    signature: "int crypt_resume_by_keyslot_context(struct crypt_device *cd,\n\t\t\t
      \      const char *name,\n\t\t\t       int keyslot,\n\t\t\t       struct crypt_keyslot_context
      *kc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/setup.c:4564,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:4565,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - cd
    - name
    - keyslot
    - passphrase
    - passphrase_size
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4569
      start: 4555
    functionDepth: 6
    functionLinenumber: 4555
    functionLinenumberEnd: 4569
    functionName: crypt_resume_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 5
    functionsReached:
    - crypt_keyslot_context_init_by_passphrase_internal
    - crypt_keyslot_context_destroy_internal
    - crypt_resume_by_keyslot_context
    linkageType: ''
    returnType: int
    signature: "int crypt_resume_by_passphrase(struct crypt_device *cd,\n\t\t\t       const
      char *name,\n\t\t\t       int keyslot,\n\t\t\t       const char *passphrase,\n\t\t\t
      \      size_t passphrase_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_keyfile_internal
      Src: /src/cryptsetup/lib/setup.c:4581,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:4582,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - cd
    - name
    - keyslot
    - keyfile
    - keyfile_size
    - keyfile_offset
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - char*
    - size_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4586
      start: 4571
    functionDepth: 6
    functionLinenumber: 4571
    functionLinenumberEnd: 4586
    functionName: crypt_resume_by_keyfile_device_offset
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - crypt_keyslot_context_init_by_keyfile_internal
    - crypt_keyslot_context_destroy_internal
    - crypt_resume_by_keyslot_context
    linkageType: ''
    returnType: int
    signature: "int crypt_resume_by_keyfile_device_offset(struct crypt_device *cd,\n\t\t\t\t\t
      \ const char *name,\n\t\t\t\t\t  int keyslot,\n\t\t\t\t\t  const char *keyfile,\n\t\t\t\t\t
      \ size_t keyfile_size,\n\t\t\t\t\t  uint64_t keyfile_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_resume_by_keyfile_device_offset
      Src: /src/cryptsetup/lib/setup.c:4594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - cd
    - name
    - keyslot
    - keyfile
    - keyfile_size
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4596
      start: 4588
    functionDepth: 7
    functionLinenumber: 4588
    functionLinenumberEnd: 4596
    functionName: crypt_resume_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - crypt_resume_by_keyfile_device_offset
    linkageType: ''
    returnType: int
    signature: "int crypt_resume_by_keyfile(struct crypt_device *cd,\n\t\t\t    const
      char *name,\n\t\t\t    int keyslot,\n\t\t\t    const char *keyfile,\n\t\t\t
      \   size_t keyfile_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_resume_by_keyfile_device_offset
      Src: /src/cryptsetup/lib/setup.c:4605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - cd
    - name
    - keyslot
    - keyfile
    - keyfile_size
    - keyfile_offset
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - char*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4607
      start: 4598
    functionDepth: 7
    functionLinenumber: 4598
    functionLinenumberEnd: 4607
    functionName: crypt_resume_by_keyfile_offset
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - crypt_resume_by_keyfile_device_offset
    linkageType: ''
    returnType: int
    signature: "int crypt_resume_by_keyfile_offset(struct crypt_device *cd,\n\t\t\t\t
      \  const char *name,\n\t\t\t\t   int keyslot,\n\t\t\t\t   const char *keyfile,\n\t\t\t\t
      \  size_t keyfile_size,\n\t\t\t\t   size_t keyfile_offset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_key_internal
      Src: /src/cryptsetup/lib/setup.c:4617,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:4618,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4619,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4622,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - cd
    - name
    - volume_key
    - volume_key_size
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4625
      start: 4609
    functionDepth: 6
    functionLinenumber: 4609
    functionLinenumberEnd: 4625
    functionName: crypt_resume_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - _
    - crypt_keyslot_context_destroy_internal
    - crypt_keyslot_context_init_by_key_internal
    - log_err
    - crypt_resume_by_keyslot_context
    linkageType: ''
    returnType: int
    signature: "int crypt_resume_by_volume_key(struct crypt_device *cd,\n\tconst char
      *name,\n\tconst char *volume_key,\n\tsize_t volume_key_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_token_internal
      Src: /src/cryptsetup/lib/setup.c:4634,1
    - Dst: crypt_resume_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:4635,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - cd
    - name
    - type
    - token
    - pin
    - pin_size
    - usrptr
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - int
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4639
      start: 4627
    functionDepth: 6
    functionLinenumber: 4627
    functionLinenumberEnd: 4639
    functionName: crypt_resume_by_token_pin
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - crypt_keyslot_context_init_by_token_internal
    - crypt_keyslot_context_destroy_internal
    - crypt_resume_by_keyslot_context
    linkageType: ''
    returnType: int
    signature: "int crypt_resume_by_token_pin(struct crypt_device *cd, const char
      *name,\n\tconst char *type, int token, const char *pin, size_t pin_size,\n\tvoid
      *usrptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/setup.c:4657,1
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/setup.c:4658,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:4660,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4662,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - cd
    - keyslot
    - passphrase
    - passphrase_size
    - new_passphrase
    - new_passphrase_size
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4666
      start: 4644
    functionDepth: 2
    functionLinenumber: 4644
    functionLinenumberEnd: 4666
    functionName: crypt_keyslot_add_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 6
    functionsReached:
    - crypt_keyslot_context_init_by_passphrase_internal
    - crypt_keyslot_add_by_keyslot_context
    - crypt_keyslot_context_destroy_internal
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_add_by_passphrase(struct crypt_device *cd,\n\tint
      keyslot, // -1 any\n\tconst char *passphrase,\n\tsize_t passphrase_size,\n\tconst
      char *new_passphrase,\n\tsize_t new_passphrase_size)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4684,1
    - Dst: onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:4687,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4690,1
    - Dst: LUKS_open_key_with_hdr
      Src: /src/cryptsetup/lib/setup.c:4691,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4693,1
    - Dst: LUKS2_keyslot_open
      Src: /src/cryptsetup/lib/setup.c:4694,1
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/setup.c:4697,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4707,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4712,1
    - Dst: LUKS_keyslot_find_empty
      Src: /src/cryptsetup/lib/setup.c:4714,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4718,1
    - Dst: LUKS2_keyslot_find_empty
      Src: /src/cryptsetup/lib/setup.c:4721,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:4721,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4728,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4730,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4732,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/lib/setup.c:4733,1
    - Dst: LUKS_set_key
      Src: /src/cryptsetup/lib/setup.c:4735,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:4737,1
    - Dst: LUKS2_keyslot_params_default
      Src: /src/cryptsetup/lib/setup.c:4738,1
    - Dst: LUKS2_digest_assign
      Src: /src/cryptsetup/lib/setup.c:4743,1
    - Dst: LUKS2_token_assignment_copy
      Src: /src/cryptsetup/lib/setup.c:4746,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4750,1
    - Dst: LUKS2_keyslot_store
      Src: /src/cryptsetup/lib/setup.c:4752,1
    - Dst: LUKS2_keyslot_swap
      Src: /src/cryptsetup/lib/setup.c:4760,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/lib/setup.c:4773,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4776,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4776,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:4778,1
    - Dst: _luks2_rollback
      Src: /src/cryptsetup/lib/setup.c:4780,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 92
    argCount: 7
    argNames:
    - cd
    - keyslot_old
    - keyslot_new
    - passphrase
    - passphrase_size
    - new_passphrase
    - new_passphrase_size
    argTypes:
    - struct crypt_device*
    - int
    - int
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4784
      start: 4668
    functionDepth: 3
    functionLinenumber: 4668
    functionLinenumberEnd: 4784
    functionName: crypt_keyslot_change_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 7
    functionsReached:
    - LUKS_keyslot_find_empty
    - LUKS2_digest_assign
    - LUKS2_token_assignment_copy
    - isLUKS2
    - crypt_keyslot_destroy
    - log_dbg
    - LUKS_open_key_with_hdr
    - LUKS2_digest_by_keyslot
    - LUKS2_keyslot_store
    - crypt_volume_key_length
    - LUKS2_keyslot_params_default
    - crypt_free_volume_key
    - LUKS2_keyslot_find_empty
    - log_err
    - _luks2_rollback
    - LUKS2_keyslot_open
    - LUKS_set_key
    - _
    - isLUKS1
    - onlyLUKS
    - LUKS2_keyslot_swap
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_change_by_passphrase(struct crypt_device *cd,\n\tint
      keyslot_old,\n\tint keyslot_new,\n\tconst char *passphrase,\n\tsize_t passphrase_size,\n\tconst
      char *new_passphrase,\n\tsize_t new_passphrase_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_keyfile_internal
      Src: /src/cryptsetup/lib/setup.c:4801,1
    - Dst: crypt_keyslot_context_init_by_keyfile_internal
      Src: /src/cryptsetup/lib/setup.c:4802,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:4804,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4806,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4807,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 8
    argNames:
    - cd
    - keyslot
    - keyfile
    - keyfile_size
    - keyfile_offset
    - new_keyfile
    - new_keyfile_size
    - new_keyfile_offset
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - uint64_t
    - char*
    - size_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4810
      start: 4786
    functionDepth: 2
    functionLinenumber: 4786
    functionLinenumberEnd: 4810
    functionName: crypt_keyslot_add_by_keyfile_device_offset
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_keyslot_context_init_by_keyfile_internal
    - crypt_keyslot_add_by_keyslot_context
    - crypt_keyslot_context_destroy_internal
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_add_by_keyfile_device_offset(struct crypt_device
      *cd,\n\tint keyslot,\n\tconst char *keyfile,\n\tsize_t keyfile_size,\n\tuint64_t
      keyfile_offset,\n\tconst char *new_keyfile,\n\tsize_t new_keyfile_size,\n\tuint64_t
      new_keyfile_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_add_by_keyfile_device_offset
      Src: /src/cryptsetup/lib/setup.c:4819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - cd
    - keyslot
    - keyfile
    - keyfile_size
    - new_keyfile
    - new_keyfile_size
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4822
      start: 4812
    functionDepth: 3
    functionLinenumber: 4812
    functionLinenumberEnd: 4822
    functionName: crypt_keyslot_add_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 5
    functionsReached:
    - crypt_keyslot_add_by_keyfile_device_offset
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_add_by_keyfile(struct crypt_device *cd,\n\tint keyslot,\n\tconst
      char *keyfile,\n\tsize_t keyfile_size,\n\tconst char *new_keyfile,\n\tsize_t
      new_keyfile_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_add_by_keyfile_device_offset
      Src: /src/cryptsetup/lib/setup.c:4833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - cd
    - keyslot
    - keyfile
    - keyfile_size
    - keyfile_offset
    - new_keyfile
    - new_keyfile_size
    - new_keyfile_offset
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - size_t
    - char*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4836
      start: 4824
    functionDepth: 3
    functionLinenumber: 4824
    functionLinenumberEnd: 4836
    functionName: crypt_keyslot_add_by_keyfile_offset
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - crypt_keyslot_add_by_keyfile_device_offset
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_add_by_keyfile_offset(struct crypt_device *cd,\n\tint
      keyslot,\n\tconst char *keyfile,\n\tsize_t keyfile_size,\n\tsize_t keyfile_offset,\n\tconst
      char *new_keyfile,\n\tsize_t new_keyfile_size,\n\tsize_t new_keyfile_offset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_key_internal
      Src: /src/cryptsetup/lib/setup.c:4851,1
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/setup.c:4852,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:4854,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4856,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:4857,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - cd
    - keyslot
    - volume_key
    - volume_key_size
    - passphrase
    - passphrase_size
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4860
      start: 4838
    functionDepth: 2
    functionLinenumber: 4838
    functionLinenumberEnd: 4860
    functionName: crypt_keyslot_add_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 22
    functionsReached:
    - crypt_keyslot_context_init_by_passphrase_internal
    - crypt_keyslot_add_by_keyslot_context
    - crypt_keyslot_context_destroy_internal
    - crypt_keyslot_context_init_by_key_internal
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_add_by_volume_key(struct crypt_device *cd,\n\tint
      keyslot,\n\tconst char *volume_key,\n\tsize_t volume_key_size,\n\tconst char
      *passphrase,\n\tsize_t passphrase_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:4867,1
    - Dst: onlyLUKSunrestricted
      Src: /src/cryptsetup/lib/setup.c:4869,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/lib/setup.c:4872,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4874,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4874,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:4878,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4880,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4880,1
    - Dst: LUKS_del_key
      Src: /src/cryptsetup/lib/setup.c:4883,1
    - Dst: LUKS2_keyslot_wipe
      Src: /src/cryptsetup/lib/setup.c:4886,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4887
      start: 4862
    functionDepth: 3
    functionLinenumber: 4862
    functionLinenumberEnd: 4887
    functionName: crypt_keyslot_destroy
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 13
    functionsReached:
    - _
    - onlyLUKSunrestricted
    - isLUKS1
    - log_dbg
    - log_err
    - LUKS_del_key
    - LUKS2_keyslot_wipe
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: int crypt_keyslot_destroy(struct crypt_device *cd, int keyslot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:4891,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/setup.c:4894,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:4894,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/setup.c:4894,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:4898,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:4899,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:4899,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4904
      start: 4889
    functionDepth: 1
    functionLinenumber: 4889
    functionLinenumberEnd: 4904
    functionName: _check_header_data_overlap
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_is_identical
    - _
    - isLUKS
    - crypt_metadata_device
    - log_err
    - crypt_get_data_offset
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: int _check_header_data_overlap(struct crypt_device *cd, const char
      *name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dm_status_device
      Src: /src/cryptsetup/lib/setup.c:4914,1
    - Dst: dm_status_device
      Src: /src/cryptsetup/lib/setup.c:4923,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 4
    argNames:
    - cd
    - name
    - iname
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4932
      start: 4906
    functionDepth: 1
    functionLinenumber: 4906
    functionLinenumberEnd: 4932
    functionName: check_devices
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - dm_status_device
    linkageType: ''
    returnType: int
    signature: int check_devices(struct crypt_device *cd, const char *name, const
      char *iname, uint32_t *flags)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:4944,1
    - Dst: INTEGRITY_activate_dmd_device
      Src: /src/cryptsetup/lib/setup.c:4953,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/setup.c:4957,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/setup.c:4962,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/setup.c:4966,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/setup.c:4969,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/setup.c:4971,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 7
    argNames:
    - cd
    - type
    - name
    - iname
    - ipath
    - dmd
    - dmdi
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - struct crypt_dm_active_device*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4973
      start: 4934
    functionDepth: 1
    functionLinenumber: 4934
    functionLinenumberEnd: 4973
    functionName: _create_device_with_integrity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - device_free
    - dm_create_device
    - dm_remove_device
    - INTEGRITY_activate_dmd_device
    - device_block_adjust
    - single_segment
    - device_alloc
    linkageType: ''
    returnType: int
    signature: "int _create_device_with_integrity(struct crypt_device *cd,\n\tconst
      char *type, const char *name, const char *iname,\n\tconst char *ipath, struct
      crypt_dm_active_device *dmd,\n\tstruct crypt_dm_active_device *dmdi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: keyring_check
      Src: /src/cryptsetup/lib/setup.c:4980,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4985
      start: 4975
    functionDepth: 1
    functionLinenumber: 4975
    functionLinenumberEnd: 4985
    functionName: kernel_keyring_support
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - keyring_check
    linkageType: ''
    returnType: int
    signature: int kernel_keyring_support(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kernel_version
      Src: /src/cryptsetup/lib/setup.c:4991,1
    - Dst: compact_version
      Src: /src/cryptsetup/lib/setup.c:4993,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4994
      start: 4987
    functionDepth: 2
    functionLinenumber: 4987
    functionLinenumberEnd: 4994
    functionName: dmcrypt_keyring_bug
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - compact_version
    - kernel_version
    linkageType: ''
    returnType: int
    signature: int dmcrypt_keyring_bug(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:5004,1
    - Dst: check_devices
      Src: /src/cryptsetup/lib/setup.c:5012,1
    - Dst: _reload_device
      Src: /src/cryptsetup/lib/setup.c:5020,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/setup.c:5026,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/setup.c:5030,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/setup.c:5033,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/setup.c:5039,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/setup.c:5044,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 36
    argCount: 4
    argNames:
    - cd
    - name
    - type
    - dmd
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5049
      start: 4996
    functionDepth: 5
    functionLinenumber: 4996
    functionLinenumberEnd: 5049
    functionName: create_or_reload_device
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - dm_create_device
    - device_block_adjust
    - _reload_device
    - single_segment
    - check_devices
    linkageType: ''
    returnType: int
    signature: "int create_or_reload_device(struct crypt_device *cd, const char *name,\n\t\t
      \    const char *type, struct crypt_dm_active_device *dmd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dm_get_iname
      Src: /src/cryptsetup/lib/setup.c:5061,1
    - Dst: dm_get_iname
      Src: /src/cryptsetup/lib/setup.c:5065,1
    - Dst: check_devices
      Src: /src/cryptsetup/lib/setup.c:5070,1
    - Dst: _reload_device_with_integrity
      Src: /src/cryptsetup/lib/setup.c:5075,1
    - Dst: _create_device_with_integrity
      Src: /src/cryptsetup/lib/setup.c:5077,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:5079,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:5080,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 5
    argNames:
    - cd
    - name
    - type
    - dmd
    - dmdi
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - struct crypt_dm_active_device*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5083
      start: 5051
    functionDepth: 5
    functionLinenumber: 5051
    functionLinenumberEnd: 5083
    functionName: create_or_reload_device_with_integrity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _create_device_with_integrity
    - free
    - dm_get_iname
    - _reload_device_with_integrity
    - check_devices
    linkageType: ''
    returnType: int
    signature: "int create_or_reload_device_with_integrity(struct crypt_device *cd,
      const char *name,\n\t\t     const char *type, struct crypt_dm_active_device
      *dmd,\n\t\t     struct crypt_dm_active_device *dmdi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_volume_key_load_in_keyring_by_digest
      Src: /src/cryptsetup/lib/setup.c:5091,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5091,1
    - Dst: crypt_volume_key_next
      Src: /src/cryptsetup/lib/setup.c:5094,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - cd
    - vks
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5098
      start: 5085
    functionDepth: 1
    functionLinenumber: 5085
    functionLinenumberEnd: 5098
    functionName: load_all_keys
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - LUKS2_volume_key_load_in_keyring_by_digest
    - crypt_volume_key_next
    - crypt_volume_key_get_id
    linkageType: ''
    returnType: int
    signature: int load_all_keys(struct crypt_device *cd, struct volume_key *vks)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5114,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5115,1
    - Dst: LUKS2_reencrypt_lock
      Src: /src/cryptsetup/lib/setup.c:5117,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5120,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5120,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5122,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5122,1
    - Dst: crypt_load
      Src: /src/cryptsetup/lib/setup.c:5126,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/setup.c:5129,1
    - Dst: LUKS2_reencrypt_digest_verify
      Src: /src/cryptsetup/lib/setup.c:5137,1
    - Dst: LUKS2_reencrypt_locked_recovery_by_vks
      Src: /src/cryptsetup/lib/setup.c:5142,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5144,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5144,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/setup.c:5148,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/setup.c:5154,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/setup.c:5154,1
    - Dst: LUKS2_digest_verify_by_segment
      Src: /src/cryptsetup/lib/setup.c:5160,1
    - Dst: LUKS2_activate
      Src: /src/cryptsetup/lib/setup.c:5162,1
    - Dst: LUKS2_get_data_size
      Src: /src/cryptsetup/lib/setup.c:5170,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:5173,1
    - Dst: LUKS2_reencrypt_check_device_size
      Src: /src/cryptsetup/lib/setup.c:5175,1
    - Dst: LUKS2_activate_multi
      Src: /src/cryptsetup/lib/setup.c:5180,1
    - Dst: LUKS2_reencrypt_unlock
      Src: /src/cryptsetup/lib/setup.c:5182,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 65
    argCount: 5
    argNames:
    - cd
    - hdr
    - name
    - vks
    - flags
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char*
    - struct volume_key*
    - uint32_t
    assertStmts:
    - condition: (vks)
      pos:
        line_end: 5114
        line_start: 5114
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (hdr)
      pos:
        line_end: 5113
        line_start: 5113
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 5185
      start: 5101
    functionDepth: 6
    functionLinenumber: 5101
    functionLinenumberEnd: 5185
    functionName: _activate_reencrypt_device_by_vk
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - LUKS2_digest_by_segment
    - crypt_load
    - _
    - LUKS2_activate_multi
    - LUKS2_reencrypt_locked_recovery_by_vks
    - LUKS2_get_data_size
    - LUKS2_reencrypt_unlock
    - assert
    - log_err
    - crypt_volume_key_by_id
    - log_dbg
    - LUKS2_reencrypt_check_device_size
    - LUKS2_reencrypt_lock
    - LUKS2_reencrypt_status
    - LUKS2_reencrypt_digest_verify
    - LUKS2_digest_verify_by_segment
    - LUKS2_activate
    linkageType: ''
    returnType: int
    signature: "int _activate_reencrypt_device_by_vk(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tconst char *name,\n\tstruct volume_key *vks,\n\tuint32_t
      flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/setup.c:5198,1
    - Dst: _activate_reencrypt_device_by_vk
      Src: /src/cryptsetup/lib/setup.c:5204,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5207,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5207,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/setup.c:5207,1
    - Dst: LUKS2_activate
      Src: /src/cryptsetup/lib/setup.c:5208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - cd
    - name
    - vk
    - external_key
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - struct volume_key*
    - uint32_t
    assertStmts:
    - condition: (!vk || crypt_volume_key_get_id(vk) == LUKS2_digest_by_segment(&cd->u.luks2.hdr,
        CRYPT_DEFAULT_SEGMENT))
      pos:
        line_end: 5206
        line_start: 5206
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 5212
      start: 5190
    functionDepth: 7
    functionLinenumber: 5190
    functionLinenumberEnd: 5212
    functionName: _activate_luks2_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - LUKS2_digest_by_segment
    - _activate_reencrypt_device_by_vk
    - assert
    - crypt_volume_key_get_id
    - LUKS2_reencrypt_status
    - LUKS2_activate
    linkageType: ''
    returnType: int
    signature: "int _activate_luks2_by_volume_key(struct crypt_device *cd,\n\tconst
      char *name,\n\tstruct volume_key *vk,\n\tstruct volume_key *external_key,\n\tuint32_t
      flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/setup.c:5222,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5227,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5227,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5230,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5230,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/setup.c:5230,1
    - Dst: LUKS2_activate
      Src: /src/cryptsetup/lib/setup.c:5231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - cd
    - name
    - vk
    - external_key
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - struct volume_key*
    - uint32_t
    assertStmts:
    - condition: (crypt_volume_key_get_id(vk) == LUKS2_digest_by_segment(&cd->u.luks2.hdr,
        CRYPT_DEFAULT_SEGMENT))
      pos:
        line_end: 5229
        line_start: 5229
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 5235
      start: 5214
    functionDepth: 1
    functionLinenumber: 5214
    functionLinenumberEnd: 5235
    functionName: _activate_luks2_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - LUKS2_digest_by_segment
    - _
    - assert
    - log_err
    - crypt_volume_key_get_id
    - LUKS2_reencrypt_status
    - LUKS2_activate
    linkageType: ''
    returnType: int
    signature: "int _activate_luks2_by_volume_key(struct crypt_device *cd,\n\tconst
      char *name,\n\tstruct volume_key *vk,\n\tstruct volume_key *external_key,\n\tuint32_t
      flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/setup.c:5249,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/setup.c:5252,1
    - Dst: LOOPAES_parse_keyfile
      Src: /src/cryptsetup/lib/setup.c:5254,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/setup.c:5256,1
    - Dst: LOOPAES_activate
      Src: /src/cryptsetup/lib/setup.c:5259,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:5262,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - cd
    - name
    - buffer
    - buffer_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5265
      start: 5238
    functionDepth: 2
    functionLinenumber: 5238
    functionLinenumberEnd: 5265
    functionName: _activate_loopaes
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_safe_memcpy
    - crypt_free_volume_key
    - LOOPAES_activate
    - crypt_safe_free
    - LOOPAES_parse_keyfile
    linkageType: ''
    returnType: int
    signature: "int _activate_loopaes(struct crypt_device *cd,\n\tconst char *name,\n\tconst
      char *buffer,\n\tsize_t buffer_size,\n\tuint32_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dm_status_device
      Src: /src/cryptsetup/lib/setup.c:5274,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5280,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5280,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5287,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5287,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - cd
    - name
    - reload
    argTypes:
    - struct crypt_device*
    - char*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5289
      start: 5267
    functionDepth: 1
    functionLinenumber: 5267
    functionLinenumberEnd: 5289
    functionName: _activate_check_status
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - log_err
    - _
    - dm_status_device
    linkageType: ''
    returnType: int
    signature: int _activate_check_status(struct crypt_device *cd, const char *name,
      unsigned reload)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5295,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:5295,1
    - Dst: LUKS2_reencrypt_digest_verify
      Src: /src/cryptsetup/lib/setup.c:5297,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5299,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - cd
    - vks
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    assertStmts:
    - condition: (cd && (isLUKS2(cd->type)))
      pos:
        line_end: 5294
        line_start: 5294
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 5302
      start: 5291
    functionDepth: 1
    functionLinenumber: 5291
    functionLinenumberEnd: 5302
    functionName: _verify_reencrypt_keys
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - isLUKS2
    - assert
    - log_err
    - LUKS2_reencrypt_digest_verify
    linkageType: ''
    returnType: int
    signature: int _verify_reencrypt_keys(struct crypt_device *cd, struct volume_key
      *vks)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5310,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:5312,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:5313,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5316,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5316,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:5317,1
    - Dst: LUKS_verify_volume_key
      Src: /src/cryptsetup/lib/setup.c:5321,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:5322,1
    - Dst: LUKS2_digest_verify_by_any_matching
      Src: /src/cryptsetup/lib/setup.c:5327,1
    - Dst: LUKS2_digest_verify_by_segment
      Src: /src/cryptsetup/lib/setup.c:5329,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:5330,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:5332,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:5334,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:5336,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:5338,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:5339,1
    - Dst: FVAULT2_volume_key_size
      Src: /src/cryptsetup/lib/setup.c:5339,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5342,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5342,1
    - Dst: crypt_volume_key_set_id
      Src: /src/cryptsetup/lib/setup.c:5345,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 3
    argNames:
    - cd
    - unbound_key
    - vk
    argTypes:
    - struct crypt_device*
    - bool
    - struct volume_key*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 5309
        line_start: 5309
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 5348
      start: 5304
    functionDepth: 1
    functionLinenumber: 5304
    functionLinenumberEnd: 5348
    functionName: _verify_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - _
    - crypt_volume_key_set_id
    - LUKS_verify_volume_key
    - isBITLK
    - isFVAULT2
    - isLUKS1
    - isLUKS2
    - assert
    - log_err
    - isPLAIN
    - LUKS2_digest_verify_by_any_matching
    - isINTEGRITY
    - isVERITY
    - FVAULT2_volume_key_size
    - isTCRYPT
    - LUKS2_digest_verify_by_segment
    linkageType: ''
    returnType: int
    signature: "int _verify_key(struct crypt_device *cd,\n\tbool unbound_key,\n\tstruct
      volume_key *vk)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5359,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5360,1
    - Dst: _check_header_data_overlap
      Src: /src/cryptsetup/lib/setup.c:5362,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:5367,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5368,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5369,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5369,1
    - Dst: PLAIN_activate
      Src: /src/cryptsetup/lib/setup.c:5371,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:5372,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5373,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5374,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5374,1
    - Dst: LUKS1_activate
      Src: /src/cryptsetup/lib/setup.c:5376,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:5377,1
    - Dst: _activate_luks2_by_volume_key
      Src: /src/cryptsetup/lib/setup.c:5378,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:5379,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5380,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5380,1
    - Dst: VERITY_activate
      Src: /src/cryptsetup/lib/setup.c:5381,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:5383,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5384,1
    - Dst: TCRYPT_activate
      Src: /src/cryptsetup/lib/setup.c:5385,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:5387,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5388,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5389,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5389,1
    - Dst: INTEGRITY_activate
      Src: /src/cryptsetup/lib/setup.c:5390,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:5394,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5395,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5396,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5396,1
    - Dst: BITLK_activate_by_volume_key
      Src: /src/cryptsetup/lib/setup.c:5397,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:5398,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5399,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:5400,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5400,1
    - Dst: FVAULT2_activate_by_volume_key
      Src: /src/cryptsetup/lib/setup.c:5401,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5403,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5403,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 5
    argNames:
    - cd
    - name
    - vk
    - external_key
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - struct volume_key*
    - uint32_t
    assertStmts:
    - condition: (!external_key)
      pos:
        line_end: 5372
        line_start: 5372
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (crypt_volume_key_get_id(vk) == KEY_VERIFIED)
      pos:
        line_end: 5373
        line_start: 5373
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (!external_key)
      pos:
        line_end: 5383
        line_start: 5383
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (!vk || crypt_volume_key_get_id(vk) == KEY_VERIFIED)
      pos:
        line_end: 5388
        line_start: 5388
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (name)
      pos:
        line_end: 5359
        line_start: 5359
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (!external_key)
      pos:
        line_end: 5367
        line_start: 5367
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (crypt_volume_key_get_id(vk) == KEY_VERIFIED)
      pos:
        line_end: 5368
        line_start: 5368
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (!external_key)
      pos:
        line_end: 5394
        line_start: 5394
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (crypt_volume_key_get_id(vk) == KEY_VERIFIED)
      pos:
        line_end: 5395
        line_start: 5395
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (cd)
      pos:
        line_end: 5358
        line_start: 5358
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (crypt_volume_key_get_id(vk) == KEY_VERIFIED)
      pos:
        line_end: 5379
        line_start: 5379
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (!external_key)
      pos:
        line_end: 5387
        line_start: 5387
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (!external_key)
      pos:
        line_end: 5398
        line_start: 5398
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (crypt_volume_key_get_id(vk) == KEY_VERIFIED)
      pos:
        line_end: 5399
        line_start: 5399
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 5408
      start: 5351
    functionDepth: 8
    functionLinenumber: 5351
    functionLinenumberEnd: 5408
    functionName: _activate_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 33
    functionsReached:
    - _check_header_data_overlap
    - isFVAULT2
    - VERITY_activate
    - PLAIN_activate
    - INTEGRITY_activate
    - isLUKS2
    - LUKS1_activate
    - isBITLK
    - _activate_luks2_by_volume_key
    - FVAULT2_activate_by_volume_key
    - isPLAIN
    - isINTEGRITY
    - BITLK_activate_by_volume_key
    - log_err
    - isTCRYPT
    - _
    - isLUKS1
    - assert
    - crypt_volume_key_get_id
    - isVERITY
    - TCRYPT_activate
    linkageType: ''
    returnType: int
    signature: "int _activate_by_volume_key(struct crypt_device *cd,\n\tconst char
      *name,\n\tstruct volume_key *vk,\n\tstruct volume_key *external_key,\n\tuint32_t
      flags)"
  - BBCount: 60
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:5430,1
    - Dst: keyslot_context_type_string
      Src: /src/cryptsetup/lib/setup.c:5431,1
    - Dst: crypt_use_keyring_for_vk
      Src: /src/cryptsetup/lib/setup.c:5434,1
    - Dst: kernel_keyring_support
      Src: /src/cryptsetup/lib/setup.c:5440,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5441,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5441,1
    - Dst: kernel_keyring_support
      Src: /src/cryptsetup/lib/setup.c:5444,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5445,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5445,1
    - Dst: _check_header_data_overlap
      Src: /src/cryptsetup/lib/setup.c:5448,1
    - Dst: _activate_check_status
      Src: /src/cryptsetup/lib/setup.c:5451,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:5456,1
    - Dst: struct crypt_keyslot_context*::get_passphrase
      Src: /src/cryptsetup/lib/setup.c:5457,1
    - Dst: _activate_loopaes
      Src: /src/cryptsetup/lib/setup.c:5461,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:5469,1
    - Dst: struct crypt_keyslot_context*::get_luks1_volume_key
      Src: /src/cryptsetup/lib/setup.c:5471,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:5472,1
    - Dst: struct crypt_keyslot_context*::get_luks2_key
      Src: /src/cryptsetup/lib/setup.c:5475,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/setup.c:5477,1
    - Dst: struct crypt_keyslot_context*::get_luks2_volume_key
      Src: /src/cryptsetup/lib/setup.c:5480,1
    - Dst: LUKS2_keyslot_context_open_all_segments
      Src: /src/cryptsetup/lib/setup.c:5485,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:5491,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:5493,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:5495,1
    - Dst: crypt_volume_key_set_description_by_name
      Src: /src/cryptsetup/lib/setup.c:5498,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5500,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5500,1
    - Dst: struct crypt_keyslot_context*::get_passphrase
      Src: /src/cryptsetup/lib/setup.c:5502,1
    - Dst: process_key
      Src: /src/cryptsetup/lib/setup.c:5505,1
    - Dst: struct crypt_keyslot_context*::get_plain_volume_key
      Src: /src/cryptsetup/lib/setup.c:5509,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:5510,1
    - Dst: struct crypt_keyslot_context*::get_bitlk_volume_key
      Src: /src/cryptsetup/lib/setup.c:5512,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:5513,1
    - Dst: struct crypt_keyslot_context*::get_fvault2_volume_key
      Src: /src/cryptsetup/lib/setup.c:5515,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:5516,1
    - Dst: struct crypt_keyslot_context*::get_verity_volume_key
      Src: /src/cryptsetup/lib/setup.c:5518,1
    - Dst: VERITY_verify_params
      Src: /src/cryptsetup/lib/setup.c:5520,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:5526,1
    - Dst: struct crypt_keyslot_context*::get_integrity_volume_key
      Src: /src/cryptsetup/lib/setup.c:5528,1
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:5534,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:5535,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:5535,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:5536,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:5539,1
    - Dst: _verify_reencrypt_keys
      Src: /src/cryptsetup/lib/setup.c:5546,1
    - Dst: _verify_key
      Src: /src/cryptsetup/lib/setup.c:5548,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:5553,1
    - Dst: LUKS2_segment_is_hw_opal
      Src: /src/cryptsetup/lib/setup.c:5555,1
    - Dst: LUKS2_split_crypt_and_opal_keys
      Src: /src/cryptsetup/lib/setup.c:5556,1
    - Dst: crypt_volume_key_set_id
      Src: /src/cryptsetup/lib/setup.c:5563,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:5563,1
    - Dst: crypt_use_keyring_for_vk
      Src: /src/cryptsetup/lib/setup.c:5572,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/setup.c:5576,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/lib/setup.c:5576,1
    - Dst: load_all_keys
      Src: /src/cryptsetup/lib/setup.c:5582,1
    - Dst: crypt_volume_key_load_in_custom_keyring
      Src: /src/cryptsetup/lib/setup.c:5590,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5592,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5592,1
    - Dst: _activate_by_volume_key
      Src: /src/cryptsetup/lib/setup.c:5603,1
    - Dst: crypt_drop_uploaded_keyring_key
      Src: /src/cryptsetup/lib/setup.c:5609,1
    - Dst: crypt_drop_uploaded_keyring_key
      Src: /src/cryptsetup/lib/setup.c:5610,1
    - Dst: crypt_unlink_key_from_custom_keyring
      Src: /src/cryptsetup/lib/setup.c:5612,1
    - Dst: crypt_unlink_key_from_custom_keyring
      Src: /src/cryptsetup/lib/setup.c:5614,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:5617,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:5618,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:5619,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:5620,1
    CyclomaticComplexity: 91
    EdgeCount: 91
    ICount: 175
    argCount: 7
    argNames:
    - cd
    - name
    - keyslot
    - kc
    - additional_keyslot
    - additional_kc
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - struct crypt_keyslot_context*
    - int
    - struct crypt_keyslot_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5622
      start: 5410
    functionDepth: 9
    functionLinenumber: 5410
    functionLinenumberEnd: 5622
    functionName: crypt_activate_by_keyslot_context
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 15
    functionsReached:
    - _check_header_data_overlap
    - isFVAULT2
    - crypt_drop_uploaded_keyring_key
    - load_all_keys
    - _activate_check_status
    - _verify_reencrypt_keys
    - process_key
    - struct crypt_keyslot_context*::get_luks1_volume_key
    - LUKS2_keyslot_context_open_all_segments
    - VERITY_verify_params
    - struct crypt_keyslot_context*::get_verity_volume_key
    - isLUKS
    - kernel_keyring_support
    - _activate_by_volume_key
    - isLUKS2
    - log_dbg
    - struct crypt_keyslot_context*::get_fvault2_volume_key
    - LUKS2_split_crypt_and_opal_keys
    - LUKS2_reencrypt_status
    - crypt_volume_key_set_description_by_name
    - crypt_volume_key_length
    - struct crypt_keyslot_context*::get_luks2_key
    - crypt_volume_key_set_id
    - isBITLK
    - crypt_free_volume_key
    - struct crypt_keyslot_context*::get_luks2_volume_key
    - crypt_volume_key_get_key
    - struct crypt_keyslot_context*::get_passphrase
    - log_err
    - isPLAIN
    - isINTEGRITY
    - isLOOPAES
    - crypt_use_keyring_for_vk
    - crypt_is_cipher_null
    - isTCRYPT
    - LUKS2_segment_is_hw_opal
    - _verify_key
    - _
    - crypt_get_cipher
    - isLUKS1
    - crypt_volume_key_load_in_custom_keyring
    - struct crypt_keyslot_context*::get_integrity_volume_key
    - crypt_volume_key_get_id
    - struct crypt_keyslot_context*::get_plain_volume_key
    - keyslot_context_type_string
    - isVERITY
    - _activate_loopaes
    - crypt_unlink_key_from_custom_keyring
    - crypt_alloc_volume_key
    - struct crypt_keyslot_context*::get_bitlk_volume_key
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_keyslot_context(struct crypt_device *cd,\n\tconst
      char *name,\n\tint keyslot,\n\tstruct crypt_keyslot_context *kc,\n\tint additional_keyslot,\n\tstruct
      crypt_keyslot_context *additional_kc,\n\tuint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/setup.c:5634,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:5635,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:5636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - cd
    - name
    - keyslot
    - passphrase
    - passphrase_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5639
      start: 5624
    functionDepth: 10
    functionLinenumber: 5624
    functionLinenumberEnd: 5639
    functionName: crypt_activate_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 31
    functionsReached:
    - crypt_keyslot_context_init_by_passphrase_internal
    - crypt_activate_by_keyslot_context
    - crypt_keyslot_context_destroy_internal
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_passphrase(struct crypt_device *cd,\n\tconst
      char *name,\n\tint keyslot,\n\tconst char *passphrase,\n\tsize_t passphrase_size,\n\tuint32_t
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_keyfile_internal
      Src: /src/cryptsetup/lib/setup.c:5652,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:5653,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:5654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - cd
    - name
    - keyslot
    - keyfile
    - keyfile_size
    - keyfile_offset
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - char*
    - size_t
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5657
      start: 5641
    functionDepth: 10
    functionLinenumber: 5641
    functionLinenumberEnd: 5657
    functionName: crypt_activate_by_keyfile_device_offset
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - crypt_keyslot_context_init_by_keyfile_internal
    - crypt_keyslot_context_destroy_internal
    - crypt_activate_by_keyslot_context
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_keyfile_device_offset(struct crypt_device *cd,\n\tconst
      char *name,\n\tint keyslot,\n\tconst char *keyfile,\n\tsize_t keyfile_size,\n\tuint64_t
      keyfile_offset,\n\tuint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_activate_by_keyfile_device_offset
      Src: /src/cryptsetup/lib/setup.c:5666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - cd
    - name
    - keyslot
    - keyfile
    - keyfile_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5668
      start: 5659
    functionDepth: 11
    functionLinenumber: 5659
    functionLinenumberEnd: 5668
    functionName: crypt_activate_by_keyfile
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 5
    functionsReached:
    - crypt_activate_by_keyfile_device_offset
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_keyfile(struct crypt_device *cd,\n\tconst char
      *name,\n\tint keyslot,\n\tconst char *keyfile,\n\tsize_t keyfile_size,\n\tuint32_t
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_activate_by_keyfile_device_offset
      Src: /src/cryptsetup/lib/setup.c:5678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - cd
    - name
    - keyslot
    - keyfile
    - keyfile_size
    - keyfile_offset
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - char*
    - size_t
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5680
      start: 5670
    functionDepth: 11
    functionLinenumber: 5670
    functionLinenumberEnd: 5680
    functionName: crypt_activate_by_keyfile_offset
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - crypt_activate_by_keyfile_device_offset
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_keyfile_offset(struct crypt_device *cd,\n\tconst
      char *name,\n\tint keyslot,\n\tconst char *keyfile,\n\tsize_t keyfile_size,\n\tsize_t
      keyfile_offset,\n\tuint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_key_internal
      Src: /src/cryptsetup/lib/setup.c:5691,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:5692,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:5693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - cd
    - name
    - volume_key
    - volume_key_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5696
      start: 5682
    functionDepth: 10
    functionLinenumber: 5682
    functionLinenumberEnd: 5696
    functionName: crypt_activate_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 32
    functionsReached:
    - crypt_activate_by_keyslot_context
    - crypt_keyslot_context_destroy_internal
    - crypt_keyslot_context_init_by_key_internal
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_volume_key(struct crypt_device *cd,\n\tconst
      char *name,\n\tconst char *volume_key,\n\tsize_t volume_key_size,\n\tuint32_t
      flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:5709,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5713,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5713,1
    - Dst: crypt_keyslot_context_init_by_signed_key_internal
      Src: /src/cryptsetup/lib/setup.c:5718,1
    - Dst: crypt_keyslot_context_init_by_key_internal
      Src: /src/cryptsetup/lib/setup.c:5721,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:5722,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:5723,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 7
    argNames:
    - cd
    - name
    - volume_key
    - volume_key_size
    - signature
    - signature_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5726
      start: 5698
    functionDepth: 10
    functionLinenumber: 5698
    functionLinenumberEnd: 5726
    functionName: crypt_activate_by_signed_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - _
    - crypt_keyslot_context_destroy_internal
    - crypt_keyslot_context_init_by_key_internal
    - log_err
    - crypt_keyslot_context_init_by_signed_key_internal
    - isVERITY
    - crypt_activate_by_keyslot_context
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_signed_key(struct crypt_device *cd,\n\tconst
      char *name,\n\tconst char *volume_key,\n\tsize_t volume_key_size,\n\tconst char
      *signature,\n\tsize_t signature_size,\n\tuint32_t flags)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:5742,1
    - Dst: crypt_init_by_name
      Src: /src/cryptsetup/lib/setup.c:5745,1
    - Dst: crypt_get_hw_encryption_type
      Src: /src/cryptsetup/lib/setup.c:5752,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5754,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5754,1
    - Dst: crypt_status
      Src: /src/cryptsetup/lib/setup.c:5763,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:5766,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5769,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5769,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:5778,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5779,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5779,1
    - Dst: dm_cancel_deferred_removal
      Src: /src/cryptsetup/lib/setup.c:5785,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5787,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5787,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/setup.c:5791,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/setup.c:5793,1
    - Dst: LUKS2_deactivate
      Src: /src/cryptsetup/lib/setup.c:5794,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:5795,1
    - Dst: TCRYPT_deactivate
      Src: /src/cryptsetup/lib/setup.c:5796,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/setup.c:5798,1
    - Dst: crypt_status
      Src: /src/cryptsetup/lib/setup.c:5799,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5800,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5800,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5805,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5805,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5809,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5809,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:5813,1
    - Dst: crypt_free
      Src: /src/cryptsetup/lib/setup.c:5815,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 66
    argCount: 3
    argNames:
    - cd
    - name
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5818
      start: 5728
    functionDepth: 8
    functionLinenumber: 5728
    functionLinenumberEnd: 5818
    functionName: crypt_deactivate_by_name
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - crypt_init_by_name
    - _
    - crypt_get_hdr
    - dm_cancel_deferred_removal
    - crypt_get_hw_encryption_type
    - dm_targets_free
    - dm_remove_device
    - strncmp
    - crypt_free
    - log_dbg
    - log_err
    - dm_query_device
    - crypt_status
    - LUKS2_deactivate
    - isTCRYPT
    - TCRYPT_deactivate
    linkageType: ''
    returnType: int
    signature: int crypt_deactivate_by_name(struct crypt_device *cd, const char *name,
      uint32_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_deactivate_by_name
      Src: /src/cryptsetup/lib/setup.c:5822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5823
      start: 5820
    functionDepth: 9
    functionLinenumber: 5820
    functionLinenumberEnd: 5823
    functionName: crypt_deactivate
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 37
    functionsReached:
    - crypt_deactivate_by_name
    linkageType: ''
    returnType: int
    signature: int crypt_deactivate(struct crypt_device *cd, const char *name)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:5837,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:5846,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:5846,1
    - Dst: dm_get_active_iname
      Src: /src/cryptsetup/lib/setup.c:5847,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:5848,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:5850,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:5855,1
    - Dst: TCRYPT_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:5856,1
    - Dst: TCRYPT_get_iv_offset
      Src: /src/cryptsetup/lib/setup.c:5857,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:5881,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:5882,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 42
    argCount: 3
    argNames:
    - cd
    - name
    - cad
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5885
      start: 5825
    functionDepth: 1
    functionLinenumber: 5825
    functionLinenumberEnd: 5885
    functionName: crypt_get_active_device
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 20
    functionsReached:
    - TCRYPT_get_iv_offset
    - free
    - dm_targets_free
    - isLUKS2
    - crypt_get_integrity_tag_size
    - dm_query_device
    - TCRYPT_get_data_offset
    - isTCRYPT
    - dm_get_active_iname
    linkageType: ''
    returnType: int
    signature: "int crypt_get_active_device(struct crypt_device *cd, const char *name,\n\t\t\t
      \   struct crypt_active_device *cad)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/setup.c:5896,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/setup.c:5899,1
    - Dst: dm_status_integrity_failures
      Src: /src/cryptsetup/lib/setup.c:5900,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/setup.c:5902,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5905
      start: 5887
    functionDepth: 1
    functionLinenumber: 5887
    functionLinenumberEnd: 5905
    functionName: crypt_get_active_integrity_failures
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - dm_targets_free
    - dm_query_device
    - single_segment
    - dm_status_integrity_failures
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_get_active_integrity_failures(struct crypt_device *cd,
      const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:5921,1
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/setup.c:5923,1
    - Dst: crypt_volume_key_get_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:5925,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:5927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - cd
    - keyslot
    - volume_key
    - volume_key_size
    - passphrase
    - passphrase_size
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5930
      start: 5910
    functionDepth: 2
    functionLinenumber: 5910
    functionLinenumberEnd: 5930
    functionName: crypt_volume_key_get
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 20
    functionsReached:
    - crypt_keyslot_context_init_by_passphrase_internal
    - crypt_volume_key_get_by_keyslot_context
    - crypt_keyslot_context_destroy_internal
    linkageType: ''
    returnType: int
    signature: "int crypt_volume_key_get(struct crypt_device *cd,\n\tint keyslot,\n\tchar
      *volume_key,\n\tsize_t *volume_key_size,\n\tconst char *passphrase,\n\tsize_t
      passphrase_size)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:5944,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:5944,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:5944,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:5944,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:5947,1
    - Dst: LUKS2_get_keyslot_stored_key_size
      Src: /src/cryptsetup/lib/setup.c:5948,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/lib/setup.c:5950,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5956,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5956,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:5965,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5967,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5967,1
    - Dst: struct crypt_keyslot_context*::get_luks2_key
      Src: /src/cryptsetup/lib/setup.c:5971,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:5974,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5976,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5976,1
    - Dst: struct crypt_keyslot_context*::get_luks1_volume_key
      Src: /src/cryptsetup/lib/setup.c:5980,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:5981,1
    - Dst: struct crypt_keyslot_context*::get_passphrase
      Src: /src/cryptsetup/lib/setup.c:5983,1
    - Dst: process_key
      Src: /src/cryptsetup/lib/setup.c:5986,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5990,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5990,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:5991,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/setup.c:5994,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:5998,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:5998,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:5999,1
    - Dst: TCRYPT_get_volume_key
      Src: /src/cryptsetup/lib/setup.c:6000,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:6001,1
    - Dst: struct crypt_keyslot_context*::get_bitlk_volume_key
      Src: /src/cryptsetup/lib/setup.c:6003,1
    - Dst: BITLK_get_volume_key
      Src: /src/cryptsetup/lib/setup.c:6005,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:6007,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:6007,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:6008,1
    - Dst: struct crypt_keyslot_context*::get_fvault2_volume_key
      Src: /src/cryptsetup/lib/setup.c:6010,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:6012,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:6012,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:6014,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:6014,1
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:6016,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:6017,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:6017,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:6018,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/setup.c:6023,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:6023,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:6023,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:6024,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:6027,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 75
    argCount: 5
    argNames:
    - cd
    - keyslot
    - volume_key
    - volume_key_size
    - kc
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t*
    - struct crypt_keyslot_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6029
      start: 5932
    functionDepth: 4
    functionLinenumber: 5932
    functionLinenumberEnd: 6029
    functionName: crypt_volume_key_get_by_keyslot_context
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 9
    functionsReached:
    - LUKS2_get_keyslot_stored_key_size
    - isFVAULT2
    - TCRYPT_get_volume_key
    - process_key
    - struct crypt_keyslot_context*::get_luks1_volume_key
    - isLUKS
    - BITLK_get_volume_key
    - isLUKS2
    - crypt_get_volume_key_size
    - struct crypt_keyslot_context*::get_fvault2_volume_key
    - crypt_volume_key_length
    - struct crypt_keyslot_context*::get_luks2_key
    - isBITLK
    - crypt_safe_memcpy
    - crypt_free_volume_key
    - crypt_volume_key_get_key
    - struct crypt_keyslot_context*::get_passphrase
    - log_err
    - isPLAIN
    - isTCRYPT
    - _
    - isLUKS1
    - isVERITY
    - crypt_alloc_volume_key
    - struct crypt_keyslot_context*::get_bitlk_volume_key
    linkageType: ''
    returnType: int
    signature: "int crypt_volume_key_get_by_keyslot_context(struct crypt_device *cd,\n\tint
      keyslot,\n\tchar *volume_key,\n\tsize_t *volume_key_size,\n\tstruct crypt_keyslot_context
      *kc)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKSunrestricted
      Src: /src/cryptsetup/lib/setup.c:6038,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:6041,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6045,1
    - Dst: LUKS_verify_volume_key
      Src: /src/cryptsetup/lib/setup.c:6046,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6047,1
    - Dst: LUKS2_digest_verify_by_segment
      Src: /src/cryptsetup/lib/setup.c:6048,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:6052,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - cd
    - volume_key
    - volume_key_size
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6055
      start: 6031
    functionDepth: 3
    functionLinenumber: 6031
    functionLinenumberEnd: 6055
    functionName: crypt_volume_key_verify
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 9
    functionsReached:
    - LUKS_verify_volume_key
    - crypt_free_volume_key
    - onlyLUKSunrestricted
    - isLUKS1
    - isLUKS2
    - LUKS2_digest_verify_by_segment
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int crypt_volume_key_verify(struct crypt_device *cd,\n\tconst char
      *volume_key,\n\tsize_t volume_key_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:6068,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - rng_type
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6071
      start: 6060
    functionDepth: 0
    functionLinenumber: 6060
    functionLinenumberEnd: 6071
    functionName: crypt_set_rng_type
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - log_dbg
    linkageType: ''
    returnType: void
    signature: void crypt_set_rng_type(struct crypt_device *cd, int rng_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6079
      start: 6073
    functionDepth: 0
    functionLinenumber: 6073
    functionLinenumberEnd: 6079
    functionName: crypt_get_rng_type
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_get_rng_type(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/setup.c:6083,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/setup.c:6084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - lock
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6087
      start: 6081
    functionDepth: 0
    functionLinenumber: 6081
    functionLinenumberEnd: 6087
    functionName: crypt_memory_lock
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - UNUSED
    linkageType: ''
    returnType: int
    signature: int crypt_memory_lock(struct crypt_device *cd, int lock)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - cd
    - flags
    argTypes:
    - struct crypt_device*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6093
      start: 6089
    functionDepth: 0
    functionLinenumber: 6089
    functionLinenumberEnd: 6093
    functionName: crypt_set_compatibility
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_set_compatibility(struct crypt_device *cd, uint32_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6101
      start: 6095
    functionDepth: 0
    functionLinenumber: 6095
    functionLinenumberEnd: 6101
    functionName: crypt_get_compatibility
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_get_compatibility(struct crypt_device *cd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dm_backend_init
      Src: /src/cryptsetup/lib/setup.c:6114,1
    - Dst: dm_status_device
      Src: /src/cryptsetup/lib/setup.c:6116,1
    - Dst: dm_backend_exit
      Src: /src/cryptsetup/lib/setup.c:6119,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6131
      start: 6106
    functionDepth: 1
    functionLinenumber: 6106
    functionLinenumberEnd: 6131
    functionName: crypt_status
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 43
    functionsReached:
    - dm_backend_exit
    - dm_status_device
    - dm_backend_init
    linkageType: ''
    returnType: crypt_status_info
    signature: crypt_status_info crypt_status(struct crypt_device *cd, const char
      *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6137,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:6137,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6138,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6139,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6140,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6141,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6142,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6143,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6144,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/lib/setup.c:6145,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6146,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6147,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/lib/setup.c:6148,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6149,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/lib/setup.c:6150,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6151,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6152,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6153,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6156,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6157,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6159,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/lib/setup.c:6160,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6162,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/lib/setup.c:6163,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6165,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6167,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6169,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/setup.c:6173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6176
      start: 6133
    functionDepth: 2
    functionLinenumber: 6133
    functionLinenumberEnd: 6176
    functionName: _luks_dump
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - mdata_device_path
    - crypt_log_hex
    - log_std
    linkageType: ''
    returnType: int
    signature: int _luks_dump(struct crypt_device *cd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6182,1
    - Dst: _luks_dump
      Src: /src/cryptsetup/lib/setup.c:6183,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6184,1
    - Dst: LUKS2_hdr_dump
      Src: /src/cryptsetup/lib/setup.c:6185,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:6186,1
    - Dst: VERITY_dump
      Src: /src/cryptsetup/lib/setup.c:6187,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:6190,1
    - Dst: TCRYPT_dump
      Src: /src/cryptsetup/lib/setup.c:6191,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:6192,1
    - Dst: INTEGRITY_dump
      Src: /src/cryptsetup/lib/setup.c:6193,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:6193,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:6194,1
    - Dst: BITLK_dump
      Src: /src/cryptsetup/lib/setup.c:6195,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:6195,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:6196,1
    - Dst: FVAULT2_dump
      Src: /src/cryptsetup/lib/setup.c:6197,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/setup.c:6197,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:6199,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:6199,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6201
      start: 6178
    functionDepth: 3
    functionLinenumber: 6178
    functionLinenumberEnd: 6201
    functionName: crypt_dump
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 11
    functionsReached:
    - FVAULT2_dump
    - TCRYPT_dump
    - _luks_dump
    - INTEGRITY_dump
    - _
    - isBITLK
    - isFVAULT2
    - isLUKS1
    - isLUKS2
    - BITLK_dump
    - log_err
    - isINTEGRITY
    - isVERITY
    - VERITY_dump
    - isTCRYPT
    - LUKS2_hdr_dump
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: int crypt_dump(struct crypt_device *cd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6207,1
    - Dst: LUKS2_hdr_dump_json
      Src: /src/cryptsetup/lib/setup.c:6208,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:6210,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:6210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - cd
    - json
    - flags
    argTypes:
    - struct crypt_device*
    - char**
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6212
      start: 6203
    functionDepth: 1
    functionLinenumber: 6203
    functionLinenumberEnd: 6212
    functionName: crypt_dump_json
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - log_err
    - LUKS2_hdr_dump_json
    - _
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_dump_json(struct crypt_device *cd, const char **json, uint32_t
      flags)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6219,1
    - Dst: LUKS2_get_cipher
      Src: /src/cryptsetup/lib/setup.c:6220,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6221,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:6223,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:6225,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:6227,1
    - Dst: _init_by_name_crypt_none
      Src: /src/cryptsetup/lib/setup.c:6229,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6233
      start: 6215
    functionDepth: 2
    functionLinenumber: 6215
    functionLinenumberEnd: 6233
    functionName: crypt_get_cipher_spec
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 4
    functionsReached:
    - isBITLK
    - isLUKS1
    - isLUKS2
    - LUKS2_get_cipher
    - isPLAIN
    - _init_by_name_crypt_none
    - isLOOPAES
    linkageType: ''
    returnType: char
    signature: char *crypt_get_cipher_spec(struct crypt_device *cd)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:6240,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6243,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6246,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/setup.c:6247,1
    - Dst: LUKS2_get_cipher
      Src: /src/cryptsetup/lib/setup.c:6247,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:6253,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:6256,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:6259,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:6262,1
    - Dst: _init_by_name_crypt_none
      Src: /src/cryptsetup/lib/setup.c:6265,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6269
      start: 6235
    functionDepth: 2
    functionLinenumber: 6235
    functionLinenumberEnd: 6269
    functionName: crypt_get_cipher
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 24
    functionsReached:
    - isBITLK
    - isFVAULT2
    - isLUKS1
    - isLUKS2
    - LUKS2_get_cipher
    - isPLAIN
    - _init_by_name_crypt_none
    - crypt_parse_name_and_mode
    - isLOOPAES
    - isTCRYPT
    linkageType: ''
    returnType: char
    signature: char *crypt_get_cipher(struct crypt_device *cd)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:6276,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6279,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6282,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/setup.c:6283,1
    - Dst: LUKS2_get_cipher
      Src: /src/cryptsetup/lib/setup.c:6283,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:6289,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:6292,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:6295,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:6298,1
    - Dst: _init_by_name_crypt_none
      Src: /src/cryptsetup/lib/setup.c:6301,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6305
      start: 6271
    functionDepth: 2
    functionLinenumber: 6271
    functionLinenumberEnd: 6305
    functionName: crypt_get_cipher_mode
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 19
    functionsReached:
    - isBITLK
    - isFVAULT2
    - isLUKS1
    - isLUKS2
    - LUKS2_get_cipher
    - isPLAIN
    - _init_by_name_crypt_none
    - crypt_parse_name_and_mode
    - isLOOPAES
    - isTCRYPT
    linkageType: ''
    returnType: char
    signature: char *crypt_get_cipher_mode(struct crypt_device *cd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:6313,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6316,1
    - Dst: LUKS2_get_integrity
      Src: /src/cryptsetup/lib/setup.c:6317,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6323
      start: 6308
    functionDepth: 1
    functionLinenumber: 6308
    functionLinenumberEnd: 6323
    functionName: crypt_get_integrity
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - isINTEGRITY
    - LUKS2_get_integrity
    - isLUKS2
    linkageType: ''
    returnType: char
    signature: char *crypt_get_integrity(struct crypt_device *cd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6330,1
    - Dst: INTEGRITY_key_size
      Src: /src/cryptsetup/lib/setup.c:6331,1
    - Dst: crypt_get_integrity
      Src: /src/cryptsetup/lib/setup.c:6331,1
    - Dst: LUKS2_get_integrity_key_size
      Src: /src/cryptsetup/lib/setup.c:6332,1
    - Dst: INTEGRITY_key_size
      Src: /src/cryptsetup/lib/setup.c:6334,1
    - Dst: crypt_get_integrity
      Src: /src/cryptsetup/lib/setup.c:6334,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:6338,1
    - Dst: INTEGRITY_key_size
      Src: /src/cryptsetup/lib/setup.c:6339,1
    - Dst: crypt_get_integrity
      Src: /src/cryptsetup/lib/setup.c:6339,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - dm_compat
    argTypes:
    - struct crypt_device*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6342
      start: 6326
    functionDepth: 2
    functionLinenumber: 6326
    functionLinenumberEnd: 6342
    functionName: crypt_get_integrity_key_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - isLUKS2
    - INTEGRITY_key_size
    - isINTEGRITY
    - crypt_get_integrity
    - LUKS2_get_integrity_key_size
    linkageType: ''
    returnType: int
    signature: int crypt_get_integrity_key_size(struct crypt_device *cd, bool dm_compat)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:6347,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6350,1
    - Dst: INTEGRITY_tag_size
      Src: /src/cryptsetup/lib/setup.c:6351,1
    - Dst: crypt_get_integrity
      Src: /src/cryptsetup/lib/setup.c:6351,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/lib/setup.c:6352,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/lib/setup.c:6353,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6355
      start: 6345
    functionDepth: 3
    functionLinenumber: 6345
    functionLinenumberEnd: 6355
    functionName: crypt_get_integrity_tag_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 6
    functionsReached:
    - crypt_get_cipher
    - crypt_get_cipher_mode
    - isLUKS2
    - isINTEGRITY
    - crypt_get_integrity
    - INTEGRITY_tag_size
    linkageType: ''
    returnType: int
    signature: int crypt_get_integrity_tag_size(struct crypt_device *cd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:6362,1
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:6365,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6368,1
    - Dst: LUKS2_get_sector_size
      Src: /src/cryptsetup/lib/setup.c:6369,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6375
      start: 6357
    functionDepth: 1
    functionLinenumber: 6357
    functionLinenumberEnd: 6375
    functionName: crypt_get_sector_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 8
    functionsReached:
    - LUKS2_get_sector_size
    - isPLAIN
    - isINTEGRITY
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_get_sector_size(struct crypt_device *cd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6382,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6385,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:6388,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:6391,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:6394,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6398
      start: 6377
    functionDepth: 1
    functionLinenumber: 6377
    functionLinenumberEnd: 6398
    functionName: crypt_get_uuid
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 19
    functionsReached:
    - isBITLK
    - isFVAULT2
    - isLUKS1
    - isLUKS2
    - isVERITY
    linkageType: ''
    returnType: char
    signature: char *crypt_get_uuid(struct crypt_device *cd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/setup.c:6407,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:6409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6412
      start: 6400
    functionDepth: 1
    functionLinenumber: 6400
    functionLinenumberEnd: 6412
    functionName: crypt_get_device_name
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 23
    functionsReached:
    - device_path
    - device_block_path
    linkageType: ''
    returnType: char
    signature: char *crypt_get_device_name(struct crypt_device *cd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/setup.c:6421,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:6423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6426
      start: 6414
    functionDepth: 1
    functionLinenumber: 6414
    functionLinenumberEnd: 6426
    functionName: crypt_get_metadata_device_name
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 8
    functionsReached:
    - device_path
    - device_block_path
    linkageType: ''
    returnType: char
    signature: char *crypt_get_metadata_device_name(struct crypt_device *cd)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:6435,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6438,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6441,1
    - Dst: LUKS2_get_volume_key_size
      Src: /src/cryptsetup/lib/setup.c:6442,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:6444,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:6448,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:6451,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:6454,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:6457,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:6460,1
    - Dst: _init_by_name_crypt_none
      Src: /src/cryptsetup/lib/setup.c:6463,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6467
      start: 6428
    functionDepth: 2
    functionLinenumber: 6428
    functionLinenumberEnd: 6467
    functionName: crypt_get_volume_key_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 27
    functionsReached:
    - crypt_volume_key_length
    - isBITLK
    - isFVAULT2
    - isLUKS1
    - isLUKS2
    - isPLAIN
    - _init_by_name_crypt_none
    - isVERITY
    - isLOOPAES
    - isTCRYPT
    - LUKS2_get_volume_key_size
    linkageType: ''
    returnType: int
    signature: int crypt_get_volume_key_size(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:6471,1
    - Dst: LUKS2_get_old_volume_key_size
      Src: /src/cryptsetup/lib/setup.c:6477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6480
      start: 6469
    functionDepth: 2
    functionLinenumber: 6469
    functionLinenumberEnd: 6480
    functionName: crypt_get_old_volume_key_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 4
    functionsReached:
    - LUKS2_get_old_volume_key_size
    - _onlyLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_get_old_volume_key_size(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6484,1
    - Dst: LUKS2_get_opal_key_size
      Src: /src/cryptsetup/lib/setup.c:6487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6488
      start: 6482
    functionDepth: 1
    functionLinenumber: 6482
    functionLinenumberEnd: 6488
    functionName: crypt_get_hw_encryption_key_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - LUKS2_get_opal_key_size
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_get_hw_encryption_key_size(struct crypt_device *cd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:6492,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/lib/setup.c:6495,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6498,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6501,1
    - Dst: LUKS2_get_keyslot_stored_key_size
      Src: /src/cryptsetup/lib/setup.c:6502,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6505
      start: 6490
    functionDepth: 1
    functionLinenumber: 6490
    functionLinenumberEnd: 6505
    functionName: crypt_keyslot_get_key_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 4
    functionsReached:
    - LUKS2_get_keyslot_stored_key_size
    - crypt_keyslot_max
    - isLUKS
    - isLUKS1
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_keyslot_get_key_size(struct crypt_device *cd, int keyslot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6513,1
    - Dst: LUKS2_keyslot_cipher_incompatible
      Src: /src/cryptsetup/lib/setup.c:6516,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:6519,1
    - Dst: free
      Src: /src/cryptsetup/lib/setup.c:6522,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - cd
    - cipher
    - key_size
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6527
      start: 6507
    functionDepth: 1
    functionLinenumber: 6507
    functionLinenumberEnd: 6527
    functionName: crypt_keyslot_set_encryption
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - LUKS2_keyslot_cipher_incompatible
    - strdup
    - free
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_set_encryption(struct crypt_device *cd,\n\tconst
      char *cipher,\n\tsize_t key_size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:6533,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6536,1
    - Dst: LUKS_keyslot_info
      Src: /src/cryptsetup/lib/setup.c:6538,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/lib/setup.c:6540,1
    - Dst: LUKS2_get_keyslot_cipher
      Src: /src/cryptsetup/lib/setup.c:6545,1
    - Dst: LUKS2_segment_is_hw_opal
      Src: /src/cryptsetup/lib/setup.c:6553,1
    - Dst: LUKS2_get_cipher
      Src: /src/cryptsetup/lib/setup.c:6560,1
    - Dst: LUKS2_keyslot_cipher_incompatible
      Src: /src/cryptsetup/lib/setup.c:6561,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/lib/setup.c:6562,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - cd
    - keyslot
    - key_size
    argTypes:
    - struct crypt_device*
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6570
      start: 6529
    functionDepth: 3
    functionLinenumber: 6529
    functionLinenumberEnd: 6570
    functionName: crypt_keyslot_get_encryption
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - LUKS2_segment_is_hw_opal
    - LUKS2_keyslot_cipher_incompatible
    - LUKS2_get_keyslot_cipher
    - isLUKS
    - LUKS_keyslot_info
    - isLUKS1
    - LUKS2_get_cipher
    - crypt_get_volume_key_size
    linkageType: ''
    returnType: char
    signature: char *crypt_keyslot_get_encryption(struct crypt_device *cd, int keyslot,
      size_t *key_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6577,1
    - Dst: LUKS_keyslot_pbkdf
      Src: /src/cryptsetup/lib/setup.c:6578,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6579,1
    - Dst: LUKS2_keyslot_pbkdf
      Src: /src/cryptsetup/lib/setup.c:6580,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - cd
    - keyslot
    - pbkdf
    argTypes:
    - struct crypt_device*
    - int
    - struct crypt_pbkdf_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6583
      start: 6572
    functionDepth: 1
    functionLinenumber: 6572
    functionLinenumberEnd: 6583
    functionName: crypt_keyslot_get_pbkdf
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - isLUKS1
    - LUKS2_keyslot_pbkdf
    - isLUKS2
    - LUKS_keyslot_pbkdf
    linkageType: ''
    returnType: int
    signature: int crypt_keyslot_get_pbkdf(struct crypt_device *cd, int keyslot, struct
      crypt_pbkdf_type *pbkdf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:6590,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:6590,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:6595,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - data_offset
    argTypes:
    - struct crypt_device*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6598
      start: 6585
    functionDepth: 1
    functionLinenumber: 6585
    functionLinenumberEnd: 6598
    functionName: crypt_set_data_offset
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 7
    functionsReached:
    - log_err
    - _
    - log_dbg
    linkageType: ''
    returnType: int
    signature: int crypt_set_data_offset(struct crypt_device *cd, uint64_t data_offset)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6607,1
    - Dst: LUKS2_check_metadata_area_size
      Src: /src/cryptsetup/lib/setup.c:6610,1
    - Dst: LUKS2_check_keyslots_area_size
      Src: /src/cryptsetup/lib/setup.c:6613,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - cd
    - metadata_size
    - keyslots_size
    argTypes:
    - struct crypt_device*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6620
      start: 6600
    functionDepth: 1
    functionLinenumber: 6600
    functionLinenumberEnd: 6620
    functionName: crypt_set_metadata_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 4
    functionsReached:
    - LUKS2_check_keyslots_area_size
    - isLUKS2
    - LUKS2_check_metadata_area_size
    linkageType: ''
    returnType: int
    signature: "int crypt_set_metadata_size(struct crypt_device *cd,\n\tuint64_t metadata_size,\n\tuint64_t
      keyslots_size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6634,1
    - Dst: LUKS_device_sectors
      Src: /src/cryptsetup/lib/setup.c:6636,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6637,1
    - Dst: LUKS2_metadata_size
      Src: /src/cryptsetup/lib/setup.c:6638,1
    - Dst: LUKS2_keyslots_size
      Src: /src/cryptsetup/lib/setup.c:6639,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - cd
    - metadata_size
    - keyslots_size
    argTypes:
    - struct crypt_device*
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6649
      start: 6622
    functionDepth: 1
    functionLinenumber: 6622
    functionLinenumberEnd: 6649
    functionName: crypt_get_metadata_size
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - LUKS2_keyslots_size
    - LUKS_device_sectors
    - LUKS2_metadata_size
    - isLUKS1
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: "int crypt_get_metadata_size(struct crypt_device *cd,\n\tuint64_t *metadata_size,\n\tuint64_t
      *keyslots_size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:6656,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6659,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6662,1
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:6663,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:6665,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:6668,1
    - Dst: TCRYPT_get_data_offset
      Src: /src/cryptsetup/lib/setup.c:6669,1
    - Dst: isBITLK
      Src: /src/cryptsetup/lib/setup.c:6671,1
    - Dst: isFVAULT2
      Src: /src/cryptsetup/lib/setup.c:6674,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6678
      start: 6651
    functionDepth: 1
    functionLinenumber: 6651
    functionLinenumberEnd: 6678
    functionName: crypt_get_data_offset
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 25
    functionsReached:
    - LUKS2_get_data_offset
    - isBITLK
    - isFVAULT2
    - isLUKS1
    - isLUKS2
    - isPLAIN
    - isLOOPAES
    - TCRYPT_get_data_offset
    - isTCRYPT
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_get_data_offset(struct crypt_device *cd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:6685,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:6688,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:6691,1
    - Dst: TCRYPT_get_iv_offset
      Src: /src/cryptsetup/lib/setup.c:6692,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6695
      start: 6680
    functionDepth: 1
    functionLinenumber: 6680
    functionLinenumberEnd: 6695
    functionName: crypt_get_iv_offset
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 5
    functionsReached:
    - isPLAIN
    - isTCRYPT
    - TCRYPT_get_iv_offset
    - isLOOPAES
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_get_iv_offset(struct crypt_device *cd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:6699,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6702,1
    - Dst: LUKS_keyslot_info
      Src: /src/cryptsetup/lib/setup.c:6703,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6704,1
    - Dst: LUKS2_keyslot_info
      Src: /src/cryptsetup/lib/setup.c:6705,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6708
      start: 6697
    functionDepth: 2
    functionLinenumber: 6697
    functionLinenumberEnd: 6708
    functionName: crypt_keyslot_status
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 27
    functionsReached:
    - isLUKS1
    - LUKS_keyslot_info
    - isLUKS2
    - _onlyLUKS
    - LUKS2_keyslot_info
    linkageType: ''
    returnType: crypt_keyslot_info
    signature: crypt_keyslot_info crypt_keyslot_status(struct crypt_device *cd, int
      keyslot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6712,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6715,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6719
      start: 6710
    functionDepth: 0
    functionLinenumber: 6710
    functionLinenumberEnd: 6719
    functionName: crypt_keyslot_max
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 13
    functionsReached:
    - isLUKS1
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_keyslot_max(const char *type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:6726,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6729,1
    - Dst: LUKS2_keyslot_area
      Src: /src/cryptsetup/lib/setup.c:6730,1
    - Dst: LUKS_keyslot_area
      Src: /src/cryptsetup/lib/setup.c:6732,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 4
    argNames:
    - cd
    - keyslot
    - offset
    - length
    argTypes:
    - struct crypt_device*
    - int
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6733
      start: 6721
    functionDepth: 2
    functionLinenumber: 6721
    functionLinenumberEnd: 6733
    functionName: crypt_keyslot_area
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - _onlyLUKS
    - LUKS_keyslot_area
    - isLUKS2
    - LUKS2_keyslot_area
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_area(struct crypt_device *cd,\n\tint keyslot,\n\tuint64_t
      *offset,\n\tuint64_t *length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:6737,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/lib/setup.c:6740,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6743,1
    - Dst: LUKS2_keyslot_priority_get
      Src: /src/cryptsetup/lib/setup.c:6744,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6747
      start: 6735
    functionDepth: 2
    functionLinenumber: 6735
    functionLinenumberEnd: 6747
    functionName: crypt_keyslot_get_priority
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - _onlyLUKS
    - LUKS2_keyslot_priority_get
    - isLUKS2
    - crypt_keyslot_max
    linkageType: ''
    returnType: crypt_keyslot_priority
    signature: crypt_keyslot_priority crypt_keyslot_get_priority(struct crypt_device
      *cd, int keyslot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:6753,1
    - Dst: crypt_keyslot_max
      Src: /src/cryptsetup/lib/setup.c:6758,1
    - Dst: onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:6761,1
    - Dst: LUKS2_keyslot_priority_set
      Src: /src/cryptsetup/lib/setup.c:6764,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - cd
    - keyslot
    - priority
    argTypes:
    - struct crypt_device*
    - int
    - crypt_keyslot_priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6765
      start: 6749
    functionDepth: 3
    functionLinenumber: 6749
    functionLinenumberEnd: 6765
    functionName: crypt_keyslot_set_priority
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - log_dbg
    - onlyLUKS2
    - crypt_keyslot_max
    - LUKS2_keyslot_priority_set
    linkageType: ''
    returnType: int
    signature: int crypt_keyslot_set_priority(struct crypt_device *cd, int keyslot,
      crypt_keyslot_priority priority)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6770
      start: 6767
    functionDepth: 0
    functionLinenumber: 6767
    functionLinenumberEnd: 6770
    functionName: crypt_get_type
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *crypt_get_type(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6775
      start: 6772
    functionDepth: 0
    functionLinenumber: 6772
    functionLinenumberEnd: 6775
    functionName: crypt_get_default_type
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *crypt_get_default_type(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6782,1
    - Dst: LUKS2_segment_is_hw_opal_crypt
      Src: /src/cryptsetup/lib/setup.c:6783,1
    - Dst: LUKS2_segment_is_hw_opal_only
      Src: /src/cryptsetup/lib/setup.c:6785,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6790
      start: 6777
    functionDepth: 1
    functionLinenumber: 6777
    functionLinenumberEnd: 6790
    functionName: crypt_get_hw_encryption_type
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 6
    functionsReached:
    - LUKS2_segment_is_hw_opal_only
    - LUKS2_segment_is_hw_opal_crypt
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_get_hw_encryption_type(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:6795,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:6798,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:6799,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/setup.c:6800,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - cd
    - vp
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6813
      start: 6792
    functionDepth: 2
    functionLinenumber: 6792
    functionLinenumberEnd: 6813
    functionName: crypt_get_verity_info
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - device_path
    - isVERITY
    - mdata_device_path
    linkageType: ''
    returnType: int
    signature: "int crypt_get_verity_info(struct crypt_device *cd,\n\tstruct crypt_params_verity
      *vp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:6819,1
    - Dst: dm_status_verity_repaired
      Src: /src/cryptsetup/lib/setup.c:6822,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - cd
    - name
    - repaired
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6823
      start: 6815
    functionDepth: 1
    functionLinenumber: 6815
    functionLinenumberEnd: 6823
    functionName: crypt_get_verity_repaired
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - dm_status_verity_repaired
    - isVERITY
    linkageType: ''
    returnType: int
    signature: "int crypt_get_verity_repaired(struct crypt_device *cd, const char
      *name,\n\t\t\t      uint64_t *repaired)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isINTEGRITY
      Src: /src/cryptsetup/lib/setup.c:6831,1
    - Dst: crypt_get_integrity_key_size
      Src: /src/cryptsetup/lib/setup.c:6841,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6851,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/setup.c:6856,1
    - Dst: LUKS2_get_integrity
      Src: /src/cryptsetup/lib/setup.c:6859,1
    - Dst: crypt_get_integrity_key_size
      Src: /src/cryptsetup/lib/setup.c:6860,1
    - Dst: INTEGRITY_tag_size
      Src: /src/cryptsetup/lib/setup.c:6861,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/lib/setup.c:6861,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/lib/setup.c:6861,1
    - Dst: memset
      Src: /src/cryptsetup/lib/setup.c:6872,1
    - Dst: crypt_get_integrity
      Src: /src/cryptsetup/lib/setup.c:6873,1
    - Dst: crypt_get_integrity_key_size
      Src: /src/cryptsetup/lib/setup.c:6874,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/setup.c:6875,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 46
    argCount: 2
    argNames:
    - cd
    - ip
    argTypes:
    - struct crypt_device*
    - struct crypt_params_integrity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6879
      start: 6825
    functionDepth: 4
    functionLinenumber: 6825
    functionLinenumberEnd: 6879
    functionName: crypt_get_integrity_info
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 7
    functionsReached:
    - LUKS2_get_integrity
    - memset
    - crypt_get_integrity_key_size
    - crypt_get_cipher
    - crypt_get_cipher_mode
    - isLUKS2
    - isINTEGRITY
    - crypt_get_integrity_tag_size
    - crypt_get_integrity
    - INTEGRITY_tag_size
    - crypt_get_sector_size
    linkageType: ''
    returnType: int
    signature: "int crypt_get_integrity_info(struct crypt_device *cd,\n\tstruct crypt_params_integrity
      *ip)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:6892,1
    - Dst: onlyLUKSnoRequirements
      Src: /src/cryptsetup/lib/setup.c:6894,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6897,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6897,1
    - Dst: LUKS2_luks1_to_luks2
      Src: /src/cryptsetup/lib/setup.c:6898,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6899,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6899,1
    - Dst: LUKS2_luks2_to_luks1
      Src: /src/cryptsetup/lib/setup.c:6900,1
    - Dst: _luks2_rollback
      Src: /src/cryptsetup/lib/setup.c:6906,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:6908,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:6908,1
    - Dst: mdata_device_path
      Src: /src/cryptsetup/lib/setup.c:6908,1
    - Dst: crypt_free_type
      Src: /src/cryptsetup/lib/setup.c:6912,1
    - Dst: crypt_load
      Src: /src/cryptsetup/lib/setup.c:6914,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - cd
    - type
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6915
      start: 6881
    functionDepth: 6
    functionLinenumber: 6881
    functionLinenumberEnd: 6915
    functionName: crypt_convert
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - crypt_load
    - LUKS2_luks2_to_luks1
    - _
    - crypt_free_type
    - isLUKS1
    - isLUKS2
    - mdata_device_path
    - log_dbg
    - onlyLUKSnoRequirements
    - log_err
    - _luks2_rollback
    - LUKS2_luks1_to_luks2
    linkageType: ''
    returnType: int
    signature: "int crypt_convert(struct crypt_device *cd,\n\t\t  const char *type,\n\t\t
      \ void *params)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:6920,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:6921,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:6924,1
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:6927,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:6930,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:6933,1
    - Dst: isLOOPAES
      Src: /src/cryptsetup/lib/setup.c:6936,1
    - Dst: isVERITY
      Src: /src/cryptsetup/lib/setup.c:6939,1
    - Dst: isTCRYPT
      Src: /src/cryptsetup/lib/setup.c:6942,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - cd
    - type
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 6919
        line_start: 6919
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (type)
      pos:
        line_end: 6920
        line_start: 6920
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 6946
      start: 6918
    functionDepth: 1
    functionLinenumber: 6918
    functionLinenumberEnd: 6946
    functionName: crypt_get_hdr
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 6
    functionsReached:
    - isLUKS1
    - isLUKS2
    - assert
    - isPLAIN
    - isVERITY
    - isLOOPAES
    - strcmp
    - isTCRYPT
    linkageType: ''
    returnType: void
    signature: void *crypt_get_hdr(struct crypt_device *cd, const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6952
      start: 6949
    functionDepth: 0
    functionLinenumber: 6949
    functionLinenumberEnd: 6952
    functionName: crypt_get_luks2_reencrypt
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct luks2_reencrypt
    signature: struct luks2_reencrypt *crypt_get_luks2_reencrypt(struct crypt_device
      *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cd
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6958
      start: 6955
    functionDepth: 0
    functionLinenumber: 6955
    functionLinenumberEnd: 6958
    functionName: crypt_set_luks2_reencrypt
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_set_luks2_reencrypt(struct crypt_device *cd, struct luks2_reencrypt
      *rh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_token_internal
      Src: /src/cryptsetup/lib/setup.c:6970,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:6971,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:6972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 8
    argNames:
    - cd
    - name
    - type
    - token
    - pin
    - pin_size
    - usrptr
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - int
    - char*
    - size_t
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6975
      start: 6963
    functionDepth: 10
    functionLinenumber: 6963
    functionLinenumberEnd: 6975
    functionName: crypt_activate_by_token_pin
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - crypt_keyslot_context_init_by_token_internal
    - crypt_activate_by_keyslot_context
    - crypt_keyslot_context_destroy_internal
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_token_pin(struct crypt_device *cd, const char
      *name,\n\tconst char *type, int token, const char *pin, size_t pin_size,\n\tvoid
      *usrptr, uint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_activate_by_token_pin
      Src: /src/cryptsetup/lib/setup.c:6980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - cd
    - name
    - token
    - usrptr
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6981
      start: 6977
    functionDepth: 11
    functionLinenumber: 6977
    functionLinenumberEnd: 6981
    functionName: crypt_activate_by_token
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - crypt_activate_by_token_pin
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_token(struct crypt_device *cd,\n\tconst char
      *name, int token, void *usrptr, uint32_t flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:6990,1
    - Dst: onlyLUKS2unrestricted
      Src: /src/cryptsetup/lib/setup.c:6992,1
    - Dst: LUKS2_token_json_get
      Src: /src/cryptsetup/lib/setup.c:6995,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - cd
    - token
    - json
    argTypes:
    - struct crypt_device*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6996
      start: 6983
    functionDepth: 3
    functionLinenumber: 6983
    functionLinenumberEnd: 6996
    functionName: crypt_token_json_get
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 4
    functionsReached:
    - log_dbg
    - onlyLUKS2unrestricted
    - LUKS2_token_json_get
    linkageType: ''
    returnType: int
    signature: int crypt_token_json_get(struct crypt_device *cd, int token, const
      char **json)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7002,1
    - Dst: onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7004,1
    - Dst: LUKS2_token_create
      Src: /src/cryptsetup/lib/setup.c:7007,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cd
    - token
    - json
    argTypes:
    - struct crypt_device*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7008
      start: 6998
    functionDepth: 3
    functionLinenumber: 6998
    functionLinenumberEnd: 7008
    functionName: crypt_token_json_set
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 8
    functionsReached:
    - log_dbg
    - LUKS2_token_create
    - onlyLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_token_json_set(struct crypt_device *cd, int token, const
      char *json)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7012,1
    - Dst: LUKS2_token_status
      Src: /src/cryptsetup/lib/setup.c:7015,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - cd
    - token
    - type
    argTypes:
    - struct crypt_device*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7016
      start: 7010
    functionDepth: 2
    functionLinenumber: 7010
    functionLinenumberEnd: 7016
    functionName: crypt_token_status
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 6
    functionsReached:
    - LUKS2_token_status
    - _onlyLUKS2
    linkageType: ''
    returnType: crypt_token_info
    signature: crypt_token_info crypt_token_status(struct crypt_device *cd, int token,
      const char **type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:7020,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7024
      start: 7018
    functionDepth: 0
    functionLinenumber: 7018
    functionLinenumberEnd: 7024
    functionName: crypt_token_max
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - isLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_token_max(const char *type)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7037,1
    - Dst: onlyLUKS2unrestricted
      Src: /src/cryptsetup/lib/setup.c:7039,1
    - Dst: LUKS2_token_status
      Src: /src/cryptsetup/lib/setup.c:7042,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7045,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7048,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/setup.c:7051,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7057,1
    - Dst: LUKS2_token_keyring_get
      Src: /src/cryptsetup/lib/setup.c:7061,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - cd
    - token
    - params
    argTypes:
    - struct crypt_device*
    - int
    - struct crypt_token_params_luks2_keyring*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7062
      start: 7026
    functionDepth: 3
    functionLinenumber: 7026
    functionLinenumberEnd: 7062
    functionName: crypt_token_luks2_keyring_get
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - LUKS2_token_keyring_get
    - LUKS2_token_status
    - log_dbg
    - onlyLUKS2unrestricted
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int crypt_token_luks2_keyring_get(struct crypt_device *cd,\n\tint
      token,\n\tstruct crypt_token_params_luks2_keyring *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7074,1
    - Dst: onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7076,1
    - Dst: LUKS2_token_keyring_json
      Src: /src/cryptsetup/lib/setup.c:7079,1
    - Dst: LUKS2_token_create
      Src: /src/cryptsetup/lib/setup.c:7083,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - cd
    - token
    - params
    argTypes:
    - struct crypt_device*
    - int
    - struct crypt_token_params_luks2_keyring*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7084
      start: 7064
    functionDepth: 3
    functionLinenumber: 7064
    functionLinenumberEnd: 7084
    functionName: crypt_token_luks2_keyring_set
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 7
    functionsReached:
    - log_dbg
    - LUKS2_token_create
    - onlyLUKS2
    - LUKS2_token_keyring_json
    linkageType: ''
    returnType: int
    signature: "int crypt_token_luks2_keyring_set(struct crypt_device *cd,\n\tint
      token,\n\tconst struct crypt_token_params_luks2_keyring *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7090,1
    - Dst: LUKS2_token_assign
      Src: /src/cryptsetup/lib/setup.c:7096,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - cd
    - token
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7097
      start: 7086
    functionDepth: 3
    functionLinenumber: 7086
    functionLinenumberEnd: 7097
    functionName: crypt_token_assign_keyslot
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 10
    functionsReached:
    - onlyLUKS2
    - LUKS2_token_assign
    linkageType: ''
    returnType: int
    signature: int crypt_token_assign_keyslot(struct crypt_device *cd, int token,
      int keyslot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7103,1
    - Dst: LUKS2_token_assign
      Src: /src/cryptsetup/lib/setup.c:7109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - cd
    - token
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7110
      start: 7099
    functionDepth: 3
    functionLinenumber: 7099
    functionLinenumberEnd: 7110
    functionName: crypt_token_unassign_keyslot
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - onlyLUKS2
    - LUKS2_token_assign
    linkageType: ''
    returnType: int
    signature: int crypt_token_unassign_keyslot(struct crypt_device *cd, int token,
      int keyslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7116,1
    - Dst: LUKS2_token_is_assigned
      Src: /src/cryptsetup/lib/setup.c:7119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - cd
    - token
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7120
      start: 7112
    functionDepth: 2
    functionLinenumber: 7112
    functionLinenumberEnd: 7120
    functionName: crypt_token_is_assigned
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 8
    functionsReached:
    - LUKS2_token_is_assigned
    - _onlyLUKS2
    linkageType: ''
    returnType: int
    signature: int crypt_token_is_assigned(struct crypt_device *cd, int token, int
      keyslot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7126
      start: 7123
    functionDepth: 0
    functionLinenumber: 7123
    functionLinenumberEnd: 7126
    functionName: crypt_metadata_locking_enabled
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_metadata_locking_enabled(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - enable
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7135
      start: 7128
    functionDepth: 0
    functionLinenumber: 7128
    functionLinenumberEnd: 7135
    functionName: crypt_metadata_locking
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_metadata_locking(struct crypt_device *cd __attribute__((unused)),
      int enable)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7141,1
    - Dst: LUKS2_config_set_flags
      Src: /src/cryptsetup/lib/setup.c:7145,1
    - Dst: LUKS2_config_set_requirements
      Src: /src/cryptsetup/lib/setup.c:7148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - cd
    - type
    - flags
    argTypes:
    - struct crypt_device*
    - crypt_flags_type
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7151
      start: 7137
    functionDepth: 3
    functionLinenumber: 7137
    functionLinenumberEnd: 7151
    functionName: crypt_persistent_flags_set
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 3
    functionsReached:
    - onlyLUKS2
    - LUKS2_config_set_requirements
    - LUKS2_config_set_flags
    linkageType: ''
    returnType: int
    signature: int crypt_persistent_flags_set(struct crypt_device *cd, crypt_flags_type
      type, uint32_t flags)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS2unrestricted
      Src: /src/cryptsetup/lib/setup.c:7160,1
    - Dst: LUKS2_config_get_flags
      Src: /src/cryptsetup/lib/setup.c:7164,1
    - Dst: LUKS2_config_get_requirements
      Src: /src/cryptsetup/lib/setup.c:7167,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - cd
    - type
    - flags
    argTypes:
    - struct crypt_device*
    - crypt_flags_type
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7172
      start: 7153
    functionDepth: 3
    functionLinenumber: 7153
    functionLinenumberEnd: 7172
    functionName: crypt_persistent_flags_get
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 6
    functionsReached:
    - LUKS2_config_get_requirements
    - onlyLUKS2unrestricted
    - LUKS2_config_get_flags
    linkageType: ''
    returnType: int
    signature: int crypt_persistent_flags_get(struct crypt_device *cd, crypt_flags_type
      type, uint32_t *flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/setup.c:7179,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/setup.c:7184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - cd
    - hdr
    - digest
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7185
      start: 7174
    functionDepth: 1
    functionLinenumber: 7174
    functionLinenumberEnd: 7185
    functionName: update_volume_key_segment_digest
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - LUKS2_digest_segment_assign
    linkageType: ''
    returnType: int
    signature: int update_volume_key_segment_digest(struct crypt_device *cd, struct
      luks2_hdr *hdr, int digest, int commit)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7193,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7194,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7195,1
    - Dst: struct crypt_keyslot_context*::get_luks2_key
      Src: /src/cryptsetup/lib/setup.c:7197,1
    - Dst: LUKS2_digest_verify
      Src: /src/cryptsetup/lib/setup.c:7202,1
    - Dst: LUKS2_digest_verify_by_segment
      Src: /src/cryptsetup/lib/setup.c:7208,1
    - Dst: update_volume_key_segment_digest
      Src: /src/cryptsetup/lib/setup.c:7214,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7216,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7216,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:7218,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - cd
    - hdr
    - keyslot
    - kc
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - struct crypt_keyslot_context*
    assertStmts:
    - condition: (kc)
      pos:
        line_end: 7192
        line_start: 7192
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (kc->get_luks2_key)
      pos:
        line_end: 7193
        line_start: 7193
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (keyslot >= 0)
      pos:
        line_end: 7194
        line_start: 7194
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 7221
      start: 7187
    functionDepth: 2
    functionLinenumber: 7187
    functionLinenumberEnd: 7221
    functionName: verify_and_update_segment_digest
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - struct crypt_keyslot_context*::get_luks2_key
    - _
    - crypt_free_volume_key
    - update_volume_key_segment_digest
    - assert
    - log_err
    - LUKS2_digest_verify
    - LUKS2_digest_verify_by_segment
    linkageType: ''
    returnType: int
    signature: "int verify_and_update_segment_digest(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr, int keyslot, struct crypt_keyslot_context *kc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7232,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7233,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7234,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7235,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7236,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:7236,1
    - Dst: LUKS2_keyslot_params_default
      Src: /src/cryptsetup/lib/setup.c:7238,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7240,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7240,1
    - Dst: LUKS2_digest_assign
      Src: /src/cryptsetup/lib/setup.c:7244,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/setup.c:7244,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7246,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7246,1
    - Dst: LUKS2_keyslot_store
      Src: /src/cryptsetup/lib/setup.c:7250,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/setup.c:7251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 5
    argNames:
    - cd
    - keyslot_new
    - new_passphrase
    - new_passphrase_size
    - vk
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - struct volume_key*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 7231
        line_start: 7231
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (keyslot_new >= 0)
      pos:
        line_end: 7232
        line_start: 7232
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (new_passphrase)
      pos:
        line_end: 7233
        line_start: 7233
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (vk)
      pos:
        line_end: 7234
        line_start: 7234
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (crypt_volume_key_get_id(vk) >= 0)
      pos:
        line_end: 7235
        line_start: 7235
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 7255
      start: 7223
    functionDepth: 1
    functionLinenumber: 7223
    functionLinenumberEnd: 7255
    functionName: luks2_keyslot_add_by_verified_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - LUKS2_keyslot_store
    - _
    - LUKS2_digest_assign
    - LUKS2_keyslot_params_default
    - assert
    - log_err
    - crypt_volume_key_get_id
    - CONST_CAST
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_add_by_verified_volume_key(struct crypt_device *cd,\n\tint
      keyslot_new,\n\tconst char *new_passphrase,\n\tsize_t new_passphrase_size,\n\tstruct
      volume_key *vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7265,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7266,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7267,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7268,1
    - Dst: LUKS2_digest_verify_by_segment
      Src: /src/cryptsetup/lib/setup.c:7270,1
    - Dst: crypt_volume_key_set_id
      Src: /src/cryptsetup/lib/setup.c:7272,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7275,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7275,1
    - Dst: luks2_keyslot_add_by_verified_volume_key
      Src: /src/cryptsetup/lib/setup.c:7279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - cd
    - keyslot_new
    - new_passphrase
    - new_passphrase_size
    - vk
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - struct volume_key*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 7264
        line_start: 7264
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (keyslot_new >= 0)
      pos:
        line_end: 7265
        line_start: 7265
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (new_passphrase)
      pos:
        line_end: 7266
        line_start: 7266
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (vk)
      pos:
        line_end: 7267
        line_start: 7267
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 7280
      start: 7257
    functionDepth: 2
    functionLinenumber: 7257
    functionLinenumberEnd: 7280
    functionName: luks2_keyslot_add_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_volume_key_set_id
    - assert
    - log_err
    - luks2_keyslot_add_by_verified_volume_key
    - LUKS2_digest_verify_by_segment
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_add_by_volume_key(struct crypt_device *cd,\n\tint
      keyslot_new,\n\tconst char *new_passphrase,\n\tsize_t new_passphrase_size,\n\tstruct
      volume_key *vk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7290,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7291,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7292,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7293,1
    - Dst: LUKS_verify_volume_key
      Src: /src/cryptsetup/lib/setup.c:7295,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7297,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7297,1
    - Dst: LUKS_set_key
      Src: /src/cryptsetup/lib/setup.c:7301,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/setup.c:7301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - cd
    - keyslot_new
    - new_passphrase
    - new_passphrase_size
    - vk
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - struct volume_key*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 7289
        line_start: 7289
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (vk)
      pos:
        line_end: 7292
        line_start: 7292
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (keyslot_new >= 0)
      pos:
        line_end: 7290
        line_start: 7290
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (new_passphrase)
      pos:
        line_end: 7291
        line_start: 7291
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 7305
      start: 7282
    functionDepth: 1
    functionLinenumber: 7282
    functionLinenumberEnd: 7305
    functionName: luks1_keyslot_add_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - LUKS_verify_volume_key
    - assert
    - log_err
    - CONST_CAST
    - LUKS_set_key
    linkageType: ''
    returnType: int
    signature: "int luks1_keyslot_add_by_volume_key(struct crypt_device *cd,\n\tint
      keyslot_new,\n\tconst char *new_passphrase,\n\tsize_t new_passphrase_size,\n\tstruct
      volume_key *vk)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7317,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7318,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7319,1
    - Dst: assert
      Src: /src/cryptsetup/lib/setup.c:7320,1
    - Dst: luks1_keyslot_add_by_volume_key
      Src: /src/cryptsetup/lib/setup.c:7323,1
    - Dst: luks2_keyslot_add_by_volume_key
      Src: /src/cryptsetup/lib/setup.c:7324,1
    - Dst: LUKS2_digest_verify_by_segment
      Src: /src/cryptsetup/lib/setup.c:7329,1
    - Dst: LUKS2_digest_verify_by_any_matching
      Src: /src/cryptsetup/lib/setup.c:7335,1
    - Dst: LUKS2_digest_create
      Src: /src/cryptsetup/lib/setup.c:7344,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7351,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7351,1
    - Dst: crypt_volume_key_set_id
      Src: /src/cryptsetup/lib/setup.c:7355,1
    - Dst: update_volume_key_segment_digest
      Src: /src/cryptsetup/lib/setup.c:7358,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7360,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7360,1
    - Dst: luks2_keyslot_add_by_verified_volume_key
      Src: /src/cryptsetup/lib/setup.c:7364,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 7
    argNames:
    - cd
    - is_luks1
    - keyslot_new
    - new_passphrase
    - new_passphrase_size
    - vk
    - flags
    argTypes:
    - struct crypt_device*
    - bool
    - int
    - char*
    - size_t
    - struct volume_key*
    - uint32_t
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 7316
        line_start: 7316
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (new_passphrase)
      pos:
        line_end: 7318
        line_start: 7318
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (vk)
      pos:
        line_end: 7319
        line_start: 7319
        source_file: /src/cryptsetup/lib/setup.c
    - condition: (keyslot_new >= 0)
      pos:
        line_end: 7317
        line_start: 7317
        source_file: /src/cryptsetup/lib/setup.c
    constantsTouched: []
    func_position:
      end: 7367
      start: 7307
    functionDepth: 3
    functionLinenumber: 7307
    functionLinenumberEnd: 7367
    functionName: keyslot_add_by_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 10
    functionsReached:
    - LUKS2_digest_create
    - luks1_keyslot_add_by_volume_key
    - _
    - crypt_volume_key_set_id
    - update_volume_key_segment_digest
    - luks2_keyslot_add_by_volume_key
    - LUKS2_digest_verify_by_any_matching
    - assert
    - log_err
    - luks2_keyslot_add_by_verified_volume_key
    - LUKS2_digest_verify_by_segment
    linkageType: ''
    returnType: int
    signature: "int keyslot_add_by_key(struct crypt_device *cd,\n\tbool is_luks1,\n\tint
      keyslot_new,\n\tconst char *new_passphrase,\n\tsize_t new_passphrase_size,\n\tstruct
      volume_key *vk,\n\tuint32_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:7384,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/lib/setup.c:7387,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:7388,1
    - Dst: crypt_keyslot_context_init_by_key_internal
      Src: /src/cryptsetup/lib/setup.c:7390,1
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/setup.c:7392,1
    - Dst: verify_and_update_segment_digest
      Src: /src/cryptsetup/lib/setup.c:7394,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:7396,1
    - Dst: crypt_keyslot_context_init_by_key_internal
      Src: /src/cryptsetup/lib/setup.c:7401,1
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/setup.c:7402,1
    - Dst: crypt_keyslot_add_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:7404,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:7406,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:7407,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 7
    argNames:
    - cd
    - keyslot
    - volume_key
    - volume_key_size
    - passphrase
    - passphrase_size
    - flags
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7410
      start: 7369
    functionDepth: 3
    functionLinenumber: 7369
    functionLinenumberEnd: 7410
    functionName: crypt_keyslot_add_by_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 10
    functionsReached:
    - crypt_keyslot_context_destroy_internal
    - crypt_keyslot_context_init_by_key_internal
    - verify_and_update_segment_digest
    - isLUKS2
    - onlyLUKS
    - crypt_keyslot_context_init_by_passphrase_internal
    - crypt_keyslot_add_by_keyslot_context
    - crypt_keyslot_status
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_add_by_key(struct crypt_device *cd,\n\tint keyslot,\n\tconst
      char *volume_key,\n\tsize_t volume_key_size,\n\tconst char *passphrase,\n\tsize_t
      passphrase_size,\n\tuint32_t flags)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7429,1
    - Dst: onlyLUKS
      Src: /src/cryptsetup/lib/setup.c:7429,1
    - Dst: crypt_keyslot_status
      Src: /src/cryptsetup/lib/setup.c:7433,1
    - Dst: verify_and_update_segment_digest
      Src: /src/cryptsetup/lib/setup.c:7434,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7439,1
    - Dst: keyslot_context_type_string
      Src: /src/cryptsetup/lib/setup.c:7440,1
    - Dst: keyslot_context_type_string
      Src: /src/cryptsetup/lib/setup.c:7442,1
    - Dst: keyslot_verify_or_find_empty
      Src: /src/cryptsetup/lib/setup.c:7444,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:7448,1
    - Dst: LUKS_keyslot_active_count
      Src: /src/cryptsetup/lib/setup.c:7450,1
    - Dst: LUKS2_keyslot_active_count
      Src: /src/cryptsetup/lib/setup.c:7452,1
    - Dst: struct crypt_keyslot_context*::get_luks1_volume_key
      Src: /src/cryptsetup/lib/setup.c:7460,1
    - Dst: struct crypt_keyslot_context*::get_luks2_volume_key
      Src: /src/cryptsetup/lib/setup.c:7462,1
    - Dst: crypt_generate_volume_key
      Src: /src/cryptsetup/lib/setup.c:7468,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/setup.c:7472,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/setup.c:7472,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/setup.c:7473,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7477,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7477,1
    - Dst: struct crypt_keyslot_context*::get_passphrase
      Src: /src/cryptsetup/lib/setup.c:7485,1
    - Dst: LUKS2_token_assign
      Src: /src/cryptsetup/lib/setup.c:7488,1
    - Dst: keyslot_add_by_key
      Src: /src/cryptsetup/lib/setup.c:7490,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/setup.c:7492,1
    - Dst: _luks2_rollback
      Src: /src/cryptsetup/lib/setup.c:7495,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 56
    argCount: 6
    argNames:
    - cd
    - keyslot_existing
    - kc
    - keyslot_new
    - new_kc
    - flags
    argTypes:
    - struct crypt_device*
    - int
    - struct crypt_keyslot_context*
    - int
    - struct crypt_keyslot_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7500
      start: 7412
    functionDepth: 4
    functionLinenumber: 7412
    functionLinenumberEnd: 7500
    functionName: crypt_keyslot_add_by_keyslot_context
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 12
    functionsReached:
    - onlyLUKS2
    - crypt_keyslot_status
    - struct crypt_keyslot_context*::get_luks1_volume_key
    - log_dbg
    - keyslot_verify_or_find_empty
    - LUKS2_keyslot_active_count
    - keyslot_add_by_key
    - crypt_volume_key_length
    - LUKS2_token_assign
    - verify_and_update_segment_digest
    - struct crypt_keyslot_context*::get_luks2_volume_key
    - crypt_free_volume_key
    - LUKS_keyslot_active_count
    - crypt_volume_key_get_key
    - struct crypt_keyslot_context*::get_passphrase
    - log_err
    - _luks2_rollback
    - _
    - isLUKS1
    - onlyLUKS
    - keyslot_context_type_string
    - crypt_alloc_volume_key
    - crypt_generate_volume_key
    linkageType: ''
    returnType: int
    signature: "int crypt_keyslot_add_by_keyslot_context(struct crypt_device *cd,\n\tint
      keyslot_existing,\n\tstruct crypt_keyslot_context *kc,\n\tint keyslot_new,\n\tstruct
      crypt_keyslot_context *new_kc,\n\tuint32_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isPLAIN
      Src: /src/cryptsetup/lib/setup.c:7513,1
    - Dst: isLUKS2
      Src: /src/cryptsetup/lib/setup.c:7513,1
    - Dst: kernel_keyring_support
      Src: /src/cryptsetup/lib/setup.c:7516,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/setup.c:7519,1
    - Dst: dmcrypt_keyring_bug
      Src: /src/cryptsetup/lib/setup.c:7520,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7523
      start: 7505
    functionDepth: 3
    functionLinenumber: 7505
    functionLinenumberEnd: 7523
    functionName: crypt_use_keyring_for_vk
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - kernel_keyring_support
    - dm_flags
    - isLUKS2
    - isPLAIN
    - dmcrypt_keyring_bug
    linkageType: ''
    returnType: int
    signature: int crypt_use_keyring_for_vk(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cd
    - enable
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7529
      start: 7525
    functionDepth: 0
    functionLinenumber: 7525
    functionLinenumberEnd: 7529
    functionName: crypt_volume_key_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_volume_key_keyring(struct crypt_device *cd __attribute__((unused)),
      int enable)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:7537,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7538,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7542,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/setup.c:7543,1
    - Dst: crypt_volume_key_upload_kernel_key
      Src: /src/cryptsetup/lib/setup.c:7545,1
    - Dst: crypt_set_key_in_keyring
      Src: /src/cryptsetup/lib/setup.c:7546,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7549,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7550,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7550,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - cd
    - vk
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7553
      start: 7532
    functionDepth: 2
    functionLinenumber: 7532
    functionLinenumberEnd: 7553
    functionName: crypt_volume_key_load_in_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - _
    - crypt_volume_key_description
    - crypt_set_key_in_keyring
    - log_dbg
    - log_err
    - crypt_volume_key_upload_kernel_key
    linkageType: ''
    returnType: int
    signature: int crypt_volume_key_load_in_keyring(struct crypt_device *cd, struct
      volume_key *vk)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7567,1
    - Dst: keyring_request_key_id
      Src: /src/cryptsetup/lib/setup.c:7569,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7571,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7574,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7578,1
    - Dst: keyring_read_key
      Src: /src/cryptsetup/lib/setup.c:7580,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7582,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - cd
    - key_description
    - key
    - key_size
    argTypes:
    - struct crypt_device*
    - char*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7585
      start: 7556
    functionDepth: 1
    functionLinenumber: 7556
    functionLinenumberEnd: 7585
    functionName: crypt_keyring_get_user_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - keyring_read_key
    - keyring_request_key_id
    linkageType: ''
    returnType: int
    signature: "int crypt_keyring_get_user_key(struct crypt_device *cd,\n\t\tconst
      char *key_description,\n\t\tchar **key,\n\t\tsize_t *key_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7599,1
    - Dst: keyring_find_key_id_by_name
      Src: /src/cryptsetup/lib/setup.c:7601,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7603,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7607,1
    - Dst: keyring_read_key
      Src: /src/cryptsetup/lib/setup.c:7609,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7611,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - cd
    - key_description
    - key
    - key_size
    argTypes:
    - struct crypt_device*
    - char*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7614
      start: 7588
    functionDepth: 1
    functionLinenumber: 7588
    functionLinenumberEnd: 7614
    functionName: crypt_keyring_get_key_by_name
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - keyring_read_key
    - keyring_find_key_id_by_name
    linkageType: ''
    returnType: int
    signature: "int crypt_keyring_get_key_by_name(struct crypt_device *cd,\n\t\tconst
      char *key_description,\n\t\tchar **key,\n\t\tsize_t *key_size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7626,1
    - Dst: keyring_find_key_id_by_name
      Src: /src/cryptsetup/lib/setup.c:7628,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7630,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7633,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7637,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7641,1
    - Dst: keyring_read_keysize
      Src: /src/cryptsetup/lib/setup.c:7643,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7645,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - cd
    - key_description
    - r_key_size
    argTypes:
    - struct crypt_device*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7648
      start: 7616
    functionDepth: 1
    functionLinenumber: 7616
    functionLinenumberEnd: 7648
    functionName: crypt_keyring_get_keysize_by_name
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - keyring_read_keysize
    - keyring_find_key_id_by_name
    linkageType: ''
    returnType: int
    signature: "int crypt_keyring_get_keysize_by_name(struct crypt_device *cd,\n\t\tconst
      char *key_description,\n\t\tsize_t *r_key_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7654
      start: 7651
    functionDepth: 0
    functionLinenumber: 7651
    functionLinenumberEnd: 7654
    functionName: crypt_key_in_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_key_in_keyring(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - key_in_keyring
    argTypes:
    - struct crypt_device*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7663
      start: 7657
    functionDepth: 0
    functionLinenumber: 7657
    functionLinenumberEnd: 7663
    functionName: crypt_set_key_in_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_set_key_in_keyring(struct crypt_device *cd, unsigned key_in_keyring)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7669,1
    - Dst: keyring_unlink_key_from_thread_keyring
      Src: /src/cryptsetup/lib/setup.c:7671,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7672,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - key_id
    argTypes:
    - struct crypt_device*
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7673
      start: 7666
    functionDepth: 1
    functionLinenumber: 7666
    functionLinenumberEnd: 7673
    functionName: crypt_unlink_key_from_thread_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - keyring_unlink_key_from_thread_keyring
    linkageType: ''
    returnType: void
    signature: "void crypt_unlink_key_from_thread_keyring(struct crypt_device *cd,\n\t\tkey_serial_t
      key_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: key_type_name
      Src: /src/cryptsetup/lib/setup.c:7680,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7685,1
    - Dst: crypt_set_key_in_keyring
      Src: /src/cryptsetup/lib/setup.c:7687,1
    - Dst: keyring_request_key_id
      Src: /src/cryptsetup/lib/setup.c:7689,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7691,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7694,1
    - Dst: crypt_unlink_key_from_thread_keyring
      Src: /src/cryptsetup/lib/setup.c:7698,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - cd
    - key_description
    - ktype
    argTypes:
    - struct crypt_device*
    - char*
    - key_type_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7699
      start: 7675
    functionDepth: 2
    functionLinenumber: 7675
    functionLinenumberEnd: 7699
    functionName: crypt_unlink_key_by_description_from_thread_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 1
    functionsReached:
    - crypt_set_key_in_keyring
    - crypt_unlink_key_from_thread_keyring
    - key_type_name
    - log_dbg
    - keyring_request_key_id
    linkageType: ''
    returnType: void
    signature: "void crypt_unlink_key_by_description_from_thread_keyring(struct crypt_device
      *cd,\n\t\tconst char *key_description,\n\t\tkey_type_t ktype)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/setup.c:7716,1
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7722,1
    - Dst: key_type_by_name
      Src: /src/cryptsetup/lib/setup.c:7726,1
    - Dst: crypt_reencrypt_status
      Src: /src/cryptsetup/lib/setup.c:7730,1
    - Dst: LUKS2_reencrypt_vks_count
      Src: /src/cryptsetup/lib/setup.c:7732,1
    - Dst: keyring_find_keyring_id_by_name
      Src: /src/cryptsetup/lib/setup.c:7739,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7741,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7741,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:7744,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/setup.c:7746,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 39
    argCount: 5
    argNames:
    - cd
    - key_description
    - old_key_description
    - key_type_desc
    - keyring_to_link_vk
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7762
      start: 7701
    functionDepth: 2
    functionLinenumber: 7701
    functionLinenumberEnd: 7762
    functionName: crypt_set_keyring_to_link
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - key_type_by_name
    - _onlyLUKS2
    - crypt_get_hdr
    - _
    - crypt_reencrypt_status
    - log_err
    - strdup
    - keyring_find_keyring_id_by_name
    - LUKS2_reencrypt_vks_count
    linkageType: ''
    returnType: int
    signature: "int crypt_set_keyring_to_link(struct crypt_device *cd, const char
      *key_description,\n\t\t\t      const char *old_key_description,\n\t\t\t      const
      char *key_type_desc, const char *keyring_to_link_vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_volume_key_drop_uploaded_kernel_key
      Src: /src/cryptsetup/lib/setup.c:7770,1
    - Dst: crypt_volume_key_next
      Src: /src/cryptsetup/lib/setup.c:7771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - vks
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7773
      start: 7765
    functionDepth: 2
    functionLinenumber: 7765
    functionLinenumberEnd: 7773
    functionName: crypt_drop_uploaded_keyring_key
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - crypt_volume_key_next
    - crypt_volume_key_drop_uploaded_kernel_key
    linkageType: ''
    returnType: void
    signature: void crypt_drop_uploaded_keyring_key(struct crypt_device *cd, struct
      volume_key *vks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_keyslot_context_init_by_keyring_internal
      Src: /src/cryptsetup/lib/setup.c:7787,1
    - Dst: crypt_activate_by_keyslot_context
      Src: /src/cryptsetup/lib/setup.c:7788,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/setup.c:7789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - cd
    - name
    - key_description
    - keyslot
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7792
      start: 7775
    functionDepth: 10
    functionLinenumber: 7775
    functionLinenumberEnd: 7792
    functionName: crypt_activate_by_keyring
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 2
    functionsReached:
    - crypt_keyslot_context_init_by_keyring_internal
    - crypt_activate_by_keyslot_context
    - crypt_keyslot_context_destroy_internal
    linkageType: ''
    returnType: int
    signature: "int crypt_activate_by_keyring(struct crypt_device *cd,\n\t\t\t      const
      char *name,\n\t\t\t      const char *key_description,\n\t\t\t      int keyslot,\n\t\t\t
      \     uint32_t flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/setup.c:7804,1
    - Dst: crypt_write_lock
      Src: /src/cryptsetup/lib/setup.c:7805,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/setup.c:7806,1
    - Dst: _
      Src: /src/cryptsetup/lib/setup.c:7806,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7812
      start: 7799
    functionDepth: 1
    functionLinenumber: 7799
    functionLinenumberEnd: 7812
    functionName: crypt_serialize_lock
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - crypt_write_lock
    - log_err
    - _
    linkageType: ''
    returnType: int
    signature: int crypt_serialize_lock(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_unlock_internal
      Src: /src/cryptsetup/lib/setup.c:7819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7821
      start: 7814
    functionDepth: 1
    functionLinenumber: 7814
    functionLinenumberEnd: 7821
    functionName: crypt_serialize_unlock
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_unlock_internal
    linkageType: ''
    returnType: void
    signature: void crypt_serialize_unlock(struct crypt_device *cd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/setup.c:7827,1
    - Dst: isLUKS
      Src: /src/cryptsetup/lib/setup.c:7829,1
    - Dst: isLUKS1
      Src: /src/cryptsetup/lib/setup.c:7832,1
    - Dst: _onlyLUKS2
      Src: /src/cryptsetup/lib/setup.c:7835,1
    - Dst: LUKS2_reencrypt_get_params
      Src: /src/cryptsetup/lib/setup.c:7838,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct crypt_params_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7839
      start: 7823
    functionDepth: 2
    functionLinenumber: 7823
    functionLinenumberEnd: 7839
    functionName: crypt_reencrypt_status
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 8
    functionsReached:
    - memset
    - _onlyLUKS2
    - isLUKS
    - isLUKS1
    - LUKS2_reencrypt_get_params
    linkageType: ''
    returnType: crypt_reencrypt_info
    signature: "crypt_reencrypt_info crypt_reencrypt_status(struct crypt_device *cd,\n\t\tstruct
      crypt_params_reencrypt *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_token_unload_external_all
      Src: /src/cryptsetup/lib/setup.c:7843,1
    - Dst: crypt_backend_destroy
      Src: /src/cryptsetup/lib/setup.c:7845,1
    - Dst: crypt_random_exit
      Src: /src/cryptsetup/lib/setup.c:7846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7847
      start: 7841
    functionDepth: 1
    functionLinenumber: 7841
    functionLinenumberEnd: 7847
    functionName: libcryptsetup_exit
    functionSourceFile: /src/cryptsetup/lib/setup.c
    functionUses: 0
    functionsReached:
    - crypt_random_exit
    - crypt_token_unload_external_all
    - crypt_backend_destroy
    linkageType: ''
    returnType: void
    signature: void libcryptsetup_exit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dmt
    argTypes:
    - struct dm_task*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 46
    functionName: dm_task_secure_data
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dm_task_secure_data(struct dm_task *dmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dmt
    - cookie
    - flags
    argTypes:
    - struct dm_task*
    - uint32_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: _dm_task_set_cookie
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _dm_task_set_cookie(struct dm_task *dmt, uint32_t *cookie, uint16_t
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cookie
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: _dm_udev_wait
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _dm_udev_wait(uint32_t cookie)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dm_udev_get_sync_support
      Src: /src/cryptsetup/lib/libdevmapper.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: _dm_use_udev
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_udev_get_sync_support
    linkageType: ''
    returnType: int
    signature: int _dm_use_udev(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: format
      Src: /src/cryptsetup/lib/libdevmapper.c:71,1
    - Dst: va_start
      Src: /src/cryptsetup/lib/libdevmapper.c:80,1
    - Dst: vasprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:81,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:83,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:86,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:87,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:90,1
    - Dst: va_end
      Src: /src/cryptsetup/lib/libdevmapper.c:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - level
    - file
    - line
    - f
    argTypes:
    - int
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 92
    functionName: set_dm_error
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - format
    - free
    - vasprintf
    - strncmp
    - log_err
    - log_dbg
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void set_dm_error(int level,\n\t\t\t const char *file __attribute__((unused)),\n\t\t\t
      int line __attribute__((unused)),\n\t\t\t const char *f, ...)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 6
    argNames:
    - target_maj
    - target_min
    - target_patch
    - actual_maj
    - actual_min
    - actual_patch
    argTypes:
    - unsigned
    - unsigned
    - unsigned
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 107
    functionName: _dm_satisfies_version
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int _dm_satisfies_version(unsigned target_maj, unsigned target_min,
      unsigned target_patch,\n\t\t\t\t unsigned actual_maj, unsigned actual_min, unsigned
      actual_patch)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:117,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:120,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:123,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:125,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:129,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:132,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:135,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:138,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:143,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:146,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:151,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:154,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:157,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:160,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:163,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 36
    argCount: 4
    argNames:
    - cd
    - crypt_maj
    - crypt_min
    - crypt_patch
    argTypes:
    - struct crypt_device*
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 167
    functionName: _dm_set_crypt_compat
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - _dm_satisfies_version
    linkageType: ''
    returnType: void
    signature: "void _dm_set_crypt_compat(struct crypt_device *cd,\n\t\t\t\t unsigned
      crypt_maj,\n\t\t\t\t unsigned crypt_min,\n\t\t\t\t unsigned crypt_patch)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:177,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:189,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:194,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:197,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:200,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:204,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - cd
    - verity_maj
    - verity_min
    - verity_patch
    argTypes:
    - struct crypt_device*
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 208
    functionName: _dm_set_verity_compat
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - _dm_satisfies_version
    linkageType: ''
    returnType: void
    signature: "void _dm_set_verity_compat(struct crypt_device *cd,\n\t\t\t\t  unsigned
      verity_maj,\n\t\t\t\t  unsigned verity_min,\n\t\t\t\t  unsigned verity_patch)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:218,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:223,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:226,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:229,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:232,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:235,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:238,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:241,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - cd
    - integrity_maj
    - integrity_min
    - integrity_patch
    argTypes:
    - struct crypt_device*
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 245
    functionName: _dm_set_integrity_compat
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - _dm_satisfies_version
    linkageType: ''
    returnType: void
    signature: "void _dm_set_integrity_compat(struct crypt_device *cd,\n\t\t\t\t     unsigned
      integrity_maj,\n\t\t\t\t     unsigned integrity_min,\n\t\t\t\t     unsigned
      integrity_patch)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - cd
    - zero_maj
    - zero_min
    - zero_patch
    argTypes:
    - struct crypt_device*
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 259
    functionName: _dm_set_zero_compat
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - log_dbg
    linkageType: ''
    returnType: void
    signature: "void _dm_set_zero_compat(struct crypt_device *cd,\n\t\t\t\tunsigned
      zero_maj,\n\t\t\t\tunsigned zero_min,\n\t\t\t\tunsigned zero_patch)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:280,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:283,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:284,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:286,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - target_type
    argTypes:
    - dm_target_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 288
    functionName: _dm_check_target
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_task_set_name
    - dm_task_run
    - dm_task_create
    - dm_task_destroy
    linkageType: ''
    returnType: void
    signature: void _dm_check_target(dm_target_type target_type)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: _dm_check_target
      Src: /src/cryptsetup/lib/libdevmapper.c:309,1
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:311,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:314,1
    - Dst: dm_task_get_driver_version
      Src: /src/cryptsetup/lib/libdevmapper.c:317,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:321,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:323,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:325,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:328,1
    - Dst: _dm_satisfies_version
      Src: /src/cryptsetup/lib/libdevmapper.c:332,1
    - Dst: dm_task_get_versions
      Src: /src/cryptsetup/lib/libdevmapper.c:337,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:340,1
    - Dst: _dm_set_crypt_compat
      Src: /src/cryptsetup/lib/libdevmapper.c:341,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:344,1
    - Dst: _dm_set_verity_compat
      Src: /src/cryptsetup/lib/libdevmapper.c:345,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:348,1
    - Dst: _dm_set_integrity_compat
      Src: /src/cryptsetup/lib/libdevmapper.c:349,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:352,1
    - Dst: _dm_set_zero_compat
      Src: /src/cryptsetup/lib/libdevmapper.c:353,1
    - Dst: VOIDP_CAST
      Src: /src/cryptsetup/lib/libdevmapper.c:357,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:362,1
    - Dst: _dm_use_udev
      Src: /src/cryptsetup/lib/libdevmapper.c:363,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:368,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 53
    argCount: 2
    argNames:
    - cd
    - target_type
    argTypes:
    - struct crypt_device*
    - dm_target_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 372
    functionName: _dm_check_versions
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 2
    functionsReached:
    - _dm_check_target
    - _dm_set_crypt_compat
    - _dm_use_udev
    - dm_task_get_driver_version
    - dm_task_run
    - _dm_set_verity_compat
    - VOIDP_CAST
    - log_dbg
    - _dm_satisfies_version
    - dm_task_create
    - sscanf
    - _dm_set_integrity_compat
    - _dm_set_zero_compat
    - dm_task_get_versions
    - dm_task_destroy
    - strcmp
    linkageType: ''
    returnType: int
    signature: int _dm_check_versions(struct crypt_device *cd, dm_target_type target_type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _dm_check_versions
      Src: /src/cryptsetup/lib/libdevmapper.c:376,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 8
    argCount: 3
    argNames:
    - cd
    - target
    - flags
    argTypes:
    - struct crypt_device*
    - dm_target_type
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 374
    functionDepth: 3
    functionLinenumber: 374
    functionLinenumberEnd: 391
    functionName: dm_flags
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 3
    functionsReached:
    - _dm_check_versions
    linkageType: ''
    returnType: int
    signature: int dm_flags(struct crypt_device *cd, dm_target_type target, uint64_t
      *flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:397,1
    - Dst: dm_log_init
      Src: /src/cryptsetup/lib/libdevmapper.c:398,1
    - Dst: dm_log_init_verbose
      Src: /src/cryptsetup/lib/libdevmapper.c:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 401
    functionName: dm_backend_init
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 2
    functionsReached:
    - log_dbg
    - dm_log_init_verbose
    - dm_log_init
    linkageType: ''
    returnType: void
    signature: void dm_backend_init(struct crypt_device *cd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:406,1
    - Dst: dm_log_init_verbose
      Src: /src/cryptsetup/lib/libdevmapper.c:407,1
    - Dst: dm_log_init
      Src: /src/cryptsetup/lib/libdevmapper.c:408,1
    - Dst: dm_lib_release
      Src: /src/cryptsetup/lib/libdevmapper.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: dm_backend_exit
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 2
    functionsReached:
    - log_dbg
    - dm_log_init
    - dm_log_init_verbose
    - dm_lib_release
    linkageType: ''
    returnType: void
    signature: void dm_backend_exit(struct crypt_device *cd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _dm_check_versions
      Src: /src/cryptsetup/lib/libdevmapper.c:417,1
    - Dst: getuid
      Src: /src/cryptsetup/lib/libdevmapper.c:418,1
    - Dst: geteuid
      Src: /src/cryptsetup/lib/libdevmapper.c:418,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:419,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:419,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:422,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:422,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - target
    argTypes:
    - struct crypt_device*
    - dm_target_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 414
    functionDepth: 3
    functionLinenumber: 414
    functionLinenumberEnd: 428
    functionName: dm_init_context
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - getuid
    - _
    - _dm_check_versions
    - log_err
    - geteuid
    linkageType: ''
    returnType: int
    signature: int dm_init_context(struct crypt_device *cd, dm_target_type target)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 432
    functionName: dm_exit_context
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dm_exit_context(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:441,1
    - Dst: dm_task_set_minor
      Src: /src/cryptsetup/lib/libdevmapper.c:443,1
    - Dst: dm_task_set_major
      Src: /src/cryptsetup/lib/libdevmapper.c:444,1
    - Dst: dm_task_no_flush
      Src: /src/cryptsetup/lib/libdevmapper.c:445,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:446,1
    - Dst: dm_task_get_name
      Src: /src/cryptsetup/lib/libdevmapper.c:447,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:448,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:452,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:455,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:457,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - prefix
    - major
    - minor
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 458
    functionName: dm_device_path
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - dm_task_set_major
    - snprintf
    - dm_task_set_minor
    - dm_task_run
    - dm_task_no_flush
    - dm_task_create
    - dm_task_destroy
    - strdup
    - dm_task_get_name
    linkageType: ''
    returnType: char
    signature: char *dm_device_path(const char *prefix, int major, int minor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/libdevmapper.c:464,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/libdevmapper.c:464,1
    - Dst: dm_device_path
      Src: /src/cryptsetup/lib/libdevmapper.c:467,1
    - Dst: major
      Src: /src/cryptsetup/lib/libdevmapper.c:467,1
    - Dst: minor
      Src: /src/cryptsetup/lib/libdevmapper.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 468
    functionName: dm_device_name
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - minor
    - major
    - dm_device_path
    - stat
    - S_ISBLK
    linkageType: ''
    returnType: char
    signature: char *dm_device_name(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 476
    functionName: int_log10
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t int_log10(uint64_t x)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:489,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:493,1
    - Dst: memset
      Src: /src/cryptsetup/lib/libdevmapper.c:495,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/libdevmapper.c:496,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:498,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:501,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:508,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:509,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:510,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:512,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:513,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:514,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:514,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:516,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:517,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:518,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:520,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:521,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:522,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:524,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:525,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:528,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:529,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 47
    argCount: 7
    argNames:
    - org_c
    - org_i
    - tag_size
    - c_dm
    - c_dm_size
    - i_dm
    - i_dm_size
    argTypes:
    - char*
    - char*
    - unsigned
    - char*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 538
    functionName: cipher_dm2c
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - memset
    - snprintf
    - strncpy
    - sscanf
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int cipher_dm2c(const char *org_c, const char *org_i, unsigned tag_size,\n\t\t
      \      char *c_dm, int c_dm_size,\n\t\t       char *i_dm, int i_dm_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:542,1
    - Dst: assert
      Src: /src/cryptsetup/lib/libdevmapper.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - buf
    - buf_size
    - s
    - u
    argTypes:
    - char*
    - size_t
    - char*
    - unsigned
    assertStmts:
    - condition: (r > 0 && r < buf_size)
      pos:
        line_end: 542
        line_start: 542
        source_file: /src/cryptsetup/lib/libdevmapper.c
    constantsTouched: []
    func_position:
      end: 545
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 545
    functionName: _uf
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - snprintf
    - assert
    linkageType: ''
    returnType: char
    signature: char *_uf(char *buf, size_t buf_size, const char *s, unsigned u)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: cipher_dm2c
      Src: /src/cryptsetup/lib/libdevmapper.c:558,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:585,1
    - Dst: _uf
      Src: /src/cryptsetup/lib/libdevmapper.c:594,1
    - Dst: _uf
      Src: /src/cryptsetup/lib/libdevmapper.c:597,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/libdevmapper.c:603,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:606,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/lib/libdevmapper.c:607,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/libdevmapper.c:609,1
    - Dst: crypt_volume_key_kernel_key_type
      Src: /src/cryptsetup/lib/libdevmapper.c:610,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:612,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/libdevmapper.c:612,1
    - Dst: int_log10
      Src: /src/cryptsetup/lib/libdevmapper.c:613,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:613,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:615,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:618,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:618,1
    - Dst: key_type_name
      Src: /src/cryptsetup/lib/libdevmapper.c:619,1
    - Dst: crypt_volume_key_kernel_key_type
      Src: /src/cryptsetup/lib/libdevmapper.c:619,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/libdevmapper.c:620,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/lib/libdevmapper.c:624,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:624,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/libdevmapper.c:625,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:630,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:630,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:631,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:631,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:632,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:633,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:637,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:639,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:642,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:646,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 69
    argCount: 2
    argNames:
    - tgt
    - flags
    argTypes:
    - struct dm_target*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 648
    functionName: get_dm_crypt_params
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - crypt_safe_alloc
    - snprintf
    - cipher_dm2c
    - crypt_volume_key_description
    - crypt_volume_key_kernel_key_type
    - crypt_bytes_to_hex
    - crypt_volume_key_get_key
    - device_block_path
    - crypt_safe_free
    - key_type_name
    - int_log10
    - _uf
    - strlen
    - crypt_is_cipher_null
    linkageType: ''
    returnType: char
    signature: char *get_dm_crypt_params(const struct dm_target *tgt, uint32_t flags)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:686,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:686,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:687,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:693,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:695,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:702,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:703,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:708,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:716,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/lib/libdevmapper.c:730,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/lib/libdevmapper.c:734,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:738,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:738,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:739,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:739,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:740,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:740,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:741,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:741,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:741,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:742,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:744,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:748,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:750,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:751,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:757,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:761,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:762,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:763,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:764,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 80
    argCount: 2
    argNames:
    - tgt
    - flags
    argTypes:
    - struct dm_target*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 766
    functionName: get_dm_verity_params
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - snprintf
    - crypt_bytes_to_hex
    - device_block_path
    - crypt_safe_free
    - strlen
    linkageType: ''
    returnType: char
    signature: char *get_dm_verity_params(const struct dm_target *tgt, uint32_t flags)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:777,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:778,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:780,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:781,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:783,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:784,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:785,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:785,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:786,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:786,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:789,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:790,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:791,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:792,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:793,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/lib/libdevmapper.c:801,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:801,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/libdevmapper.c:802,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:808,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:810,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/lib/libdevmapper.c:819,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:819,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/libdevmapper.c:820,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:826,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:828,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/lib/libdevmapper.c:837,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:837,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/libdevmapper.c:838,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:844,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:846,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:878,1
    - Dst: _uf
      Src: /src/cryptsetup/lib/libdevmapper.c:879,1
    - Dst: _uf
      Src: /src/cryptsetup/lib/libdevmapper.c:881,1
    - Dst: _uf
      Src: /src/cryptsetup/lib/libdevmapper.c:885,1
    - Dst: _uf
      Src: /src/cryptsetup/lib/libdevmapper.c:889,1
    - Dst: _uf
      Src: /src/cryptsetup/lib/libdevmapper.c:891,1
    - Dst: _uf
      Src: /src/cryptsetup/lib/libdevmapper.c:893,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:905,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:920,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:921,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:928,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:929,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:930,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:931,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:933,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 113
    argCount: 2
    argNames:
    - tgt
    - flags
    argTypes:
    - struct dm_target*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 936
    functionName: get_dm_integrity_params
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - crypt_safe_alloc
    - snprintf
    - crypt_bytes_to_hex
    - crypt_volume_key_get_key
    - device_block_path
    - crypt_safe_free
    - _uf
    - strlen
    linkageType: ''
    returnType: char
    signature: char *get_dm_integrity_params(const struct dm_target *tgt, uint32_t
      flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:942,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:942,1
    - Dst: int_log10
      Src: /src/cryptsetup/lib/libdevmapper.c:942,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:944,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:948,1
    - Dst: device_block_path
      Src: /src/cryptsetup/lib/libdevmapper.c:949,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:952,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - tgt
    argTypes:
    - struct dm_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 957
    functionName: get_dm_linear_params
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - snprintf
    - device_block_path
    - crypt_safe_free
    - int_log10
    - strlen
    linkageType: ''
    returnType: char
    signature: char *get_dm_linear_params(const struct dm_target *tgt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:961,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 959
    functionDepth: 1
    functionLinenumber: 959
    functionLinenumberEnd: 967
    functionName: get_dm_zero_params
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    linkageType: ''
    returnType: char
    signature: char *get_dm_zero_params(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _dm_use_udev
      Src: /src/cryptsetup/lib/libdevmapper.c:976,1
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:979,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:982,1
    - Dst: dm_task_retry_remove
      Src: /src/cryptsetup/lib/libdevmapper.c:986,1
    - Dst: dm_task_deferred_remove
      Src: /src/cryptsetup/lib/libdevmapper.c:990,1
    - Dst: _dm_task_set_cookie
      Src: /src/cryptsetup/lib/libdevmapper.c:993,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:996,1
    - Dst: _dm_udev_wait
      Src: /src/cryptsetup/lib/libdevmapper.c:999,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:1001,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 3
    argNames:
    - name
    - udev_wait
    - deferred
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 1003
    functionName: _dm_remove
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - _dm_task_set_cookie
    - _dm_use_udev
    - dm_task_set_name
    - dm_task_run
    - dm_task_destroy
    - dm_task_create
    - dm_task_deferred_remove
    - dm_task_retry_remove
    - _dm_udev_wait
    linkageType: ''
    returnType: int
    signature: int _dm_remove(const char *name, int udev_wait, int deferred)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:1010,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:1013,1
    - Dst: dm_task_skip_lockfs
      Src: /src/cryptsetup/lib/libdevmapper.c:1017,1
    - Dst: dm_task_no_flush
      Src: /src/cryptsetup/lib/libdevmapper.c:1021,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:1024,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:1026,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 17
    argCount: 3
    argNames:
    - task
    - name
    - dmflags
    argTypes:
    - int
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1005
    functionDepth: 0
    functionLinenumber: 1005
    functionLinenumberEnd: 1028
    functionName: _dm_simple
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_task_set_name
    - dm_task_run
    - dm_task_skip_lockfs
    - dm_task_no_flush
    - dm_task_create
    - dm_task_destroy
    linkageType: ''
    returnType: int
    signature: int _dm_simple(int task, const char *name, uint64_t dmflags)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:1037,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:1040,1
    - Dst: dm_task_add_target
      Src: /src/cryptsetup/lib/libdevmapper.c:1043,1
    - Dst: UINT64_C
      Src: /src/cryptsetup/lib/libdevmapper.c:1043,1
    - Dst: dm_task_set_ro
      Src: /src/cryptsetup/lib/libdevmapper.c:1046,1
    - Dst: dm_task_no_open_count
      Src: /src/cryptsetup/lib/libdevmapper.c:1049,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:1052,1
    - Dst: _dm_resume_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1055,1
    - Dst: _dm_simple
      Src: /src/cryptsetup/lib/libdevmapper.c:1056,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:1062,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 2
    argNames:
    - name
    - size
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1032
    functionDepth: 1
    functionLinenumber: 1032
    functionLinenumberEnd: 1064
    functionName: _error_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - UINT64_C
    - dm_task_set_ro
    - dm_task_add_target
    - _dm_resume_device
    - dm_task_set_name
    - dm_task_run
    - _dm_simple
    - dm_task_destroy
    - dm_task_create
    - dm_task_no_open_count
    linkageType: ''
    returnType: int
    signature: int _error_device(const char *name, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1074,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1077,1
    - Dst: _error_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1077,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/libdevmapper.c:1082,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1084,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1066
    functionDepth: 4
    functionLinenumber: 1066
    functionLinenumberEnd: 1087
    functionName: dm_error_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - dm_targets_free
    - _error_device
    - dm_init_context
    - dm_exit_context
    - dm_query_device
    linkageType: ''
    returnType: int
    signature: int dm_error_device(struct crypt_device *cd, const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1096,1
    - Dst: _dm_simple
      Src: /src/cryptsetup/lib/libdevmapper.c:1099,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1089
    functionDepth: 4
    functionLinenumber: 1089
    functionLinenumberEnd: 1107
    functionName: dm_clear_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - dm_exit_context
    - _dm_simple
    - dm_init_context
    linkageType: ''
    returnType: int
    signature: int dm_clear_device(struct crypt_device *cd, const char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1121,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:1124,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1125,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1125,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1126,1
    - Dst: _dm_remove
      Src: /src/cryptsetup/lib/libdevmapper.c:1131,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1133,1
    - Dst: sleep
      Src: /src/cryptsetup/lib/libdevmapper.c:1135,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1143,1
    - Dst: _error_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1144,1
    - Dst: dm_task_update_nodes
      Src: /src/cryptsetup/lib/libdevmapper.c:1151,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1152,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 3
    argNames:
    - cd
    - name
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1109
    functionDepth: 4
    functionLinenumber: 1109
    functionLinenumberEnd: 1155
    functionName: dm_remove_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 4
    functionsReached:
    - dm_task_update_nodes
    - sleep
    - _
    - _dm_remove
    - _error_device
    - dm_init_context
    - dm_flags
    - log_err
    - dm_exit_context
    - log_dbg
    - dm_query_device
    linkageType: ''
    returnType: int
    signature: int dm_remove_device(struct crypt_device *cd, const char *name, uint32_t
      flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: uuid_parse
      Src: /src/cryptsetup/lib/libdevmapper.c:1173,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1174,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:1185,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1192,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1194,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1194,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 6
    argNames:
    - cd
    - name
    - type
    - uuid
    - buf
    - buflen
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1164
    functionDepth: 1
    functionLinenumber: 1164
    functionLinenumberEnd: 1197
    functionName: dm_prepare_uuid
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - _
    - snprintf
    - log_dbg
    - log_err
    - uuid_parse
    linkageType: ''
    returnType: int
    signature: "int dm_prepare_uuid(struct crypt_device *cd, const char *name, const
      char *type,\n\t\t\t    const char *uuid, char *buf, size_t buflen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dm_prepare_uuid
      Src: /src/cryptsetup/lib/libdevmapper.c:1205,1
    - Dst: strrchr
      Src: /src/cryptsetup/lib/libdevmapper.c:1208,1
    - Dst: lookup_by_disk_id
      Src: /src/cryptsetup/lib/libdevmapper.c:1216,1
    - Dst: lookup_by_sysfs_uuid_field
      Src: /src/cryptsetup/lib/libdevmapper.c:1221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - cd
    - uuid
    - type
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1199
    functionDepth: 2
    functionLinenumber: 1199
    functionLinenumberEnd: 1224
    functionName: lookup_dm_dev_by_uuid
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - lookup_by_disk_id
    - strrchr
    - dm_prepare_uuid
    - lookup_by_sysfs_uuid_field
    linkageType: ''
    returnType: int
    signature: int lookup_dm_dev_by_uuid(struct crypt_device *cd, const char *uuid,
      const char *type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_add_target
      Src: /src/cryptsetup/lib/libdevmapper.c:1252,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - dmt
    - dmd
    argTypes:
    - struct dm_task*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1259
    functionName: _add_dm_targets
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_task_add_target
    linkageType: ''
    returnType: int
    signature: int _add_dm_targets(struct dm_task *dmt, struct crypt_dm_active_device
      *dmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:1266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - dmd
    argTypes:
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1261
    functionDepth: 1
    functionLinenumber: 1261
    functionLinenumberEnd: 1270
    functionName: _destroy_dm_targets_params
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - crypt_safe_free
    linkageType: ''
    returnType: void
    signature: void _destroy_dm_targets_params(struct crypt_dm_active_device *dmd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_dm_crypt_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1279,1
    - Dst: get_dm_verity_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1281,1
    - Dst: get_dm_integrity_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1283,1
    - Dst: get_dm_linear_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1285,1
    - Dst: get_dm_zero_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1287,1
    - Dst: _destroy_dm_targets_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1302,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - dmd
    argTypes:
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1272
    functionDepth: 2
    functionLinenumber: 1272
    functionLinenumberEnd: 1304
    functionName: _create_dm_targets_params
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - get_dm_verity_params
    - get_dm_zero_params
    - _destroy_dm_targets_params
    - get_dm_integrity_params
    - get_dm_linear_params
    - get_dm_crypt_params
    linkageType: ''
    returnType: int
    signature: int _create_dm_targets_params(struct crypt_dm_active_device *dmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/libdevmapper.c:1317,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/libdevmapper.c:1317,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1318,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/libdevmapper.c:1318,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1322,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/libdevmapper.c:1322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - cd
    - device
    - type
    argTypes:
    - struct crypt_device*
    - struct device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1306
    functionDepth: 1
    functionLinenumber: 1306
    functionLinenumberEnd: 1324
    functionName: device_disappeared
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - device_path
    - stat
    linkageType: ''
    returnType: bool
    signature: bool device_disappeared(struct crypt_device *cd, struct device *device,
      const char *type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: device_disappeared
      Src: /src/cryptsetup/lib/libdevmapper.c:1331,1
    - Dst: device_disappeared
      Src: /src/cryptsetup/lib/libdevmapper.c:1334,1
    - Dst: device_disappeared
      Src: /src/cryptsetup/lib/libdevmapper.c:1336,1
    - Dst: device_disappeared
      Src: /src/cryptsetup/lib/libdevmapper.c:1339,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - cd
    - dmd
    argTypes:
    - struct crypt_device*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1326
    functionDepth: 2
    functionLinenumber: 1326
    functionLinenumberEnd: 1346
    functionName: dm_table_devices_disappeared
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - device_disappeared
    linkageType: ''
    returnType: bool
    signature: bool dm_table_devices_disappeared(struct crypt_device *cd, struct crypt_dm_active_device
      *dmd)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: dm_prepare_uuid
      Src: /src/cryptsetup/lib/libdevmapper.c:1362,1
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:1365,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:1368,1
    - Dst: dm_task_set_uuid
      Src: /src/cryptsetup/lib/libdevmapper.c:1371,1
    - Dst: dm_task_secure_data
      Src: /src/cryptsetup/lib/libdevmapper.c:1374,1
    - Dst: dm_task_set_ro
      Src: /src/cryptsetup/lib/libdevmapper.c:1376,1
    - Dst: _create_dm_targets_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1379,1
    - Dst: _add_dm_targets
      Src: /src/cryptsetup/lib/libdevmapper.c:1383,1
    - Dst: device_read_ahead
      Src: /src/cryptsetup/lib/libdevmapper.c:1390,1
    - Dst: dm_task_set_read_ahead
      Src: /src/cryptsetup/lib/libdevmapper.c:1391,1
    - Dst: _dm_use_udev
      Src: /src/cryptsetup/lib/libdevmapper.c:1394,1
    - Dst: _dm_task_set_cookie
      Src: /src/cryptsetup/lib/libdevmapper.c:1394,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:1397,1
    - Dst: dm_task_get_errno
      Src: /src/cryptsetup/lib/libdevmapper.c:1398,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1399,1
    - Dst: dm_status_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1406,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1407,1
    - Dst: dm_task_get_errno
      Src: /src/cryptsetup/lib/libdevmapper.c:1414,1
    - Dst: dm_task_get_errno
      Src: /src/cryptsetup/lib/libdevmapper.c:1425,1
    - Dst: dm_table_devices_disappeared
      Src: /src/cryptsetup/lib/libdevmapper.c:1429,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1433,1
    - Dst: dm_task_get_info
      Src: /src/cryptsetup/lib/libdevmapper.c:1438,1
    - Dst: _dm_use_udev
      Src: /src/cryptsetup/lib/libdevmapper.c:1441,1
    - Dst: _dm_udev_wait
      Src: /src/cryptsetup/lib/libdevmapper.c:1442,1
    - Dst: _dm_remove
      Src: /src/cryptsetup/lib/libdevmapper.c:1447,1
    - Dst: _dm_use_udev
      Src: /src/cryptsetup/lib/libdevmapper.c:1450,1
    - Dst: _dm_udev_wait
      Src: /src/cryptsetup/lib/libdevmapper.c:1451,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:1454,1
    - Dst: dm_task_update_nodes
      Src: /src/cryptsetup/lib/libdevmapper.c:1456,1
    - Dst: _dm_check_versions
      Src: /src/cryptsetup/lib/libdevmapper.c:1459,1
    - Dst: _destroy_dm_targets_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1461,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 90
    argCount: 4
    argNames:
    - cd
    - name
    - type
    - dmd
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1348
    functionDepth: 3
    functionLinenumber: 1348
    functionLinenumberEnd: 1464
    functionName: _dm_create_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_table_devices_disappeared
    - dm_task_destroy
    - dm_task_get_errno
    - dm_task_get_info
    - _dm_remove
    - dm_task_set_name
    - _destroy_dm_targets_params
    - log_dbg
    - dm_task_update_nodes
    - dm_task_set_uuid
    - _dm_use_udev
    - dm_task_create
    - dm_prepare_uuid
    - dm_task_set_read_ahead
    - _dm_udev_wait
    - dm_task_set_ro
    - device_read_ahead
    - _dm_task_set_cookie
    - _create_dm_targets_params
    - _add_dm_targets
    - dm_task_run
    - dm_status_device
    - _dm_check_versions
    - dm_task_secure_data
    linkageType: ''
    returnType: int
    signature: "int _dm_create_device(struct crypt_device *cd, const char *name, const
      char *type,\n\t\t\t     struct crypt_dm_active_device *dmd)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:1476,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:1479,1
    - Dst: dm_task_skip_lockfs
      Src: /src/cryptsetup/lib/libdevmapper.c:1482,1
    - Dst: dm_task_no_flush
      Src: /src/cryptsetup/lib/libdevmapper.c:1485,1
    - Dst: _dm_use_udev
      Src: /src/cryptsetup/lib/libdevmapper.c:1488,1
    - Dst: _dm_task_set_cookie
      Src: /src/cryptsetup/lib/libdevmapper.c:1488,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:1491,1
    - Dst: _dm_use_udev
      Src: /src/cryptsetup/lib/libdevmapper.c:1494,1
    - Dst: _dm_udev_wait
      Src: /src/cryptsetup/lib/libdevmapper.c:1495,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:1497,1
    - Dst: dm_task_update_nodes
      Src: /src/cryptsetup/lib/libdevmapper.c:1499,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 26
    argCount: 2
    argNames:
    - name
    - dmflags
    argTypes:
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1466
    functionDepth: 1
    functionLinenumber: 1466
    functionLinenumberEnd: 1502
    functionName: _dm_resume_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - dm_task_update_nodes
    - _dm_task_set_cookie
    - _dm_use_udev
    - dm_task_set_name
    - dm_task_run
    - dm_task_skip_lockfs
    - dm_task_no_flush
    - dm_task_create
    - dm_task_destroy
    - _dm_udev_wait
    linkageType: ''
    returnType: int
    signature: int _dm_resume_device(const char *name, uint64_t dmflags)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:1512,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:1515,1
    - Dst: dm_task_secure_data
      Src: /src/cryptsetup/lib/libdevmapper.c:1518,1
    - Dst: dm_task_set_ro
      Src: /src/cryptsetup/lib/libdevmapper.c:1520,1
    - Dst: _create_dm_targets_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1523,1
    - Dst: _add_dm_targets
      Src: /src/cryptsetup/lib/libdevmapper.c:1527,1
    - Dst: device_read_ahead
      Src: /src/cryptsetup/lib/libdevmapper.c:1534,1
    - Dst: dm_task_set_read_ahead
      Src: /src/cryptsetup/lib/libdevmapper.c:1535,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:1539,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:1543,1
    - Dst: _dm_check_versions
      Src: /src/cryptsetup/lib/libdevmapper.c:1546,1
    - Dst: _destroy_dm_targets_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1548,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 34
    argCount: 3
    argNames:
    - cd
    - name
    - dmd
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1504
    functionDepth: 3
    functionLinenumber: 1504
    functionLinenumberEnd: 1551
    functionName: _dm_reload_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_task_set_ro
    - device_read_ahead
    - _create_dm_targets_params
    - dm_task_set_name
    - _add_dm_targets
    - dm_task_run
    - _dm_check_versions
    - _destroy_dm_targets_params
    - dm_task_secure_data
    - dm_task_destroy
    - dm_task_create
    - dm_task_set_read_ahead
    linkageType: ''
    returnType: int
    signature: "int _dm_reload_device(struct crypt_device *cd, const char *name,\n\t\t\t
      \    struct crypt_dm_active_device *dmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:1563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - vp
    argTypes:
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1553
    functionDepth: 0
    functionLinenumber: 1553
    functionLinenumberEnd: 1564
    functionName: crypt_free_verity_params
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_free_verity_params(struct crypt_params_verity *vp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:1570,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:1575,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:1578,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:1581,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:1583,1
    - Dst: crypt_free_verity_params
      Src: /src/cryptsetup/lib/libdevmapper.c:1586,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:1587,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1598,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1598,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:1602,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - cd
    - tgt
    argTypes:
    - struct crypt_device*
    - struct dm_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1566
    functionDepth: 2
    functionLinenumber: 1566
    functionLinenumberEnd: 1603
    functionName: _dm_target_free_query_path
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - device_free
    - _
    - crypt_free_verity_params
    - crypt_free_volume_key
    - log_err
    linkageType: ''
    returnType: void
    signature: void _dm_target_free_query_path(struct crypt_device *cd, struct dm_target
      *tgt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _dm_target_free_query_path
      Src: /src/cryptsetup/lib/libdevmapper.c:1611,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:1614,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/libdevmapper.c:1614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - cd
    - tgt
    argTypes:
    - struct crypt_device*
    - struct dm_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1605
    functionDepth: 3
    functionLinenumber: 1605
    functionLinenumberEnd: 1615
    functionName: _dm_target_erase
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - _dm_target_free_query_path
    - CONST_CAST
    - free
    linkageType: ''
    returnType: void
    signature: void _dm_target_erase(struct crypt_device *cd, struct dm_target *tgt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _dm_target_erase
      Src: /src/cryptsetup/lib/libdevmapper.c:1621,1
    - Dst: _dm_target_erase
      Src: /src/cryptsetup/lib/libdevmapper.c:1626,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:1627,1
    - Dst: memset
      Src: /src/cryptsetup/lib/libdevmapper.c:1630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - dmd
    argTypes:
    - struct crypt_device*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1617
    functionDepth: 4
    functionLinenumber: 1617
    functionLinenumberEnd: 1631
    functionName: dm_targets_free
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 15
    functionsReached:
    - _dm_target_erase
    - memset
    - free
    linkageType: ''
    returnType: void
    signature: void dm_targets_free(struct crypt_device *cd, struct crypt_dm_active_device
      *dmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/libdevmapper.c:1639,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - first
    - count
    argTypes:
    - struct dm_target*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1633
    functionDepth: 1
    functionLinenumber: 1633
    functionLinenumberEnd: 1646
    functionName: dm_targets_allocate
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - crypt_zalloc
    linkageType: ''
    returnType: int
    signature: int dm_targets_allocate(struct dm_target *first, unsigned count)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1655,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1663,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1671,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1679,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1687,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - cd
    - dmd_flags
    - dmt_flags
    argTypes:
    - struct crypt_device*
    - uint32_t*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1648
    functionDepth: 0
    functionLinenumber: 1648
    functionLinenumberEnd: 1693
    functionName: check_retry
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - log_dbg
    linkageType: ''
    returnType: int
    signature: int check_retry(struct crypt_device *cd, uint32_t *dmd_flags, uint64_t
      dmt_flags)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1705,1
    - Dst: _dm_create_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1708,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:1712,1
    - Dst: check_retry
      Src: /src/cryptsetup/lib/libdevmapper.c:1716,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1717,1
    - Dst: _dm_create_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1718,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1725,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1725,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1731,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1731,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1740,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1740,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1746,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1746,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1752,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1752,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1758,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1758,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1764,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1764,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1770,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1770,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1774,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1774,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1779,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1779,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1783,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1783,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1790,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1790,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1796,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1796,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1802,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1802,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1808,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1808,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1814,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1814,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/libdevmapper.c:1822,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/libdevmapper.c:1823,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1824,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1826,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 91
    argCount: 4
    argNames:
    - cd
    - name
    - type
    - dmd
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1828
      start: 1695
    functionDepth: 4
    functionLinenumber: 1695
    functionLinenumberEnd: 1828
    functionName: dm_create_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 4
    functionsReached:
    - _
    - dm_init_context
    - dm_flags
    - log_dbg
    - log_err
    - dm_exit_context
    - check_retry
    - single_segment
    - _dm_create_device
    - crypt_is_cipher_null
    linkageType: ''
    returnType: int
    signature: "int dm_create_device(struct crypt_device *cd, const char *name,\n\t\t
      \    const char *type,\n\t\t     struct crypt_dm_active_device *dmd)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1839,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:1842,1
    - Dst: _dm_reload_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1845,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:1849,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1850,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1850,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:1852,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1853,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1853,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:1855,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1856,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1856,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:1858,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:1859,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:1859,1
    - Dst: _dm_resume_device
      Src: /src/cryptsetup/lib/libdevmapper.c:1863,1
    - Dst: act2dmflags
      Src: /src/cryptsetup/lib/libdevmapper.c:1863,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1865,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 22
    argCount: 5
    argNames:
    - cd
    - name
    - dmd
    - dmflags
    - resume
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_dm_active_device*
    - uint64_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1830
    functionDepth: 4
    functionLinenumber: 1830
    functionLinenumberEnd: 1867
    functionName: dm_reload_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 3
    functionsReached:
    - _
    - _dm_resume_device
    - _dm_reload_device
    - dm_init_context
    - dm_flags
    - log_err
    - act2dmflags
    - dm_exit_context
    linkageType: ''
    returnType: int
    signature: "int dm_reload_device(struct crypt_device *cd, const char *name,\n\t\t
      \    struct crypt_dm_active_device *dmd, uint64_t dmflags, unsigned resume)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:1877,1
    - Dst: dm_task_no_flush
      Src: /src/cryptsetup/lib/libdevmapper.c:1880,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:1883,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:1886,1
    - Dst: dm_task_get_info
      Src: /src/cryptsetup/lib/libdevmapper.c:1889,1
    - Dst: dm_get_next_target
      Src: /src/cryptsetup/lib/libdevmapper.c:1898,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:1904,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:1908,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:1909,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:1910,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:1911,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:1912,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:1913,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:1917,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:1920,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 38
    argCount: 4
    argNames:
    - name
    - dmi
    - target
    - status_line
    argTypes:
    - char*
    - struct dm_info*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1923
      start: 1869
    functionDepth: 0
    functionLinenumber: 1869
    functionLinenumberEnd: 1923
    functionName: dm_status_dmi
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_get_next_target
    - dm_task_get_info
    - dm_task_set_name
    - dm_task_run
    - dm_task_no_flush
    - dm_task_create
    - strdup
    - dm_task_destroy
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int dm_status_dmi(const char *name, struct dm_info *dmi,\n\t\t\t  const
      char *target, char **status_line)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/cryptsetup/lib/libdevmapper.c:1935,1
    - Dst: stat
      Src: /src/cryptsetup/lib/libdevmapper.c:1935,1
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1938,1
    - Dst: dm_status_dmi
      Src: /src/cryptsetup/lib/libdevmapper.c:1940,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1941,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1947
      start: 1925
    functionDepth: 4
    functionLinenumber: 1925
    functionLinenumberEnd: 1947
    functionName: dm_status_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 4
    functionsReached:
    - dm_init_context
    - dm_exit_context
    - stat
    - dm_status_dmi
    - strchr
    linkageType: ''
    returnType: int
    signature: int dm_status_device(struct crypt_device *cd, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1954,1
    - Dst: dm_status_dmi
      Src: /src/cryptsetup/lib/libdevmapper.c:1956,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1957,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1949
    functionDepth: 4
    functionLinenumber: 1949
    functionLinenumberEnd: 1963
    functionName: dm_status_suspended
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 3
    functionsReached:
    - dm_status_dmi
    - dm_exit_context
    - dm_init_context
    linkageType: ''
    returnType: int
    signature: int dm_status_suspended(struct crypt_device *cd, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dm_status_dmi
      Src: /src/cryptsetup/lib/libdevmapper.c:1971,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:1973,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:1977,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:1979,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1965
    functionDepth: 1
    functionLinenumber: 1965
    functionLinenumberEnd: 1982
    functionName: _dm_status_verity_ok
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_status_dmi
    - free
    - log_dbg
    linkageType: ''
    returnType: int
    signature: int _dm_status_verity_ok(struct crypt_device *cd, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1988,1
    - Dst: _dm_status_verity_ok
      Src: /src/cryptsetup/lib/libdevmapper.c:1990,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:1991,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1993
      start: 1984
    functionDepth: 4
    functionLinenumber: 1984
    functionLinenumberEnd: 1993
    functionName: dm_status_verity_ok
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - dm_exit_context
    - _dm_status_verity_ok
    - dm_init_context
    linkageType: ''
    returnType: int
    signature: int dm_status_verity_ok(struct crypt_device *cd, const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:2002,1
    - Dst: dm_status_dmi
      Src: /src/cryptsetup/lib/libdevmapper.c:2005,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:2006,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2008,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2015,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2016,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:2020,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2025,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - cd
    - name
    - repaired
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2027
      start: 1995
    functionDepth: 4
    functionLinenumber: 1995
    functionLinenumberEnd: 2027
    functionName: dm_status_verity_repaired
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - free
    - dm_init_context
    - log_dbg
    - dm_exit_context
    - sscanf
    - dm_status_dmi
    linkageType: ''
    returnType: int
    signature: int dm_status_verity_repaired(struct crypt_device *cd, const char *name,
      uint64_t *repaired)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:2035,1
    - Dst: dm_status_dmi
      Src: /src/cryptsetup/lib/libdevmapper.c:2038,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2040,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:2041,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:2045,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2046,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2047,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:2048,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - cd
    - name
    - count
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2051
      start: 2029
    functionDepth: 4
    functionLinenumber: 2029
    functionLinenumberEnd: 2051
    functionName: dm_status_integrity_failures
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - free
    - dm_init_context
    - log_dbg
    - dm_exit_context
    - strtoull
    - dm_status_dmi
    linkageType: ''
    returnType: int
    signature: int dm_status_integrity_failures(struct crypt_device *cd, const char
      *name, uint64_t *count)
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2074,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2078,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2081,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2089,1
    - Dst: crypt_lookup_dev
      Src: /src/cryptsetup/lib/libdevmapper.c:2091,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2092,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2093,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2103,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2115,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2123,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2124,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2126,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2128,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2130,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2132,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2134,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2136,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2138,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/libdevmapper.c:2140,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:2140,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2144,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2146,1
    - Dst: crypt_capi_to_cipher
      Src: /src/cryptsetup/lib/libdevmapper.c:2159,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2172,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:2175,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2177,1
    - Dst: strpbrk
      Src: /src/cryptsetup/lib/libdevmapper.c:2188,1
    - Dst: strpbrk
      Src: /src/cryptsetup/lib/libdevmapper.c:2191,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/libdevmapper.c:2194,1
    - Dst: crypt_volume_key_set_description
      Src: /src/cryptsetup/lib/libdevmapper.c:2197,1
    - Dst: key_type_by_name
      Src: /src/cryptsetup/lib/libdevmapper.c:2197,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2201,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:2207,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/libdevmapper.c:2208,1
    - Dst: strtoul
      Src: /src/cryptsetup/lib/libdevmapper.c:2209,1
    - Dst: crypt_volume_key_pass_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2215,1
    - Dst: memset
      Src: /src/cryptsetup/lib/libdevmapper.c:2219,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:2219,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2231,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2232,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2233,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2234,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2235,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 164
    argCount: 5
    argNames:
    - cd
    - get_flags
    - params
    - tgt
    - act_flags
    argTypes:
    - struct crypt_device*
    - uint64_t
    - char*
    - struct dm_target*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2237
      start: 2054
    functionDepth: 4
    functionLinenumber: 2054
    functionLinenumberEnd: 2237
    functionName: _dm_target_query_crypt
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - key_type_by_name
    - memset
    - crypt_safe_alloc
    - device_free
    - memcpy
    - strtoul
    - crypt_volume_key_pass_safe_alloc
    - strcasecmp
    - free
    - strtoull
    - strlen
    - crypt_volume_key_length
    - crypt_safe_memcpy
    - crypt_free_volume_key
    - crypt_volume_key_set_description
    - crypt_safe_free
    - sscanf
    - strsep
    - strpbrk
    - device_alloc
    - crypt_lookup_dev
    - crypt_capi_to_cipher
    - crypt_alloc_volume_key
    - strchr
    linkageType: ''
    returnType: int
    signature: "int _dm_target_query_crypt(struct crypt_device *cd, uint64_t get_flags,\n\t\t\t\t
      \ char *params, struct dm_target *tgt,\n\t\t\t\t  uint32_t *act_flags)"
  - BBCount: 62
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2257,1
    - Dst: strtoul
      Src: /src/cryptsetup/lib/libdevmapper.c:2267,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2275,1
    - Dst: crypt_lookup_dev
      Src: /src/cryptsetup/lib/libdevmapper.c:2279,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2280,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2281,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2289,1
    - Dst: crypt_lookup_dev
      Src: /src/cryptsetup/lib/libdevmapper.c:2293,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2294,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2295,1
    - Dst: strtoul
      Src: /src/cryptsetup/lib/libdevmapper.c:2303,1
    - Dst: strtoul
      Src: /src/cryptsetup/lib/libdevmapper.c:2311,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2319,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2327,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2334,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:2338,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2346,1
    - Dst: crypt_hex_to_bytes
      Src: /src/cryptsetup/lib/libdevmapper.c:2349,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2358,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2361,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2363,1
    - Dst: crypt_hex_to_bytes
      Src: /src/cryptsetup/lib/libdevmapper.c:2367,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2382,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2392,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2393,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2395,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2397,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2399,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2400,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2402,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2404,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2406,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2408,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2409,1
    - Dst: crypt_lookup_dev
      Src: /src/cryptsetup/lib/libdevmapper.c:2410,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2412,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2414,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2419,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2422,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2424,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2425,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2432,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2433,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2438,1
    - Dst: strtoul
      Src: /src/cryptsetup/lib/libdevmapper.c:2439,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2445,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2446,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:2450,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2489,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2490,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2491,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2492,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2493,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2494,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2495,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2496,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2497,1
    CyclomaticComplexity: 89
    EdgeCount: 89
    ICount: 232
    argCount: 5
    argNames:
    - cd
    - get_flags
    - params
    - tgt
    - act_flags
    argTypes:
    - struct crypt_device*
    - uint64_t
    - char*
    - struct dm_target*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2499
      start: 2239
    functionDepth: 4
    functionLinenumber: 2239
    functionLinenumberEnd: 2499
    functionName: _dm_target_query_verity
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - device_free
    - strcasecmp
    - free
    - strtoul
    - crypt_hex_to_bytes
    - strdup
    - strtoull
    - strsep
    - strcmp
    - crypt_zalloc
    - device_alloc
    - crypt_lookup_dev
    linkageType: ''
    returnType: int
    signature: "int _dm_target_query_verity(struct crypt_device *cd,\n\t\t\t\t   uint64_t
      get_flags,\n\t\t\t           char *params,\n\t\t\t           struct dm_target
      *tgt,\n\t\t\t\t   uint32_t *act_flags)"
  - BBCount: 70
    BranchProfiles: []
    Callsites:
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2523,1
    - Dst: crypt_lookup_dev
      Src: /src/cryptsetup/lib/libdevmapper.c:2525,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2526,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2527,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2537,1
    - Dst: strtoul
      Src: /src/cryptsetup/lib/libdevmapper.c:2543,1
    - Dst: toupper
      Src: /src/cryptsetup/lib/libdevmapper.c:2549,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2568,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2578,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2579,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2581,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2583,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2588,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2590,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2593,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2595,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/libdevmapper.c:2597,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2599,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2601,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:2603,1
    - Dst: crypt_hex_to_bytes
      Src: /src/cryptsetup/lib/libdevmapper.c:2611,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2619,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2623,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2627,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2631,1
    - Dst: crypt_lookup_dev
      Src: /src/cryptsetup/lib/libdevmapper.c:2633,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2634,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2635,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2639,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2641,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:2643,1
    - Dst: crypt_hex_to_bytes
      Src: /src/cryptsetup/lib/libdevmapper.c:2651,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2659,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2663,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2667,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2671,1
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2673,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:2675,1
    - Dst: crypt_hex_to_bytes
      Src: /src/cryptsetup/lib/libdevmapper.c:2683,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2691,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2695,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2699,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2703,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2705,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2707,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2709,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2711,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2713,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2743,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2744,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2745,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2746,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2747,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2748,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2749,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/libdevmapper.c:2750,1
    CyclomaticComplexity: 104
    EdgeCount: 104
    ICount: 243
    argCount: 5
    argNames:
    - cd
    - get_flags
    - params
    - tgt
    - act_flags
    argTypes:
    - struct crypt_device*
    - uint64_t
    - char*
    - struct dm_target*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2752
      start: 2501
    functionDepth: 4
    functionLinenumber: 2501
    functionLinenumberEnd: 2752
    functionName: _dm_target_query_integrity
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - device_free
    - free
    - crypt_free_volume_key
    - crypt_alloc_volume_key
    - strncmp
    - strtoul
    - crypt_hex_to_bytes
    - crypt_safe_free
    - toupper
    - strtoull
    - sscanf
    - strsep
    - strdup
    - strcmp
    - device_alloc
    - crypt_lookup_dev
    linkageType: ''
    returnType: int
    signature: "int _dm_target_query_integrity(struct crypt_device *cd,\n\t\t\t     uint64_t
      get_flags,\n\t\t\t     char *params,\n\t\t\t     struct dm_target *tgt,\n\t\t\t
      \    uint32_t *act_flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strsep
      Src: /src/cryptsetup/lib/libdevmapper.c:2763,1
    - Dst: crypt_lookup_dev
      Src: /src/cryptsetup/lib/libdevmapper.c:2765,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:2766,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:2767,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/libdevmapper.c:2777,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2790,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - cd
    - tgt
    - get_flags
    - params
    argTypes:
    - struct crypt_device*
    - struct dm_target*
    - uint64_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2792
      start: 2754
    functionDepth: 4
    functionLinenumber: 2754
    functionLinenumberEnd: 2792
    functionName: _dm_target_query_linear
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - device_free
    - free
    - strtoull
    - strsep
    - device_alloc
    - crypt_lookup_dev
    linkageType: ''
    returnType: int
    signature: "int _dm_target_query_linear(struct crypt_device *cd, struct dm_target
      *tgt,\n\t\t\t\t   uint64_t get_flags, char *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tgt
    argTypes:
    - struct dm_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2800
      start: 2794
    functionDepth: 0
    functionLinenumber: 2794
    functionLinenumberEnd: 2800
    functionName: _dm_target_query_error
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _dm_target_query_error(struct dm_target *tgt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tgt
    argTypes:
    - struct dm_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2808
      start: 2802
    functionDepth: 0
    functionLinenumber: 2802
    functionLinenumberEnd: 2808
    functionName: _dm_target_query_zero
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _dm_target_query_zero(struct dm_target *tgt)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2821,1
    - Dst: _dm_target_query_crypt
      Src: /src/cryptsetup/lib/libdevmapper.c:2822,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2823,1
    - Dst: _dm_target_query_verity
      Src: /src/cryptsetup/lib/libdevmapper.c:2824,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2825,1
    - Dst: _dm_target_query_integrity
      Src: /src/cryptsetup/lib/libdevmapper.c:2826,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2827,1
    - Dst: _dm_target_query_linear
      Src: /src/cryptsetup/lib/libdevmapper.c:2828,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2829,1
    - Dst: _dm_target_query_error
      Src: /src/cryptsetup/lib/libdevmapper.c:2830,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2831,1
    - Dst: _dm_target_query_zero
      Src: /src/cryptsetup/lib/libdevmapper.c:2832,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 8
    argNames:
    - cd
    - tgt
    - start
    - length
    - target_type
    - params
    - get_flags
    - act_flags
    argTypes:
    - struct crypt_device*
    - struct dm_target*
    - uint64_t*
    - uint64_t*
    - char*
    - char*
    - uint64_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2840
      start: 2815
    functionDepth: 5
    functionLinenumber: 2815
    functionLinenumberEnd: 2840
    functionName: dm_target_query
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - _dm_target_query_linear
    - _dm_target_query_error
    - _dm_target_query_zero
    - _dm_target_query_crypt
    - _dm_target_query_verity
    - _dm_target_query_integrity
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int dm_target_query(struct crypt_device *cd, struct dm_target *tgt,
      const uint64_t *start,\n\t\t    const uint64_t *length, const char *target_type,\n\t\t
      \   char *params, uint64_t get_flags, uint32_t *act_flags)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:2856,1
    - Dst: dm_task_secure_data
      Src: /src/cryptsetup/lib/libdevmapper.c:2858,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:2860,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:2863,1
    - Dst: dm_task_get_info
      Src: /src/cryptsetup/lib/libdevmapper.c:2867,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/libdevmapper.c:2882,1
    - Dst: dm_targets_allocate
      Src: /src/cryptsetup/lib/libdevmapper.c:2887,1
    - Dst: dm_get_next_target
      Src: /src/cryptsetup/lib/libdevmapper.c:2892,1
    - Dst: dm_target_query
      Src: /src/cryptsetup/lib/libdevmapper.c:2895,1
    - Dst: _dm_status_verity_ok
      Src: /src/cryptsetup/lib/libdevmapper.c:2897,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/libdevmapper.c:2904,1
    - Dst: _
      Src: /src/cryptsetup/lib/libdevmapper.c:2904,1
    - Dst: dm_task_get_uuid
      Src: /src/cryptsetup/lib/libdevmapper.c:2918,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2922,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:2923,1
    - Dst: dm_device_has_mounted_fs
      Src: /src/cryptsetup/lib/libdevmapper.c:2929,1
    - Dst: dm_device_has_holders
      Src: /src/cryptsetup/lib/libdevmapper.c:2930,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:2935,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2938,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 76
    argCount: 4
    argNames:
    - cd
    - name
    - get_flags
    - dmd
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2941
      start: 2842
    functionDepth: 6
    functionLinenumber: 2842
    functionLinenumberEnd: 2941
    functionName: _dm_query_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_get_next_target
    - dm_task_destroy
    - dm_targets_allocate
    - dm_task_get_uuid
    - dm_task_get_info
    - dm_task_set_name
    - log_dbg
    - strdup
    - dm_device_has_holders
    - dm_targets_free
    - dm_device_has_mounted_fs
    - log_err
    - dm_task_create
    - dm_target_query
    - _
    - dm_task_run
    - _dm_status_verity_ok
    - strncmp
    - dm_task_secure_data
    linkageType: ''
    returnType: int
    signature: "int _dm_query_device(struct crypt_device *cd, const char *name,\n\t\t
      \   uint64_t get_flags, struct crypt_dm_active_device *dmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/libdevmapper.c:2951,1
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:2953,1
    - Dst: _dm_query_device
      Src: /src/cryptsetup/lib/libdevmapper.c:2956,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:2958,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - cd
    - name
    - get_flags
    - dmd
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2960
      start: 2943
    functionDepth: 7
    functionLinenumber: 2943
    functionLinenumberEnd: 2960
    functionName: dm_query_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 15
    functionsReached:
    - dm_exit_context
    - memset
    - dm_init_context
    - _dm_query_device
    linkageType: ''
    returnType: int
    signature: "int dm_query_device(struct crypt_device *cd, const char *name,\n\t\t
      \   uint64_t get_flags, struct crypt_dm_active_device *dmd)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: major
      Src: /src/cryptsetup/lib/libdevmapper.c:2975,1
    - Dst: dm_is_dm_major
      Src: /src/cryptsetup/lib/libdevmapper.c:2976,1
    - Dst: minor
      Src: /src/cryptsetup/lib/libdevmapper.c:2979,1
    - Dst: dm_device_get_name
      Src: /src/cryptsetup/lib/libdevmapper.c:2980,1
    - Dst: memset
      Src: /src/cryptsetup/lib/libdevmapper.c:2983,1
    - Dst: _dm_query_device
      Src: /src/cryptsetup/lib/libdevmapper.c:2984,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:2989,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:2989,1
    - Dst: crypt_string_in
      Src: /src/cryptsetup/lib/libdevmapper.c:2990,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/libdevmapper.c:2993,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:2999,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 6
    argNames:
    - cd
    - prefix
    - deps
    - names
    - names_offset
    - names_length
    argTypes:
    - struct crypt_device*
    - char*
    - struct dm_deps*
    - char**
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3007
      start: 2962
    functionDepth: 7
    functionLinenumber: 2962
    functionLinenumberEnd: 3007
    functionName: _process_deps
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_device_get_name
    - memset
    - dm_is_dm_major
    - _dm_query_device
    - dm_targets_free
    - crypt_string_in
    - minor
    - major
    - strncmp
    - strdup
    - strlen
    linkageType: ''
    returnType: int
    signature: "int _process_deps(struct crypt_device *cd, const char *prefix, struct
      dm_deps *deps,\n\t\t\t char **names, size_t names_offset, size_t names_length)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:3021,1
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:3025,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:3027,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:3031,1
    - Dst: dm_task_get_info
      Src: /src/cryptsetup/lib/libdevmapper.c:3035,1
    - Dst: dm_task_get_deps
      Src: /src/cryptsetup/lib/libdevmapper.c:3037,1
    - Dst: _process_deps
      Src: /src/cryptsetup/lib/libdevmapper.c:3044,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:3048,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:3059,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:3064,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:3066,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 48
    argCount: 5
    argNames:
    - cd
    - name
    - prefix
    - names
    - names_length
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3068
      start: 3009
    functionDepth: 8
    functionLinenumber: 3009
    functionLinenumberEnd: 3068
    functionName: dm_device_deps
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - dm_task_get_info
    - free
    - dm_task_set_name
    - dm_task_run
    - dm_init_context
    - _process_deps
    - dm_exit_context
    - dm_task_destroy
    - dm_task_create
    - dm_task_get_deps
    linkageType: ''
    returnType: int
    signature: "int dm_device_deps(struct crypt_device *cd, const char *name, const
      char *prefix,\n\t\t   char **names, size_t names_length)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dm_task_create
      Src: /src/cryptsetup/lib/libdevmapper.c:3075,1
    - Dst: dm_task_secure_data
      Src: /src/cryptsetup/lib/libdevmapper.c:3078,1
    - Dst: dm_task_set_name
      Src: /src/cryptsetup/lib/libdevmapper.c:3081,1
    - Dst: dm_task_set_sector
      Src: /src/cryptsetup/lib/libdevmapper.c:3084,1
    - Dst: dm_task_set_message
      Src: /src/cryptsetup/lib/libdevmapper.c:3087,1
    - Dst: dm_task_run
      Src: /src/cryptsetup/lib/libdevmapper.c:3090,1
    - Dst: dm_task_destroy
      Src: /src/cryptsetup/lib/libdevmapper.c:3092,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - name
    - msg
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3094
      start: 3070
    functionDepth: 1
    functionLinenumber: 3070
    functionLinenumberEnd: 3094
    functionName: _dm_message
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached:
    - dm_task_set_message
    - dm_task_set_name
    - dm_task_run
    - dm_task_secure_data
    - dm_task_destroy
    - dm_task_create
    - dm_task_set_sector
    linkageType: ''
    returnType: int
    signature: int _dm_message(const char *name, const char *msg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:3101,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:3105,1
    - Dst: _dm_simple
      Src: /src/cryptsetup/lib/libdevmapper.c:3114,1
    - Dst: _dm_message
      Src: /src/cryptsetup/lib/libdevmapper.c:3118,1
    - Dst: _dm_resume_device
      Src: /src/cryptsetup/lib/libdevmapper.c:3119,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:3126,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - cd
    - name
    - dmflags
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3128
      start: 3096
    functionDepth: 4
    functionLinenumber: 3096
    functionLinenumberEnd: 3128
    functionName: dm_suspend_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 2
    functionsReached:
    - _dm_resume_device
    - _dm_message
    - dm_init_context
    - dm_flags
    - dm_exit_context
    - _dm_simple
    linkageType: ''
    returnType: int
    signature: int dm_suspend_device(struct crypt_device *cd, const char *name, uint64_t
      dmflags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:3134,1
    - Dst: _dm_resume_device
      Src: /src/cryptsetup/lib/libdevmapper.c:3137,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:3139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cd
    - name
    - dmflags
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3142
      start: 3130
    functionDepth: 4
    functionLinenumber: 3130
    functionLinenumberEnd: 3142
    functionName: dm_resume_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 6
    functionsReached:
    - dm_exit_context
    - dm_init_context
    - _dm_resume_device
    linkageType: ''
    returnType: int
    signature: int dm_resume_device(struct crypt_device *cd, const char *name, uint64_t
      dmflags)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dm_init_context
      Src: /src/cryptsetup/lib/libdevmapper.c:3152,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:3152,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:3158,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/libdevmapper.c:3160,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:3161,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/libdevmapper.c:3161,1
    - Dst: int_log10
      Src: /src/cryptsetup/lib/libdevmapper.c:3161,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:3161,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:3163,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/libdevmapper.c:3165,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/libdevmapper.c:3171,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:3172,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:3172,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/libdevmapper.c:3173,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:3175,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/lib/libdevmapper.c:3176,1
    - Dst: crypt_bytes_to_hex
      Src: /src/cryptsetup/lib/libdevmapper.c:3178,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/libdevmapper.c:3178,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/libdevmapper.c:3179,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:3185,1
    - Dst: _dm_message
      Src: /src/cryptsetup/lib/libdevmapper.c:3191,1
    - Dst: _dm_resume_device
      Src: /src/cryptsetup/lib/libdevmapper.c:3192,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:3198,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/libdevmapper.c:3199,1
    - Dst: dm_exit_context
      Src: /src/cryptsetup/lib/libdevmapper.c:3200,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 3
    argNames:
    - cd
    - name
    - vk
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3202
      start: 3144
    functionDepth: 4
    functionLinenumber: 3144
    functionLinenumberEnd: 3202
    functionName: dm_resume_and_reinstate_key
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 2
    functionsReached:
    - crypt_volume_key_length
    - crypt_safe_alloc
    - crypt_volume_key_description
    - snprintf
    - _dm_message
    - _dm_resume_device
    - crypt_bytes_to_hex
    - dm_init_context
    - dm_flags
    - crypt_volume_key_get_key
    - crypt_safe_free
    - dm_exit_context
    - int_log10
    - strlen
    linkageType: ''
    returnType: int
    signature: "int dm_resume_and_reinstate_key(struct crypt_device *cd, const char
      *name,\n\t\t\t\tconst struct volume_key *vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _dm_message
      Src: /src/cryptsetup/lib/libdevmapper.c:3206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3207
      start: 3204
    functionDepth: 2
    functionLinenumber: 3204
    functionLinenumberEnd: 3207
    functionName: dm_cancel_deferred_removal
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - _dm_message
    linkageType: ''
    returnType: int
    signature: int dm_cancel_deferred_removal(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dm_dir
      Src: /src/cryptsetup/lib/libdevmapper.c:3211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3212
      start: 3209
    functionDepth: 0
    functionLinenumber: 3209
    functionLinenumberEnd: 3212
    functionName: dm_get_dir
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 4
    functionsReached:
    - dm_dir
    linkageType: ''
    returnType: char
    signature: char *dm_get_dir(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:3219,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/libdevmapper.c:3219,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/libdevmapper.c:3221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - name
    - iname
    - with_path
    argTypes:
    - char*
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3224
      start: 3214
    functionDepth: 1
    functionLinenumber: 3214
    functionLinenumberEnd: 3224
    functionName: dm_get_iname
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - dm_get_dir
    - asprintf
    linkageType: ''
    returnType: int
    signature: int dm_get_iname(const char *name, char **iname, bool with_path)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/libdevmapper.c:3236,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/libdevmapper.c:3239,1
    - Dst: dm_get_iname
      Src: /src/cryptsetup/lib/libdevmapper.c:3245,1
    - Dst: dm_get_iname
      Src: /src/cryptsetup/lib/libdevmapper.c:3248,1
    - Dst: stat
      Src: /src/cryptsetup/lib/libdevmapper.c:3251,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/libdevmapper.c:3251,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/libdevmapper.c:3254,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/libdevmapper.c:3257,1
    - Dst: dm_uuid_integrity_cmp
      Src: /src/cryptsetup/lib/libdevmapper.c:3259,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/libdevmapper.c:3264,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/libdevmapper.c:3265,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:3268,1
    - Dst: free
      Src: /src/cryptsetup/lib/libdevmapper.c:3269,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 2
    argNames:
    - cd
    - name
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3272
      start: 3226
    functionDepth: 8
    functionLinenumber: 3226
    functionLinenumberEnd: 3272
    functionName: dm_get_active_iname
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 4
    functionsReached:
    - stat
    - free
    - dm_targets_free
    - dm_uuid_integrity_cmp
    - dm_query_device
    - dm_get_iname
    - single_segment
    - S_ISBLK
    linkageType: ''
    returnType: char
    signature: char *dm_get_active_iname(struct crypt_device *cd, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dm_is_dm_major
      Src: /src/cryptsetup/lib/libdevmapper.c:3276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - major
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3277
      start: 3274
    functionDepth: 0
    functionLinenumber: 3274
    functionLinenumberEnd: 3277
    functionName: dm_is_dm_device
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - dm_is_dm_major
    linkageType: ''
    returnType: int
    signature: int dm_is_dm_device(int major)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:3281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3282
      start: 3279
    functionDepth: 0
    functionLinenumber: 3279
    functionLinenumberEnd: 3282
    functionName: dm_is_dm_kernel_name
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 4
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int dm_is_dm_kernel_name(const char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:3296,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:3296,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:3297,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/libdevmapper.c:3299,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 2
    argNames:
    - dm_uuid
    - hdr_uuid
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3316
      start: 3287
    functionDepth: 0
    functionLinenumber: 3287
    functionLinenumberEnd: 3316
    functionName: dm_uuid_cmp
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 3
    functionsReached:
    - strlen
    - strncmp
    - strchr
    linkageType: ''
    returnType: int
    signature: int dm_uuid_cmp(const char *dm_uuid, const char *hdr_uuid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:3331,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:3331,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:3332,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/libdevmapper.c:3334,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/libdevmapper.c:3338,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - dm_uuid
    - dmi_uuid
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3351
      start: 3322
    functionDepth: 0
    functionLinenumber: 3322
    functionLinenumberEnd: 3351
    functionName: dm_uuid_integrity_cmp
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - strlen
    - strncmp
    - strchr
    linkageType: ''
    returnType: int
    signature: int dm_uuid_integrity_cmp(const char *dm_uuid, const char *dmi_uuid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/libdevmapper.c:3360,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:3362,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/libdevmapper.c:3363,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/libdevmapper.c:3364,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - dm_uuid
    - type
    argTypes:
    - char*
    - char*
    assertStmts:
    - condition: (type)
      pos:
        line_end: 3359
        line_start: 3359
        source_file: /src/cryptsetup/lib/libdevmapper.c
    constantsTouched: []
    func_position:
      end: 3368
      start: 3356
    functionDepth: 0
    functionLinenumber: 3356
    functionLinenumberEnd: 3368
    functionName: dm_uuid_type_cmp
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - strlen
    - strncmp
    - assert
    linkageType: ''
    returnType: int
    signature: int dm_uuid_type_cmp(const char *dm_uuid, const char *type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/cryptsetup/lib/libdevmapper.c:3380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 12
    argNames:
    - tgt
    - seg_offset
    - seg_size
    - data_device
    - vk
    - cipher
    - iv_offset
    - data_offset
    - integrity
    - integrity_key_size
    - tag_size
    - sector_size
    argTypes:
    - struct dm_target*
    - uint64_t
    - uint64_t
    - struct device*
    - struct volume_key*
    - char*
    - uint64_t
    - uint64_t
    - char*
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3402
      start: 3370
    functionDepth: 0
    functionLinenumber: 3370
    functionLinenumberEnd: 3402
    functionName: dm_crypt_target_set
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 3
    functionsReached:
    - strdup
    linkageType: ''
    returnType: int
    signature: "int dm_crypt_target_set(struct dm_target *tgt, uint64_t seg_offset,
      uint64_t seg_size,\n\tstruct device *data_device, struct volume_key *vk, const
      char *cipher,\n\tuint64_t iv_offset, uint64_t data_offset,\n\tconst char *integrity,
      uint32_t integrity_key_size, uint32_t tag_size,\n\tuint32_t sector_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 12
    argNames:
    - tgt
    - seg_offset
    - seg_size
    - data_device
    - hash_device
    - fec_device
    - root_hash
    - root_hash_size
    - root_hash_sig_key_desc
    - hash_offset_block
    - fec_blocks
    - vp
    argTypes:
    - struct dm_target*
    - uint64_t
    - uint64_t
    - struct device*
    - struct device*
    - struct device*
    - char*
    - uint32_t
    - char*
    - uint64_t
    - uint64_t
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3429
      start: 3404
    functionDepth: 0
    functionLinenumber: 3404
    functionLinenumberEnd: 3429
    functionName: dm_verity_target_set
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dm_verity_target_set(struct dm_target *tgt, uint64_t seg_offset,
      uint64_t seg_size,\n\tstruct device *data_device, struct device *hash_device,
      struct device *fec_device,\n\tconst char *root_hash, uint32_t root_hash_size,
      const char* root_hash_sig_key_desc,\n\tuint64_t hash_offset_block, uint64_t
      fec_blocks, struct crypt_params_verity *vp)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: _dm_check_versions
      Src: /src/cryptsetup/lib/libdevmapper.c:3444,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:3461,1
    - Dst: crypt_get_compatibility
      Src: /src/cryptsetup/lib/libdevmapper.c:3463,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/libdevmapper.c:3466,1
    - Dst: crypt_get_compatibility
      Src: /src/cryptsetup/lib/libdevmapper.c:3468,1
    - Dst: crypt_get_compatibility
      Src: /src/cryptsetup/lib/libdevmapper.c:3472,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 13
    argNames:
    - cd
    - tgt
    - seg_offset
    - seg_size
    - meta_device
    - data_device
    - tag_size
    - offset
    - sector_size
    - vk
    - journal_crypt_key
    - journal_mac_key
    - ip
    argTypes:
    - struct crypt_device*
    - struct dm_target*
    - uint64_t
    - uint64_t
    - struct device*
    - struct device*
    - uint64_t
    - uint64_t
    - uint32_t
    - struct volume_key*
    - struct volume_key*
    - struct volume_key*
    - struct crypt_params_integrity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3487
      start: 3431
    functionDepth: 4
    functionLinenumber: 3431
    functionLinenumberEnd: 3487
    functionName: dm_integrity_target_set
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 1
    functionsReached:
    - dm_flags
    - crypt_get_compatibility
    - _dm_check_versions
    linkageType: ''
    returnType: int
    signature: "int dm_integrity_target_set(struct crypt_device *cd,\n\t\t\tstruct
      dm_target *tgt, uint64_t seg_offset, uint64_t seg_size,\n\t\t\tstruct device
      *meta_device,\n\t\t        struct device *data_device, uint64_t tag_size, uint64_t
      offset,\n\t\t\tuint32_t sector_size, struct volume_key *vk,\n\t\t\tstruct volume_key
      *journal_crypt_key, struct volume_key *journal_mac_key,\n\t\t\tconst struct
      crypt_params_integrity *ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - tgt
    - seg_offset
    - seg_size
    - data_device
    - data_offset
    argTypes:
    - struct dm_target*
    - uint64_t
    - uint64_t
    - struct device*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3504
      start: 3489
    functionDepth: 0
    functionLinenumber: 3489
    functionLinenumberEnd: 3504
    functionName: dm_linear_target_set
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dm_linear_target_set(struct dm_target *tgt, uint64_t seg_offset,
      uint64_t seg_size,\n\tstruct device *data_device, uint64_t data_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - tgt
    - seg_offset
    - seg_size
    argTypes:
    - struct dm_target*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3514
      start: 3506
    functionDepth: 0
    functionLinenumber: 3506
    functionLinenumberEnd: 3514
    functionName: dm_zero_target_set
    functionSourceFile: /src/cryptsetup/lib/libdevmapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dm_zero_target_set(struct dm_target *tgt, uint64_t seg_offset,
      uint64_t seg_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/crypt_plain.c:24,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/crypt_plain.c:27,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/crypt_plain.c:32,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/crypt_plain.c:35,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/crypt_plain.c:41,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/crypt_plain.c:48,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 5
    argNames:
    - hash_name
    - key_size
    - key
    - passphrase_size
    - passphrase
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 50
    functionName: hash
    functionSourceFile: /src/cryptsetup/lib/crypt_plain.c
    functionUses: 11
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_final
    - crypt_hash_size
    - crypt_hash_write
    - crypt_hash_init
    linkageType: ''
    returnType: int
    signature: "int hash(const char *hash_name, size_t key_size, char *key,\n\t\tsize_t
      passphrase_size, const char *passphrase)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/crypt_plain.c:63,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/crypt_plain.c:65,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/crypt_plain.c:67,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/crypt_plain.c:71,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/crypt_plain.c:74,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/crypt_plain.c:75,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/crypt_plain.c:79,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypt_plain.c:90,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/crypt_plain.c:92,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/crypt_plain.c:95,1
    - Dst: hash
      Src: /src/cryptsetup/lib/crypt_plain.c:98,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypt_plain.c:101,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 6
    argNames:
    - cd
    - hash_name
    - key
    - key_size
    - passphrase
    - passphrase_size
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 104
    functionName: crypt_plain_hash
    functionSourceFile: /src/cryptsetup/lib/crypt_plain.c
    functionUses: 1
    functionsReached:
    - memset
    - crypt_safe_memcpy
    - hash
    - strncpy
    - log_dbg
    - sscanf
    - strlen
    - strcmp
    - strchr
    linkageType: ''
    returnType: int
    signature: "int crypt_plain_hash(struct crypt_device *cd,\n\t\t     const char
      *hash_name,\n\t\t     char *key, size_t key_size,\n\t\t     const char *passphrase,
      size_t passphrase_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/cryptsetup/lib/utils_loop.c:62,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:64,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:68,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:70,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_loop.c:71,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 77
    functionName: crypt_loop_get_device_old
    functionSourceFile: /src/cryptsetup/lib/utils_loop.c
    functionUses: 1
    functionsReached:
    - ioctl
    - close
    - strdup
    - open
    - sprintf
    linkageType: ''
    returnType: char
    signature: char *crypt_loop_get_device_old(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:85,1
    - Dst: crypt_loop_get_device_old
      Src: /src/cryptsetup/lib/utils_loop.c:87,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:89,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:91,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:94,1
    - Dst: sprintf
      Src: /src/cryptsetup/lib/utils_loop.c:96,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_loop.c:99,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_loop.c:99,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_loop.c:102,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 103
    functionName: crypt_loop_get_device
    functionSourceFile: /src/cryptsetup/lib/utils_loop.c
    functionUses: 1
    functionsReached:
    - ioctl
    - close
    - strdup
    - crypt_loop_get_device_old
    - stat
    - open
    - S_ISBLK
    - sprintf
    linkageType: ''
    returnType: char
    signature: char *crypt_loop_get_device(void)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:115,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:118,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_loop.c:127,1
    - Dst: crypt_loop_get_device
      Src: /src/cryptsetup/lib/utils_loop.c:135,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:139,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:142,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_loop.c:144,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:147,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_loop.c:156,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:159,1
    - Dst: crypt_loop_get_device
      Src: /src/cryptsetup/lib/utils_loop.c:166,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:170,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:173,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_loop.c:176,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:179,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:185,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:187,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:188,1
    - Dst: memset
      Src: /src/cryptsetup/lib/utils_loop.c:195,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:196,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:198,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:206,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:208,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_loop.c:210,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 94
    argCount: 6
    argNames:
    - loop
    - file
    - offset
    - autoclear
    - readonly
    - blocksize
    argTypes:
    - char**
    - char*
    - int
    - int
    - int*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 214
    functionName: crypt_loop_attach
    functionSourceFile: /src/cryptsetup/lib/utils_loop.c
    functionUses: 0
    functionsReached:
    - memset
    - free
    - ioctl
    - close
    - crypt_loop_get_device
    - strncpy
    - open
    linkageType: ''
    returnType: int
    signature: "int crypt_loop_attach(char **loop, const char *file, int offset,\n\t\t
      \     int autoclear, int *readonly, size_t blocksize)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:220,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:224,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - loop
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 229
    functionName: crypt_loop_detach
    functionSourceFile: /src/cryptsetup/lib/utils_loop.c
    functionUses: 0
    functionsReached:
    - open
    - ioctl
    - close
    linkageType: ''
    returnType: int
    signature: int crypt_loop_detach(const char *loop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:235,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:239,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - loop
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 244
    functionName: crypt_loop_resize
    functionSourceFile: /src/cryptsetup/lib/utils_loop.c
    functionUses: 1
    functionsReached:
    - open
    - ioctl
    - close
    linkageType: ''
    returnType: int
    signature: int crypt_loop_resize(const char *loop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:251,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_loop.c:255,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:256,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:263,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_loop.c:265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - loop
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 266
    functionName: _ioctl_backing_file
    functionSourceFile: /src/cryptsetup/lib/utils_loop.c
    functionUses: 0
    functionsReached:
    - open
    - strdup
    - ioctl
    - close
    linkageType: ''
    returnType: char
    signature: char *_ioctl_backing_file(const char *loop)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_loop.c:275,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_loop.c:275,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_loop.c:278,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_loop.c:279,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_loop.c:279,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_loop.c:282,1
    - Dst: read
      Src: /src/cryptsetup/lib/utils_loop.c:286,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_loop.c:287,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_loop.c:292,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - loop
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 293
    functionName: _sysfs_backing_file
    functionSourceFile: /src/cryptsetup/lib/utils_loop.c
    functionUses: 0
    functionsReached:
    - read
    - snprintf
    - close
    - minor
    - major
    - strdup
    - stat
    - open
    - S_ISBLK
    linkageType: ''
    returnType: char
    signature: char *_sysfs_backing_file(const char *loop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_loop_device
      Src: /src/cryptsetup/lib/utils_loop.c:299,1
    - Dst: _sysfs_backing_file
      Src: /src/cryptsetup/lib/utils_loop.c:302,1
    - Dst: _ioctl_backing_file
      Src: /src/cryptsetup/lib/utils_loop.c:303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - loop
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 304
    functionName: crypt_loop_backing_file
    functionSourceFile: /src/cryptsetup/lib/utils_loop.c
    functionUses: 5
    functionsReached:
    - _ioctl_backing_file
    - _sysfs_backing_file
    - crypt_loop_device
    linkageType: ''
    returnType: char
    signature: char *crypt_loop_backing_file(const char *loop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_loop.c:313,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_loop.c:313,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_loop.c:314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - loop
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 318
    functionName: crypt_loop_device
    functionSourceFile: /src/cryptsetup/lib/utils_loop.c
    functionUses: 2
    functionsReached:
    - S_ISBLK
    - major
    - stat
    linkageType: ''
    returnType: int
    signature: int crypt_loop_device(const char *loop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_wipe.c:34,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_wipe.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - cd
    - devfd
    - offset
    - length
    argTypes:
    - struct crypt_device*
    - int
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 42
    functionName: wipe_zeroout
    functionSourceFile: /src/cryptsetup/lib/utils_wipe.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - ioctl
    linkageType: ''
    returnType: int
    signature: "int wipe_zeroout(struct crypt_device *cd, int devfd,\n\t\t\tuint64_t
      offset, uint64_t length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/utils_wipe.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - buffer_size
    - turn
    argTypes:
    - char*
    - size_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 69
    functionName: wipeSpecial
    functionSourceFile: /src/cryptsetup/lib/utils_wipe.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void wipeSpecial(char *buffer, size_t buffer_size, unsigned int turn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/utils_wipe.c:81,1
    - Dst: wipeSpecial
      Src: /src/cryptsetup/lib/utils_wipe.c:83,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/utils_wipe.c:86,1
    - Dst: memset
      Src: /src/cryptsetup/lib/utils_wipe.c:88,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/utils_wipe.c:94,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/utils_wipe.c:101,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/utils_wipe.c:104,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 7
    argNames:
    - cd
    - fd
    - bsize
    - alignment
    - buffer
    - offset
    - size
    argTypes:
    - struct crypt_device*
    - int
    - size_t
    - size_t
    - char*
    - uint64_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 109
    functionName: crypt_wipe_special
    functionSourceFile: /src/cryptsetup/lib/utils_wipe.c
    functionUses: 0
    functionsReached:
    - write_lseek_blockwise
    - memset
    - wipeSpecial
    - crypt_random_get
    linkageType: ''
    returnType: int
    signature: "int crypt_wipe_special(struct crypt_device *cd, int fd, size_t bsize,\n\t\t\t
      \     size_t alignment, char *buffer,\n\t\t\t      uint64_t offset, size_t size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_wipe_special
      Src: /src/cryptsetup/lib/utils_wipe.c:119,1
    - Dst: memset
      Src: /src/cryptsetup/lib/utils_wipe.c:124,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/utils_wipe.c:129,1
    - Dst: wipe_zeroout
      Src: /src/cryptsetup/lib/utils_wipe.c:140,1
    - Dst: lseek
      Src: /src/cryptsetup/lib/utils_wipe.c:142,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_wipe.c:143,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_wipe.c:143,1
    - Dst: write_blockwise
      Src: /src/cryptsetup/lib/utils_wipe.c:149,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 10
    argNames:
    - cd
    - devfd
    - pattern
    - sf
    - device_block_size
    - alignment
    - wipe_block_size
    - offset
    - need_block_init
    - blockdev
    argTypes:
    - struct crypt_device*
    - int
    - crypt_wipe_pattern
    - char*
    - size_t
    - size_t
    - size_t
    - uint64_t
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 111
    functionDepth: 5
    functionLinenumber: 111
    functionLinenumberEnd: 154
    functionName: wipe_block
    functionSourceFile: /src/cryptsetup/lib/utils_wipe.c
    functionUses: 0
    functionsReached:
    - memset
    - lseek
    - crypt_wipe_special
    - _
    - write_blockwise
    - crypt_random_get
    - log_err
    - wipe_zeroout
    linkageType: ''
    returnType: int
    signature: "int wipe_block(struct crypt_device *cd, int devfd, crypt_wipe_pattern
      pattern,\n\t\t      char *sf, size_t device_block_size, size_t alignment,\n\t\t
      \     size_t wipe_block_size, uint64_t offset, bool *need_block_init,\n\t\t
      \     bool blockdev)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/utils_wipe.c:173,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/utils_wipe.c:174,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_wipe.c:176,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_wipe.c:177,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/utils_wipe.c:185,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/utils_wipe.c:185,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/utils_wipe.c:185,1
    - Dst: device_is_locked
      Src: /src/cryptsetup/lib/utils_wipe.c:188,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/utils_wipe.c:189,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/utils_wipe.c:191,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_wipe.c:195,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/utils_wipe.c:203,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/utils_wipe.c:213,1
    - Dst: lseek
      Src: /src/cryptsetup/lib/utils_wipe.c:217,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_wipe.c:218,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_wipe.c:218,1
    - Dst: progress
      Src: /src/cryptsetup/lib/utils_wipe.c:223,1
    - Dst: device_is_rotational
      Src: /src/cryptsetup/lib/utils_wipe.c:228,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_wipe.c:229,1
    - Dst: wipe_block
      Src: /src/cryptsetup/lib/utils_wipe.c:237,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_wipe.c:238,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_wipe.c:240,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_wipe.c:240,1
    - Dst: progress
      Src: /src/cryptsetup/lib/utils_wipe.c:246,1
    - Dst: device_sync
      Src: /src/cryptsetup/lib/utils_wipe.c:252,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_wipe.c:254,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 68
    argCount: 7
    argNames:
    - cd
    - device
    - pattern
    - offset
    - length
    - wipe_block_size
    - usrptr
    argTypes:
    - struct crypt_device*
    - struct device*
    - crypt_wipe_pattern
    - uint64_t
    - uint64_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 156
    functionDepth: 6
    functionLinenumber: 156
    functionLinenumberEnd: 256
    functionName: crypt_wipe_device
    functionSourceFile: /src/cryptsetup/lib/utils_wipe.c
    functionUses: 3
    functionsReached:
    - device_is_locked
    - posix_memalign
    - device_alignment
    - device_sync
    - free
    - log_dbg
    - device_open_locked
    - device_size
    - log_err
    - MISALIGNED_512
    - S_ISBLK
    - device_is_rotational
    - device_open
    - lseek
    - _
    - fstat
    - wipe_block
    - device_path
    - progress
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int crypt_wipe_device(struct crypt_device *cd,\n\tstruct device *device,\n\tcrypt_wipe_pattern
      pattern,\n\tuint64_t offset,\n\tuint64_t length,\n\tsize_t wipe_block_size,\n\tint
      (*progress)(uint64_t size, uint64_t offset, void *usrptr),\n\tvoid *usrptr)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/utils_wipe.c:274,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/utils_wipe.c:279,1
    - Dst: device_alloc_no_check
      Src: /src/cryptsetup/lib/utils_wipe.c:281,1
    - Dst: device_disable_direct_io
      Src: /src/cryptsetup/lib/utils_wipe.c:286,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/utils_wipe.c:294,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/utils_wipe.c:298,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 8
    argNames:
    - cd
    - dev_path
    - pattern
    - offset
    - length
    - wipe_block_size
    - flags
    - usrptr
    argTypes:
    - struct crypt_device*
    - char*
    - crypt_wipe_pattern
    - uint64_t
    - uint64_t
    - size_t
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 258
    functionDepth: 7
    functionLinenumber: 258
    functionLinenumberEnd: 301
    functionName: crypt_wipe
    functionSourceFile: /src/cryptsetup/lib/utils_wipe.c
    functionUses: 8
    functionsReached:
    - device_free
    - device_alloc_no_check
    - init_crypto
    - crypt_wipe_device
    - device_disable_direct_io
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int crypt_wipe(struct crypt_device *cd,\n\tconst char *dev_path,\n\tcrypt_wipe_pattern
      pattern,\n\tuint64_t offset,\n\tuint64_t length,\n\tsize_t wipe_block_size,\n\tuint32_t
      flags,\n\tint (*progress)(uint64_t size, uint64_t offset, void *usrptr),\n\tvoid
      *usrptr)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/utils_wipe.c:314,1
    - Dst: crypt_opal_supported
      Src: /src/cryptsetup/lib/utils_wipe.c:325,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/utils_wipe.c:325,1
    - Dst: opal_factory_reset
      Src: /src/cryptsetup/lib/utils_wipe.c:330,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/utils_wipe.c:330,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_wipe.c:332,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_wipe.c:332,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_wipe.c:334,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_wipe.c:334,1
    - Dst: onlyLUKS2
      Src: /src/cryptsetup/lib/utils_wipe.c:338,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/utils_wipe.c:341,1
    - Dst: LUKS2_get_opal_segment_number
      Src: /src/cryptsetup/lib/utils_wipe.c:346,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_wipe.c:348,1
    - Dst: opal_exclusive_lock
      Src: /src/cryptsetup/lib/utils_wipe.c:354,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/utils_wipe.c:354,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_wipe.c:356,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_wipe.c:356,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_wipe.c:356,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/utils_wipe.c:356,1
    - Dst: opal_reset_segment
      Src: /src/cryptsetup/lib/utils_wipe.c:360,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/utils_wipe.c:361,1
    - Dst: opal_exclusive_unlock
      Src: /src/cryptsetup/lib/utils_wipe.c:366,1
    - Dst: LUKS2_wipe_header_areas
      Src: /src/cryptsetup/lib/utils_wipe.c:370,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 5
    argNames:
    - cd
    - segment
    - password
    - password_size
    - flags
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 371
    functionName: crypt_wipe_hw_opal
    functionSourceFile: /src/cryptsetup/lib/utils_wipe.c
    functionUses: 2
    functionsReached:
    - _
    - opal_factory_reset
    - crypt_get_hdr
    - LUKS2_get_opal_segment_number
    - opal_exclusive_unlock
    - crypt_opal_supported
    - log_err
    - onlyLUKS2
    - log_dbg
    - device_path
    - opal_reset_segment
    - opal_exclusive_lock
    - LUKS2_wipe_header_areas
    - UNUSED
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int crypt_wipe_hw_opal(struct crypt_device *cd,\n\t\t       int segment,\n\t\t
      \      const char *password,\n\t\t       size_t password_size,\n\t\t       uint32_t
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/cryptsetup/lib/utils_blkid.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: crypt_getpagesize
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: size_t
    signature: size_t crypt_getpagesize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blkid_probe_enable_partitions
      Src: /src/cryptsetup/lib/utils_blkid.c:39,1
    - Dst: blkid_probe_set_partitions_flags
      Src: /src/cryptsetup/lib/utils_blkid.c:40,1
    - Dst: blkid_probe_enable_superblocks
      Src: /src/cryptsetup/lib/utils_blkid.c:46,1
    - Dst: blkid_probe_set_superblocks_flags
      Src: /src/cryptsetup/lib/utils_blkid.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 54
    functionName: blk_set_chains_for_wipes
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached:
    - blkid_probe_enable_superblocks
    - blkid_probe_enable_partitions
    - blkid_probe_set_partitions_flags
    - blkid_probe_set_superblocks_flags
    linkageType: ''
    returnType: void
    signature: void blk_set_chains_for_wipes(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blk_set_chains_for_wipes
      Src: /src/cryptsetup/lib/utils_blkid.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: blk_set_chains_for_full_print
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached:
    - blk_set_chains_for_wipes
    linkageType: ''
    returnType: void
    signature: void blk_set_chains_for_full_print(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blkid_probe_enable_superblocks
      Src: /src/cryptsetup/lib/utils_blkid.c:63,1
    - Dst: blkid_probe_set_superblocks_flags
      Src: /src/cryptsetup/lib/utils_blkid.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: blk_set_chains_for_superblocks
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached:
    - blkid_probe_enable_superblocks
    - blkid_probe_set_superblocks_flags
    linkageType: ''
    returnType: void
    signature: void blk_set_chains_for_superblocks(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blkid_probe_enable_partitions
      Src: /src/cryptsetup/lib/utils_blkid.c:69,1
    - Dst: blkid_probe_set_partitions_flags
      Src: /src/cryptsetup/lib/utils_blkid.c:70,1
    - Dst: blk_set_chains_for_superblocks
      Src: /src/cryptsetup/lib/utils_blkid.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: blk_set_chains_for_fast_detection
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached:
    - blk_set_chains_for_superblocks
    - blkid_probe_enable_partitions
    - blkid_probe_set_partitions_flags
    linkageType: ''
    returnType: void
    signature: void blk_set_chains_for_fast_detection(struct blkid_handle *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/utils_blkid.c:76,1
    - Dst: blkid_new_probe_from_filename
      Src: /src/cryptsetup/lib/utils_blkid.c:82,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_blkid.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - h
    - path
    argTypes:
    - struct blkid_handle**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 90
    functionName: blk_init_by_path
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached:
    - blkid_new_probe_from_filename
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: int blk_init_by_path(struct blkid_handle **h, const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/utils_blkid.c:94,1
    - Dst: blkid_new_probe
      Src: /src/cryptsetup/lib/utils_blkid.c:98,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_blkid.c:100,1
    - Dst: blkid_probe_set_device
      Src: /src/cryptsetup/lib/utils_blkid.c:104,1
    - Dst: blkid_free_probe
      Src: /src/cryptsetup/lib/utils_blkid.c:105,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_blkid.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - h
    - fd
    argTypes:
    - struct blkid_handle**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 114
    functionName: blk_init_by_fd
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached:
    - free
    - blkid_new_probe
    - malloc
    - blkid_probe_set_device
    - blkid_free_probe
    linkageType: ''
    returnType: int
    signature: int blk_init_by_fd(struct blkid_handle **h, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blkid_probe_filter_superblocks_type
      Src: /src/cryptsetup/lib/utils_blkid.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - enable
    argTypes:
    - struct blkid_handle*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: blk_superblocks_luks
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 0
    functionsReached:
    - blkid_probe_filter_superblocks_type
    linkageType: ''
    returnType: int
    signature: int blk_superblocks_luks(struct blkid_handle *h, bool enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blk_superblocks_luks
      Src: /src/cryptsetup/lib/utils_blkid.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: blk_superblocks_filter_luks
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached:
    - blk_superblocks_luks
    linkageType: ''
    returnType: int
    signature: int blk_superblocks_filter_luks(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blk_superblocks_luks
      Src: /src/cryptsetup/lib/utils_blkid.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: blk_superblocks_only_luks
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached:
    - blk_superblocks_luks
    linkageType: ''
    returnType: int
    signature: int blk_superblocks_only_luks(struct blkid_handle *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: blkid_do_probe
      Src: /src/cryptsetup/lib/utils_blkid.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: blk_probe
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 3
    functionsReached:
    - blkid_do_probe
    linkageType: ''
    returnType: blk_probe_status
    signature: blk_probe_status blk_probe(struct blkid_handle *h)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: blkid_do_safeprobe
      Src: /src/cryptsetup/lib/utils_blkid.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 164
    functionName: blk_safeprobe
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 0
    functionsReached:
    - blkid_do_safeprobe
    linkageType: ''
    returnType: blk_probe_status
    signature: blk_probe_status blk_safeprobe(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blkid_probe_has_value
      Src: /src/cryptsetup/lib/utils_blkid.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 169
    functionName: blk_is_partition
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached:
    - blkid_probe_has_value
    linkageType: ''
    returnType: int
    signature: int blk_is_partition(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blkid_probe_has_value
      Src: /src/cryptsetup/lib/utils_blkid.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 174
    functionName: blk_is_superblock
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached:
    - blkid_probe_has_value
    linkageType: ''
    returnType: int
    signature: int blk_is_superblock(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blkid_probe_lookup_value
      Src: /src/cryptsetup/lib/utils_blkid.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 181
    functionName: blk_get_partition_type
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached:
    - blkid_probe_lookup_value
    linkageType: ''
    returnType: char
    signature: char *blk_get_partition_type(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blkid_probe_lookup_value
      Src: /src/cryptsetup/lib/utils_blkid.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 188
    functionName: blk_get_superblock_type
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 3
    functionsReached:
    - blkid_probe_lookup_value
    linkageType: ''
    returnType: char
    signature: char *blk_get_superblock_type(struct blkid_handle *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: blkid_free_probe
      Src: /src/cryptsetup/lib/utils_blkid.c:196,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_blkid.c:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: blk_free
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 3
    functionsReached:
    - free
    - blkid_free_probe
    linkageType: ''
    returnType: void
    signature: void blk_free(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blkid_probe_step_back
      Src: /src/cryptsetup/lib/utils_blkid.c:205,1
    - Dst: blkid_reset_probe
      Src: /src/cryptsetup/lib/utils_blkid.c:207,1
    - Dst: blkid_probe_set_device
      Src: /src/cryptsetup/lib/utils_blkid.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: blk_step_back
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 0
    functionsReached:
    - blkid_probe_set_device
    - blkid_probe_step_back
    - blkid_reset_probe
    linkageType: ''
    returnType: int
    signature: int blk_step_back(struct blkid_handle *h)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: blkid_do_wipe
      Src: /src/cryptsetup/lib/utils_blkid.c:217,1
    - Dst: blkid_probe_get_sectorsize
      Src: /src/cryptsetup/lib/utils_blkid.c:223,1
    - Dst: blk_is_partition
      Src: /src/cryptsetup/lib/utils_blkid.c:228,1
    - Dst: blkid_probe_lookup_value
      Src: /src/cryptsetup/lib/utils_blkid.c:229,1
    - Dst: blkid_probe_lookup_value
      Src: /src/cryptsetup/lib/utils_blkid.c:231,1
    - Dst: blk_is_superblock
      Src: /src/cryptsetup/lib/utils_blkid.c:233,1
    - Dst: blkid_probe_lookup_value
      Src: /src/cryptsetup/lib/utils_blkid.c:234,1
    - Dst: blkid_probe_lookup_value
      Src: /src/cryptsetup/lib/utils_blkid.c:236,1
    - Dst: crypt_getpagesize
      Src: /src/cryptsetup/lib/utils_blkid.c:241,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/utils_blkid.c:243,1
    - Dst: memset
      Src: /src/cryptsetup/lib/utils_blkid.c:245,1
    - Dst: strtoll
      Src: /src/cryptsetup/lib/utils_blkid.c:247,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/utils_blkid.c:250,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_blkid.c:251,1
    - Dst: blk_step_back
      Src: /src/cryptsetup/lib/utils_blkid.c:256,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 262
    functionName: blk_do_wipe
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached:
    - memset
    - blkid_probe_lookup_value
    - blk_step_back
    - free
    - blk_is_superblock
    - strtoll
    - posix_memalign
    - blkid_probe_get_sectorsize
    - crypt_getpagesize
    - blk_is_partition
    - blkid_do_wipe
    - write_lseek_blockwise
    linkageType: ''
    returnType: int
    signature: int blk_do_wipe(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 267
    functionName: blk_supported
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int blk_supported(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: blk_is_superblock
      Src: /src/cryptsetup/lib/utils_blkid.c:273,1
    - Dst: blkid_probe_has_value
      Src: /src/cryptsetup/lib/utils_blkid.c:273,1
    - Dst: blkid_probe_lookup_value
      Src: /src/cryptsetup/lib/utils_blkid.c:274,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_blkid.c:275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 279
    functionName: blk_get_block_size
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached:
    - blk_is_superblock
    - blkid_probe_lookup_value
    - sscanf
    - blkid_probe_has_value
    linkageType: ''
    returnType: unsigned
    signature: unsigned blk_get_block_size(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 286
    functionName: blk_set_chains_for_wipes
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void blk_set_chains_for_wipes(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 290
    functionName: blk_set_chains_for_full_print
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void blk_set_chains_for_full_print(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 294
    functionName: blk_set_chains_for_superblocks
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void blk_set_chains_for_superblocks(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 298
    functionName: blk_set_chains_for_fast_detection
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void blk_set_chains_for_fast_detection(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - path
    argTypes:
    - struct blkid_handle**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 303
    functionName: blk_init_by_path
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int blk_init_by_path(struct blkid_handle **h, const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - fd
    argTypes:
    - struct blkid_handle**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 308
    functionName: blk_init_by_fd
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int blk_init_by_fd(struct blkid_handle **h, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 313
    functionName: blk_superblocks_filter_luks
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int blk_superblocks_filter_luks(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 318
    functionName: blk_superblocks_only_luks
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int blk_superblocks_only_luks(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 323
    functionName: blk_probe
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: blk_probe_status
    signature: blk_probe_status blk_probe(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 328
    functionName: blk_safeprobe
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: blk_probe_status
    signature: blk_probe_status blk_safeprobe(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 333
    functionName: blk_is_partition
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int blk_is_partition(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: blk_is_superblock
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int blk_is_superblock(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: blk_get_partition_type
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *blk_get_partition_type(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: blk_get_superblock_type
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *blk_get_superblock_type(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 352
    functionName: blk_free
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void blk_free(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 357
    functionName: blk_do_wipe
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int blk_do_wipe(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 362
    functionName: blk_supported
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int blk_supported(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct blkid_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 367
    functionName: blk_get_block_size
    functionSourceFile: /src/cryptsetup/lib/utils_blkid.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned blk_get_block_size(struct blkid_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/lib/utils_keyring.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - type
    - description
    - callout_info
    - keyring
    argTypes:
    - char*
    - char*
    - char*
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: request_key
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 4
    functionsReached:
    - syscall
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t request_key(const char *type,\n\tconst char *description,\n\tconst
      char *callout_info,\n\tkey_serial_t keyring)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/lib/utils_keyring.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - type
    - description
    - payload
    - plen
    - keyring
    argTypes:
    - char*
    - char*
    - void*
    - size_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 56
    functionName: add_key
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 7
    functionsReached:
    - syscall
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t add_key(const char *type,\n\tconst char *description,\n\tconst
      void *payload,\n\tsize_t plen,\n\tkey_serial_t keyring)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/lib/utils_keyring.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - id
    - buffer
    - buflen
    argTypes:
    - key_serial_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: keyctl_describe
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: long
    signature: long keyctl_describe(key_serial_t id, char *buffer, size_t buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/lib/utils_keyring.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key
    - buffer
    - buflen
    argTypes:
    - key_serial_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: keyctl_read
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached:
    - syscall
    linkageType: ''
    returnType: long
    signature: long keyctl_read(key_serial_t key, char *buffer, size_t buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/lib/utils_keyring.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - keyring
    argTypes:
    - key_serial_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: keyctl_link
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached:
    - syscall
    linkageType: ''
    returnType: long
    signature: long keyctl_link(key_serial_t key, key_serial_t keyring)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/lib/utils_keyring.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - keyring
    argTypes:
    - key_serial_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: keyctl_unlink
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 8
    functionsReached:
    - syscall
    linkageType: ''
    returnType: long
    signature: long keyctl_unlink(key_serial_t key, key_serial_t keyring)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_keyring.c:91,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/utils_keyring.c:92,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/utils_keyring.c:93,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_keyring.c:96,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:99,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:102,1
    - Dst: keyctl_describe
      Src: /src/cryptsetup/lib/utils_keyring.c:114,1
    - Dst: strrchr
      Src: /src/cryptsetup/lib/utils_keyring.c:121,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:125,1
    - Dst: keyctl_link
      Src: /src/cryptsetup/lib/utils_keyring.c:129,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 32
    argCount: 4
    argNames:
    - line
    - type
    - desc
    - destringid
    argTypes:
    - char*
    - char*
    - char*
    - key_serial_t
    assertStmts:
    - condition: (desc)
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/cryptsetup/lib/utils_keyring.c
    constantsTouched: []
    func_position:
      end: 136
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 136
    functionName: keyring_process_proc_keys_line
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 0
    functionsReached:
    - keyctl_describe
    - memcmp
    - keyctl_link
    - assert
    - sscanf
    - strrchr
    - strlen
    - strcmp
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t keyring_process_proc_keys_line(char *line, const char
      *type, const char *desc,\n\t\t\t\t\t\t   key_serial_t destringid)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: request_key
      Src: /src/cryptsetup/lib/utils_keyring.c:151,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_keyring.c:160,1
    - Dst: read
      Src: /src/cryptsetup/lib/utils_keyring.c:164,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/utils_keyring.c:168,1
    - Dst: keyring_process_proc_keys_line
      Src: /src/cryptsetup/lib/utils_keyring.c:172,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_keyring.c:173,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_keyring.c:179,1
    - Dst: memmove
      Src: /src/cryptsetup/lib/utils_keyring.c:182,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/utils_keyring.c:184,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_keyring.c:188,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 3
    argNames:
    - type
    - desc
    - destringid
    argTypes:
    - char*
    - char*
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 190
    functionName: find_key_by_type_and_desc
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 0
    functionsReached:
    - close
    - request_key
    - memmove
    - read
    - open
    - keyring_process_proc_keys_line
    - strchr
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t find_key_by_type_and_desc(const char *type, const char
      *desc, key_serial_t destringid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/cryptsetup/lib/utils_keyring.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 196
    functionName: keyring_check
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 2
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: int keyring_check(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: key_type_name
      Src: /src/cryptsetup/lib/utils_keyring.c:204,1
    - Dst: add_key
      Src: /src/cryptsetup/lib/utils_keyring.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 5
    argNames:
    - ktype
    - key_desc
    - key
    - key_size
    - keyring
    argTypes:
    - key_type_t
    - char*
    - void*
    - size_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 210
    functionName: keyring_add_key_to_keyring
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached:
    - key_type_name
    - add_key
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t keyring_add_key_to_keyring(key_type_t ktype,\n\t\tconst
      char *key_desc,\n\t\tconst void *key,\n\t\tsize_t key_size,\n\t\tkey_serial_t
      keyring)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: keyring_add_key_to_keyring
      Src: /src/cryptsetup/lib/utils_keyring.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ktype
    - key_desc
    - key
    - key_size
    argTypes:
    - key_type_t
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: keyring_add_key_in_thread_keyring
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached:
    - keyring_add_key_to_keyring
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t keyring_add_key_in_thread_keyring(key_type_t ktype, const
      char *key_desc, const void *key, size_t key_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: request_key
      Src: /src/cryptsetup/lib/utils_keyring.c:223,1
    - Dst: key_type_name
      Src: /src/cryptsetup/lib/utils_keyring.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - key_type
    - key_description
    argTypes:
    - key_type_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 227
    functionName: keyring_request_key_id
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 2
    functionsReached:
    - key_type_name
    - request_key
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t keyring_request_key_id(key_type_t key_type,\n\t\tconst
      char *key_description)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_keyring.c:234,1
    - Dst: keyctl_read
      Src: /src/cryptsetup/lib/utils_keyring.c:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - kid
    - r_key_size
    argTypes:
    - key_serial_t
    - size_t*
    assertStmts:
    - condition: (r_key_size)
      pos:
        line_end: 233
        line_start: 233
        source_file: /src/cryptsetup/lib/utils_keyring.c
    constantsTouched: []
    func_position:
      end: 244
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 244
    functionName: keyring_read_keysize
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached:
    - keyctl_read
    - assert
    linkageType: ''
    returnType: int
    signature: "int keyring_read_keysize(key_serial_t kid,\n\t\tsize_t *r_key_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_keyring.c:254,1
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_keyring.c:255,1
    - Dst: keyring_read_keysize
      Src: /src/cryptsetup/lib/utils_keyring.c:258,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/utils_keyring.c:262,1
    - Dst: keyctl_read
      Src: /src/cryptsetup/lib/utils_keyring.c:267,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/utils_keyring.c:269,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - kid
    - key
    - key_size
    argTypes:
    - key_serial_t
    - char**
    - size_t*
    assertStmts:
    - condition: (key)
      pos:
        line_end: 253
        line_start: 253
        source_file: /src/cryptsetup/lib/utils_keyring.c
    - condition: (key_size)
      pos:
        line_end: 254
        line_start: 254
        source_file: /src/cryptsetup/lib/utils_keyring.c
    constantsTouched: []
    func_position:
      end: 277
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 277
    functionName: keyring_read_key
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 2
    functionsReached:
    - crypt_safe_alloc
    - keyctl_read
    - crypt_safe_free
    - assert
    - keyring_read_keysize
    linkageType: ''
    returnType: int
    signature: "int keyring_read_key(key_serial_t kid,\n\t\tchar **key,\n\t\tsize_t
      *key_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/lib/utils_keyring.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - kid
    - keyring_id
    argTypes:
    - key_serial_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 282
    functionName: keyring_unlink_key_from_keyring
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached:
    - keyctl_unlink
    linkageType: ''
    returnType: int
    signature: int keyring_unlink_key_from_keyring(key_serial_t kid, key_serial_t
      keyring_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: keyctl_unlink
      Src: /src/cryptsetup/lib/utils_keyring.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kid
    argTypes:
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 287
    functionName: keyring_unlink_key_from_thread_keyring
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached:
    - keyctl_unlink
    linkageType: ''
    returnType: int
    signature: int keyring_unlink_key_from_thread_keyring(key_serial_t kid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/lib/utils_keyring.c:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - key_type_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 298
    functionName: key_type_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 6
    functionsReached:
    - ARRAY_SIZE
    linkageType: ''
    returnType: char
    signature: char *key_type_name(key_type_t type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/cryptsetup/lib/utils_keyring.c:313,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/utils_keyring.c:322,1
    - Dst: key_type_by_name
      Src: /src/cryptsetup/lib/utils_keyring.c:328,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - key_name
    - name
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 329
    functionName: keyring_type_and_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached:
    - key_type_by_name
    - memcpy
    - strchr
    linkageType: ''
    returnType: key_type_t
    signature: key_type_t keyring_type_and_name(const char *key_name, const char **name)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_keyring.c:337,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:340,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:341,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:342,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:343,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:344,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:345,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:346,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_keyring.c:352,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/utils_keyring.c:369,1
    - Dst: find_key_by_type_and_desc
      Src: /src/cryptsetup/lib/utils_keyring.c:378,1
    - Dst: strtoul
      Src: /src/cryptsetup/lib/utils_keyring.c:382,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_keyring.c:387,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 54
    argCount: 1
    argNames:
    - key_name
    argTypes:
    - char*
    assertStmts:
    - condition: (key_name)
      pos:
        line_end: 336
        line_start: 336
        source_file: /src/cryptsetup/lib/utils_keyring.c
    constantsTouched: []
    func_position:
      end: 390
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 390
    functionName: keyring_find_key_id_by_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 2
    functionsReached:
    - free
    - assert
    - strtoul
    - strdup
    - find_key_by_type_and_desc
    - strcmp
    - strchr
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t keyring_find_key_id_by_name(const char *key_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/cryptsetup/lib/utils_keyring.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 402
    functionName: numbered
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 0
    functionsReached:
    - strtol
    linkageType: ''
    returnType: bool
    signature: bool numbered(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_keyring.c:406,1
    - Dst: strstr
      Src: /src/cryptsetup/lib/utils_keyring.c:410,1
    - Dst: strstr
      Src: /src/cryptsetup/lib/utils_keyring.c:410,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/utils_keyring.c:411,1
    - Dst: keyring_find_key_id_by_name
      Src: /src/cryptsetup/lib/utils_keyring.c:412,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 1
    argNames:
    - keyring_name
    argTypes:
    - char*
    assertStmts:
    - condition: (keyring_name)
      pos:
        line_end: 405
        line_start: 405
        source_file: /src/cryptsetup/lib/utils_keyring.c
    constantsTouched: []
    func_position:
      end: 415
      start: 404
    functionDepth: 4
    functionLinenumber: 404
    functionLinenumberEnd: 415
    functionName: keyring_find_keyring_id_by_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached:
    - keyring_find_key_id_by_name
    - strstr
    - numbered
    - assert
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t keyring_find_keyring_id_by_name(const char *keyring_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/lib/utils_keyring.c:421,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_keyring.c:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 426
    functionName: key_type_by_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 3
    functionsReached:
    - strcmp
    - ARRAY_SIZE
    linkageType: ''
    returnType: key_type_t
    signature: key_type_t key_type_by_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 434
    functionName: keyring_check
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int keyring_check(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ktype
    - key_desc
    - key
    - key_size
    argTypes:
    - key_type_t
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 439
    functionName: keyring_add_key_in_thread_keyring
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t keyring_add_key_in_thread_keyring(key_type_t ktype, const
      char *key_desc, const void *key, size_t key_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key_type
    - key_description
    argTypes:
    - key_type_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 445
    functionName: keyring_request_key_id
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t keyring_request_key_id(key_type_t key_type,\n\t\tconst
      char *key_description)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - kid
    - r_key_size
    argTypes:
    - key_serial_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 451
    functionName: keyring_read_keysize
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int keyring_read_keysize(key_serial_t kid,\n\t\tsize_t *r_key_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - kid
    - key
    - key_size
    argTypes:
    - key_serial_t
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 458
    functionName: keyring_read_key
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int keyring_read_key(key_serial_t kid,\n\t\tchar **key,\n\t\tsize_t
      *key_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key_desc
    - passphrase
    - passphrase_len
    argTypes:
    - char*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: keyring_read_by_id
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int keyring_read_by_id(const char *key_desc, char **passphrase, size_t
      *passphrase_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - key_type_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 468
    functionName: key_type_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *key_type_name(key_type_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key_name
    - name
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 473
    functionName: keyring_type_and_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: key_type_t
    signature: key_type_t keyring_type_and_name(const char *key_name, const char **name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 478
    functionName: keyring_find_key_id_by_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t keyring_find_key_id_by_name(const char *key_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - keyring_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 483
    functionName: keyring_find_keyring_id_by_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: key_serial_t
    signature: key_serial_t keyring_find_keyring_id_by_name(const char *keyring_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: key_type_by_name
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: key_type_t
    signature: key_type_t key_type_by_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ktype
    - key_desc
    - key
    - key_size
    - keyring_to_link
    argTypes:
    - key_type_t
    - char*
    - void*
    - size_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 497
    functionName: keyring_add_key_to_keyring
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: key_serial_t
    signature: "key_serial_t keyring_add_key_to_keyring(key_type_t ktype,\n\t\t\t\t\tconst
      char *key_desc,\n\t\t\t\t\tconst void *key,\n\t\t\t\t\tsize_t key_size,\n\t\t\t\t\tkey_serial_t
      keyring_to_link)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - kid
    - keyring_id
    argTypes:
    - key_serial_t
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 502
    functionName: keyring_unlink_key_from_keyring
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int keyring_unlink_key_from_keyring(key_serial_t kid, key_serial_t
      keyring_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kid
    argTypes:
    - key_serial_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 507
    functionName: keyring_unlink_key_from_thread_keyring
    functionSourceFile: /src/cryptsetup/lib/utils_keyring.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int keyring_unlink_key_from_thread_keyring(key_serial_t kid)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/utils_benchmark.c:30,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/utils_benchmark.c:35,1
    - Dst: crypt_getpagesize
      Src: /src/cryptsetup/lib/utils_benchmark.c:35,1
    - Dst: memset
      Src: /src/cryptsetup/lib/utils_benchmark.c:37,1
    - Dst: crypt_cipher_ivsize
      Src: /src/cryptsetup/lib/utils_benchmark.c:39,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_benchmark.c:41,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/utils_benchmark.c:46,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/utils_benchmark.c:49,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/utils_benchmark.c:52,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/utils_benchmark.c:56,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_benchmark.c:58,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/utils_benchmark.c:60,1
    - Dst: crypt_cipher_perf_kernel
      Src: /src/cryptsetup/lib/utils_benchmark.c:63,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_benchmark.c:67,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_benchmark.c:69,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_benchmark.c:72,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_benchmark.c:73,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_benchmark.c:74,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 42
    argCount: 8
    argNames:
    - cd
    - cipher
    - cipher_mode
    - volume_key_size
    - iv_size
    - buffer_size
    - encryption_mbs
    - decryption_mbs
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - size_t
    - size_t
    - size_t
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 14
    functionDepth: 4
    functionLinenumber: 14
    functionLinenumberEnd: 77
    functionName: crypt_benchmark
    functionSourceFile: /src/cryptsetup/lib/utils_benchmark.c
    functionUses: 2
    functionsReached:
    - memset
    - free
    - posix_memalign
    - crypt_getpagesize
    - malloc
    - crypt_cipher_ivsize
    - log_dbg
    - crypt_random_get
    - strncpy
    - crypt_cipher_perf_kernel
    - init_crypto
    - strchr
    linkageType: ''
    returnType: int
    signature: "int crypt_benchmark(struct crypt_device *cd,\n\tconst char *cipher,\n\tconst
      char *cipher_mode,\n\tsize_t volume_key_size,\n\tsize_t iv_size,\n\tsize_t buffer_size,\n\tdouble
      *encryption_mbs,\n\tdouble *decryption_mbs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: init_crypto
      Src: /src/cryptsetup/lib/utils_benchmark.c:96,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_benchmark.c:100,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_benchmark.c:102,1
    - Dst: pbkdf_adjusted_phys_memory_kb
      Src: /src/cryptsetup/lib/utils_benchmark.c:104,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_benchmark.c:106,1
    - Dst: crypt_process_priority
      Src: /src/cryptsetup/lib/utils_benchmark.c:112,1
    - Dst: crypt_pbkdf_perf
      Src: /src/cryptsetup/lib/utils_benchmark.c:113,1
    - Dst: crypt_process_priority
      Src: /src/cryptsetup/lib/utils_benchmark.c:117,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_benchmark.c:120,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 8
    argNames:
    - cd
    - pbkdf
    - password
    - password_size
    - salt
    - salt_size
    - volume_key_size
    - usrptr
    argTypes:
    - struct crypt_device*
    - struct crypt_pbkdf_type*
    - char*
    - size_t
    - char*
    - size_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 124
    functionName: crypt_benchmark_pbkdf
    functionSourceFile: /src/cryptsetup/lib/utils_benchmark.c
    functionUses: 1
    functionsReached:
    - pbkdf_adjusted_phys_memory_kb
    - log_dbg
    - crypt_process_priority
    - init_crypto
    - strcmp
    - crypt_pbkdf_perf
    linkageType: ''
    returnType: int
    signature: "int crypt_benchmark_pbkdf(struct crypt_device *cd,\n\tstruct crypt_pbkdf_type
      *pbkdf,\n\tconst char *password,\n\tsize_t password_size,\n\tconst char *salt,\n\tsize_t
      salt_size,\n\tsize_t volume_key_size,\n\tint (*progress)(uint32_t time_ms, void
      *usrptr),\n\tvoid *usrptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_benchmark.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - time_ms
    - usrptr
    argTypes:
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 140
    functionName: benchmark_callback
    functionSourceFile: /src/cryptsetup/lib/utils_benchmark.c
    functionUses: 0
    functionsReached:
    - log_dbg
    linkageType: ''
    returnType: int
    signature: int benchmark_callback(uint32_t time_ms, void *usrptr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_pbkdf_get_limits
      Src: /src/cryptsetup/lib/utils_benchmark.c:162,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_benchmark.c:168,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_benchmark.c:171,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_benchmark.c:171,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_benchmark.c:176,1
    - Dst: crypt_benchmark_pbkdf
      Src: /src/cryptsetup/lib/utils_benchmark.c:186,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_benchmark.c:190,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_benchmark.c:190,1
    - Dst: AT_LEAST
      Src: /src/cryptsetup/lib/utils_benchmark.c:198,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_benchmark.c:202,1
    - Dst: crypt_benchmark_pbkdf
      Src: /src/cryptsetup/lib/utils_benchmark.c:206,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_benchmark.c:210,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_benchmark.c:210,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 3
    argNames:
    - cd
    - pbkdf
    - volume_key_size
    argTypes:
    - struct crypt_device*
    - struct crypt_pbkdf_type*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 149
    functionDepth: 4
    functionLinenumber: 149
    functionLinenumberEnd: 214
    functionName: crypt_benchmark_pbkdf_internal
    functionSourceFile: /src/cryptsetup/lib/utils_benchmark.c
    functionUses: 0
    functionsReached:
    - _
    - log_dbg
    - log_err
    - crypt_pbkdf_get_limits
    - strcmp
    - crypt_benchmark_pbkdf
    - AT_LEAST
    linkageType: ''
    returnType: int
    signature: "int crypt_benchmark_pbkdf_internal(struct crypt_device *cd,\n\t\t\t\t
      \  struct crypt_pbkdf_type *pbkdf,\n\t\t\t\t   size_t volume_key_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/cryptsetup/lib/utils_io.c:29,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 4
    argNames:
    - fd
    - buf
    - length
    - quit
    argTypes:
    - int
    - void*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 42
    functionName: _read_buffer
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 1
    functionsReached:
    - read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t _read_buffer(int fd, void *buf, size_t length, volatile int
      *quit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _read_buffer
      Src: /src/cryptsetup/lib/utils_io.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fd
    - buf
    - length
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: read_buffer
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 13
    functionsReached:
    - _read_buffer
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t read_buffer(int fd, void *buf, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _read_buffer
      Src: /src/cryptsetup/lib/utils_io.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fd
    - buf
    - length
    - quit
    argTypes:
    - int
    - void*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: read_buffer_intr
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 1
    functionsReached:
    - _read_buffer
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t read_buffer_intr(int fd, void *buf, size_t length, volatile
      int *quit)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/cryptsetup/lib/utils_io.c:62,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 15
    argCount: 4
    argNames:
    - fd
    - buf
    - length
    - quit
    argTypes:
    - int
    - void*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 75
    functionName: _write_buffer
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 1
    functionsReached:
    - write
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t _write_buffer(int fd, const void *buf, size_t length, volatile
      int *quit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _write_buffer
      Src: /src/cryptsetup/lib/utils_io.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fd
    - buf
    - length
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: write_buffer
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 14
    functionsReached:
    - _write_buffer
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t write_buffer(int fd, const void *buf, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _write_buffer
      Src: /src/cryptsetup/lib/utils_io.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fd
    - buf
    - length
    - quit
    argTypes:
    - int
    - void*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: write_buffer_intr
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 1
    functionsReached:
    - _write_buffer
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t write_buffer_intr(int fd, const void *buf, size_t length, volatile
      int *quit)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/utils_io.c:101,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/utils_io.c:103,1
    - Dst: write_buffer
      Src: /src/cryptsetup/lib/utils_io.c:108,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/utils_io.c:114,1
    - Dst: memset
      Src: /src/cryptsetup/lib/utils_io.c:116,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/utils_io.c:118,1
    - Dst: lseek
      Src: /src/cryptsetup/lib/utils_io.c:122,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/utils_io.c:125,1
    - Dst: write_buffer
      Src: /src/cryptsetup/lib/utils_io.c:127,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_io.c:133,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_io.c:135,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 42
    argCount: 5
    argNames:
    - fd
    - bsize
    - alignment
    - orig_buf
    - length
    argTypes:
    - int
    - size_t
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 137
    functionName: write_blockwise
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 3
    functionsReached:
    - memset
    - read_buffer
    - lseek
    - free
    - memcpy
    - posix_memalign
    - write_buffer
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t write_blockwise(int fd, size_t bsize, size_t alignment,\n\t\t\tvoid
      *orig_buf, size_t length)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/utils_io.c:153,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/utils_io.c:158,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/utils_io.c:163,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/utils_io.c:165,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/utils_io.c:169,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_io.c:173,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/utils_io.c:176,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_io.c:177,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 5
    argNames:
    - fd
    - bsize
    - alignment
    - orig_buf
    - length
    argTypes:
    - int
    - size_t
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 180
    functionName: read_blockwise
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 2
    functionsReached:
    - read_buffer
    - posix_memalign
    - free
    - memcpy
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t read_blockwise(int fd, size_t bsize, size_t alignment,\n\t\t
      \      void *orig_buf, size_t length)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/cryptsetup/lib/utils_io.c:199,1
    - Dst: lseek
      Src: /src/cryptsetup/lib/utils_io.c:206,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/utils_io.c:210,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/utils_io.c:217,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/utils_io.c:221,1
    - Dst: lseek
      Src: /src/cryptsetup/lib/utils_io.c:223,1
    - Dst: write_buffer
      Src: /src/cryptsetup/lib/utils_io.c:226,1
    - Dst: write_blockwise
      Src: /src/cryptsetup/lib/utils_io.c:234,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_io.c:238,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 38
    argCount: 6
    argNames:
    - fd
    - bsize
    - alignment
    - buf
    - length
    - offset
    argTypes:
    - int
    - size_t
    - size_t
    - void*
    - size_t
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 188
    functionDepth: 3
    functionLinenumber: 188
    functionLinenumberEnd: 240
    functionName: write_lseek_blockwise
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 6
    functionsReached:
    - read_buffer
    - lseek
    - write_blockwise
    - memcpy
    - free
    - posix_memalign
    - write_buffer
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t write_lseek_blockwise(int fd, size_t bsize, size_t alignment,\n\t\t\t
      \     void *buf, size_t length, off_t offset)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/cryptsetup/lib/utils_io.c:253,1
    - Dst: lseek
      Src: /src/cryptsetup/lib/utils_io.c:260,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/utils_io.c:264,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/utils_io.c:271,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/utils_io.c:275,1
    - Dst: read_blockwise
      Src: /src/cryptsetup/lib/utils_io.c:281,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_io.c:285,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 6
    argNames:
    - fd
    - bsize
    - alignment
    - buf
    - length
    - offset
    argTypes:
    - int
    - size_t
    - size_t
    - void*
    - size_t
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 242
    functionDepth: 3
    functionLinenumber: 242
    functionLinenumberEnd: 287
    functionName: read_lseek_blockwise
    functionSourceFile: /src/cryptsetup/lib/utils_io.c
    functionUses: 4
    functionsReached:
    - read_buffer
    - lseek
    - read_blockwise
    - memcpy
    - free
    - posix_memalign
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t read_lseek_blockwise(int fd, size_t bsize, size_t alignment,\n\t\t\t
      \    void *buf, size_t length, off_t offset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fstatvfs
      Src: /src/cryptsetup/lib/utils_device.c:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: device_fs_block_size_fd
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - fstatvfs
    linkageType: ''
    returnType: size_t
    signature: size_t device_fs_block_size_fd(int fd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device.c:72,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device.c:75,1
    - Dst: device_fs_block_size_fd
      Src: /src/cryptsetup/lib/utils_device.c:76,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_device.c:78,1
    - Dst: crypt_getpagesize
      Src: /src/cryptsetup/lib/utils_device.c:79,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device.c:87,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - fd
    - min_size
    argTypes:
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 99
    functionName: device_block_size_fd
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - device_fs_block_size_fd
    - ioctl
    - fstat
    - crypt_getpagesize
    - S_ISREG
    linkageType: ''
    returnType: size_t
    signature: size_t device_block_size_fd(int fd, size_t *min_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device.c:107,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device.c:110,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_device.c:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 116
    functionName: device_block_phys_size_fd
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - S_ISREG
    - ioctl
    - fstat
    linkageType: ''
    returnType: size_t
    signature: size_t device_block_phys_size_fd(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fpathconf
      Src: /src/cryptsetup/lib/utils_device.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - devfd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 128
    functionName: device_alignment_fd
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - fpathconf
    linkageType: ''
    returnType: size_t
    signature: size_t device_alignment_fd(int devfd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device.c:138,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:141,1
    - Dst: device_block_size_fd
      Src: /src/cryptsetup/lib/utils_device.c:144,1
    - Dst: device_alignment_fd
      Src: /src/cryptsetup/lib/utils_device.c:145,1
    - Dst: read_blockwise
      Src: /src/cryptsetup/lib/utils_device.c:156,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:157,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:160,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/utils_device.c:164,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - cd
    - devfd
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 166
    functionName: device_read_test
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - read_blockwise
    - device_block_size_fd
    - fstat
    - log_dbg
    - device_alignment_fd
    - crypt_safe_memzero
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int device_read_test(struct crypt_device *cd, int devfd)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:186,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:187,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:189,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:189,1
    - Dst: device_read_test
      Src: /src/cryptsetup/lib/utils_device.c:191,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:194,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:201,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:202,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:203,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:203,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:207,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:207,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:208,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device.c:212,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:214,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device.c:215,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:217,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:217,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:218,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:219,1
    - Dst: device_alignment_fd
      Src: /src/cryptsetup/lib/utils_device.c:224,1
    - Dst: device_block_size_fd
      Src: /src/cryptsetup/lib/utils_device.c:228,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:232,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 176
    functionDepth: 4
    functionLinenumber: 176
    functionLinenumberEnd: 234
    functionName: device_ready
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - _
    - fstat
    - device_block_size_fd
    - device_read_test
    - open
    - S_ISREG
    - log_dbg
    - device_path
    - log_err
    - device_alignment_fd
    - close
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int device_ready(struct crypt_device *cd, struct device *device)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:243,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:243,1
    - Dst: device_locked_readonly
      Src: /src/cryptsetup/lib/utils_device.c:245,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:246,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:246,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:250,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:250,1
    - Dst: device_locked_verify
      Src: /src/cryptsetup/lib/utils_device.c:254,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:256,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:257,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:257,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - cd
    - device
    - flags
    argTypes:
    - struct crypt_device*
    - struct device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 262
    functionName: _open_locked
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 1
    functionsReached:
    - close
    - device_locked_readonly
    - log_dbg
    - device_path
    - device_locked_verify
    - open
    linkageType: ''
    returnType: int
    signature: int _open_locked(struct crypt_device *cd, struct device *device, int
      flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fsync
      Src: /src/cryptsetup/lib/utils_device.c:272,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:273,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 274
    functionName: device_sync
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - fsync
    - device_path
    linkageType: ''
    returnType: void
    signature: void device_sync(struct crypt_device *cd, struct device *device)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:297,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:297,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:300,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:300,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device.c:304,1
    - Dst: _open_locked
      Src: /src/cryptsetup/lib/utils_device.c:305,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:307,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:307,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:310,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:311,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - cd
    - device
    - flags
    argTypes:
    - struct crypt_device*
    - struct device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 322
    functionName: device_open_internal
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - device_locked
    - log_dbg
    - device_path
    - _open_locked
    - open
    linkageType: ''
    returnType: int
    signature: int device_open_internal(struct crypt_device *cd, struct device *device,
      int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_device.c:329,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device.c:329,1
    - Dst: device_open_internal
      Src: /src/cryptsetup/lib/utils_device.c:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cd
    - device
    - flags
    argTypes:
    - struct crypt_device*
    - struct device*
    - int
    assertStmts:
    - condition: (!device_locked(device->lh))
      pos:
        line_end: 328
        line_start: 328
        source_file: /src/cryptsetup/lib/utils_device.c
    constantsTouched: []
    func_position:
      end: 331
      start: 324
    functionDepth: 3
    functionLinenumber: 324
    functionLinenumberEnd: 331
    functionName: device_open
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 2
    functionsReached:
    - device_open_internal
    - device_locked
    - assert
    linkageType: ''
    returnType: int
    signature: int device_open(struct crypt_device *cd, struct device *device, int
      flags)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_device.c:341,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device.c:341,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:344,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device.c:345,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:347,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:348,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:353,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device.c:356,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:356,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:357,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:359,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:362,1
    - Dst: device_open_internal
      Src: /src/cryptsetup/lib/utils_device.c:366,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - cd
    - device
    - flags
    argTypes:
    - struct crypt_device*
    - struct device*
    - int
    assertStmts:
    - condition: (!device_locked(device->lh))
      pos:
        line_end: 340
        line_start: 340
        source_file: /src/cryptsetup/lib/utils_device.c
    constantsTouched: []
    func_position:
      end: 367
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 367
    functionName: device_open_excl
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - fstat
    - close
    - device_open_internal
    - device_locked
    - assert
    - log_dbg
    - device_path
    - stat
    - open
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int device_open_excl(struct crypt_device *cd, struct device *device,
      int flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:372,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:373,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:374,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:376,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:376,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 379
    functionName: device_release_excl
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - close
    - device_path
    - log_dbg
    linkageType: ''
    returnType: void
    signature: void device_release_excl(struct crypt_device *cd, struct device *device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_device.c:386,1
    - Dst: crypt_metadata_locking_enabled
      Src: /src/cryptsetup/lib/utils_device.c:386,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device.c:386,1
    - Dst: device_open_internal
      Src: /src/cryptsetup/lib/utils_device.c:387,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - cd
    - device
    - flags
    argTypes:
    - struct crypt_device*
    - struct device*
    - int
    assertStmts:
    - condition: (!crypt_metadata_locking_enabled() || device_locked(device->lh))
      pos:
        line_end: 385
        line_start: 385
        source_file: /src/cryptsetup/lib/utils_device.c
    constantsTouched: []
    func_position:
      end: 388
      start: 381
    functionDepth: 3
    functionLinenumber: 381
    functionLinenumberEnd: 388
    functionName: device_open_locked
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 1
    functionsReached:
    - device_open_internal
    - crypt_metadata_locking_enabled
    - device_locked
    - assert
    linkageType: ''
    returnType: int
    signature: int device_open_locked(struct crypt_device *cd, struct device *device,
      int flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/utils_device.c:400,1
    - Dst: memset
      Src: /src/cryptsetup/lib/utils_device.c:404,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_device.c:405,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device.c:407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - device
    - path
    argTypes:
    - struct device**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 418
    functionName: device_alloc_no_check
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 1
    functionsReached:
    - memset
    - strdup
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: int device_alloc_no_check(struct device **device, const char *path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: device_alloc_no_check
      Src: /src/cryptsetup/lib/utils_device.c:425,1
    - Dst: device_ready
      Src: /src/cryptsetup/lib/utils_device.c:430,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device.c:436,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device.c:437,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - cd
    - device
    - path
    argTypes:
    - struct crypt_device*
    - struct device**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 420
    functionDepth: 5
    functionLinenumber: 420
    functionLinenumberEnd: 444
    functionName: device_alloc
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 14
    functionsReached:
    - device_ready
    - device_alloc_no_check
    - free
    linkageType: ''
    returnType: int
    signature: int device_alloc(struct crypt_device *cd, struct device **device, const
      char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: device_close
      Src: /src/cryptsetup/lib/utils_device.c:451,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:454,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:454,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:455,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:459,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:460,1
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_device.c:463,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device.c:463,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device.c:465,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device.c:466,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device.c:467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts:
    - condition: (!device_locked(device->lh))
      pos:
        line_end: 462
        line_start: 462
        source_file: /src/cryptsetup/lib/utils_device.c
    constantsTouched: []
    func_position:
      end: 468
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 468
    functionName: device_free
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 17
    functionsReached:
    - device_close
    - free
    - device_locked
    - assert
    - log_dbg
    - device_path
    - close
    linkageType: ''
    returnType: void
    signature: void device_free(struct crypt_device *cd, struct device *device)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 477
    functionName: device_block_path
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *device_block_path(const struct device *device)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 489
    functionName: device_path
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *device_path(const struct device *device)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:515,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_device.c:520,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:521,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_device.c:527,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_device.c:531,1
    - Dst: MISALIGNED_4K
      Src: /src/cryptsetup/lib/utils_device.c:543,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:546,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:546,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:552,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:555,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 29
    argCount: 5
    argNames:
    - cd
    - device
    - required_alignment
    - alignment_offset
    - default_alignment
    argTypes:
    - struct crypt_device*
    - struct device*
    - unsigned long*
    - unsigned long*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 556
    functionName: device_topology_alignment
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 2
    functionsReached:
    - _
    - ioctl
    - close
    - log_err
    - log_dbg
    - open
    - MISALIGNED_4K
    linkageType: ''
    returnType: void
    signature: "void device_topology_alignment(struct crypt_device *cd,\n\t\t\t       struct
      device *device,\n\t\t\t       unsigned long *required_alignment, /* bytes */\n\t\t\t
      \      unsigned long *alignment_offset,   /* bytes */\n\t\t\t       unsigned
      long default_alignment)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:568,1
    - Dst: device_block_size_fd
      Src: /src/cryptsetup/lib/utils_device.c:570,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:571,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:575,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:575,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 558
    functionDepth: 2
    functionLinenumber: 558
    functionLinenumberEnd: 578
    functionName: device_block_size
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 6
    functionsReached:
    - close
    - device_block_size_fd
    - log_dbg
    - device_path
    - open
    linkageType: ''
    returnType: size_t
    signature: size_t device_block_size(struct crypt_device *cd, struct device *device)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:588,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:590,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:590,1
    - Dst: device_block_size_fd
      Src: /src/cryptsetup/lib/utils_device.c:595,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:597,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:598,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:598,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:603,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/utils_device.c:604,1
    - Dst: device_block_phys_size_fd
      Src: /src/cryptsetup/lib/utils_device.c:607,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:608,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/utils_device.c:613,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 580
    functionDepth: 2
    functionLinenumber: 580
    functionLinenumberEnd: 617
    functionName: device_optimal_encryption_sector_size
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 2
    functionsReached:
    - MISALIGNED
    - device_block_size_fd
    - close
    - log_dbg
    - device_path
    - open
    - device_block_phys_size_fd
    linkageType: ''
    returnType: size_t
    signature: size_t device_optimal_encryption_sector_size(struct crypt_device *cd,
      struct device *device)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:627,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_device.c:630,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:631,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - device
    - read_ahead
    argTypes:
    - struct device*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 637
    functionName: device_read_ahead
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 2
    functionsReached:
    - open
    - ioctl
    - close
    linkageType: ''
    returnType: int
    signature: int device_read_ahead(struct device *device, uint32_t *read_ahead)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:648,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device.c:652,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device.c:655,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_device.c:658,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:661,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - device
    - size
    argTypes:
    - struct device*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 663
    functionName: device_size
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 17
    functionsReached:
    - ioctl
    - close
    - fstat
    - S_ISREG
    - open
    linkageType: ''
    returnType: int
    signature: int device_size(struct device *device, uint64_t *size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:674,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:674,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device.c:678,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device.c:678,1
    - Dst: posix_fallocate
      Src: /src/cryptsetup/lib/utils_device.c:679,1
    - Dst: crypt_loop_resize
      Src: /src/cryptsetup/lib/utils_device.c:681,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:685,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - device
    - size
    argTypes:
    - struct device*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 687
    functionName: device_fallocate
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - crypt_loop_resize
    - fstat
    - close
    - S_ISREG
    - device_path
    - posix_fallocate
    - open
    linkageType: ''
    returnType: int
    signature: int device_fallocate(struct device *device, uint64_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: device_size
      Src: /src/cryptsetup/lib/utils_device.c:695,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:696,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:696,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:700,1
    - Dst: device_fallocate
      Src: /src/cryptsetup/lib/utils_device.c:704,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:707,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:707,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:708,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - cd
    - device
    - req_offset
    - falloc
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 689
    functionDepth: 2
    functionLinenumber: 689
    functionLinenumberEnd: 713
    functionName: device_check_size
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - _
    - device_size
    - device_fallocate
    - log_dbg
    - device_path
    - log_err
    linkageType: ''
    returnType: int
    signature: "int device_check_size(struct crypt_device *cd,\n\t\t      struct device
      *device,\n\t\t      uint64_t req_offset, int falloc)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device.c:730,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:736,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:741,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:744,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device.c:758,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_device.c:767,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/utils_device.c:770,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:778,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:788,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:788,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:789,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:792,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:792,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:792,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:795,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:795,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:795,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 64
    argCount: 5
    argNames:
    - cd
    - device
    - device_check
    - readonly
    - size
    argTypes:
    - struct crypt_device*
    - struct device*
    - enum devcheck
    - int*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 800
    functionName: device_info
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - _
    - ioctl
    - close
    - S_ISREG
    - log_err
    - device_path
    - stat
    - open
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: "int device_info(struct crypt_device *cd,\n\t\t       struct device
      *device,\n\t\t       enum devcheck device_check,\n\t\t       int *readonly,
      uint64_t *size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: device_info
      Src: /src/cryptsetup/lib/utils_device.c:806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - device
    - device_check
    argTypes:
    - struct crypt_device*
    - struct device*
    - enum devcheck
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 802
    functionDepth: 2
    functionLinenumber: 802
    functionLinenumberEnd: 807
    functionName: device_check_access
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 4
    functionsReached:
    - device_info
    linkageType: ''
    returnType: int
    signature: "int device_check_access(struct crypt_device *cd,\n\t\t\tstruct device
      *device,\n\t\t\tenum devcheck device_check)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getuid
      Src: /src/cryptsetup/lib/utils_device.c:817,1
    - Dst: geteuid
      Src: /src/cryptsetup/lib/utils_device.c:817,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:818,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:818,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:823,1
    - Dst: crypt_loop_attach
      Src: /src/cryptsetup/lib/utils_device.c:827,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:829,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:829,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device.c:831,1
    - Dst: device_ready
      Src: /src/cryptsetup/lib/utils_device.c:838,1
    - Dst: crypt_loop_detach
      Src: /src/cryptsetup/lib/utils_device.c:841,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device.c:842,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:846,1
    - Dst: device_block_size_fd
      Src: /src/cryptsetup/lib/utils_device.c:846,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 809
    functionDepth: 5
    functionLinenumber: 809
    functionLinenumberEnd: 853
    functionName: device_internal_prepare
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - getuid
    - crypt_loop_detach
    - _
    - free
    - device_block_size_fd
    - log_err
    - log_dbg
    - crypt_loop_attach
    - device_ready
    - geteuid
    linkageType: ''
    returnType: int
    signature: int device_internal_prepare(struct crypt_device *cd, struct device
      *device)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: device_internal_prepare
      Src: /src/cryptsetup/lib/utils_device.c:868,1
    - Dst: device_info
      Src: /src/cryptsetup/lib/utils_device.c:872,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:877,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:877,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:878,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:885,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:885,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:885,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:893,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device.c:896,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device.c:896,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:896,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:904,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 6
    argNames:
    - cd
    - device
    - device_check
    - device_offset
    - size
    - flags
    argTypes:
    - struct crypt_device*
    - struct device*
    - enum devcheck
    - uint64_t
    - uint64_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 855
    functionDepth: 6
    functionLinenumber: 855
    functionLinenumberEnd: 907
    functionName: device_block_adjust
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 6
    functionsReached:
    - _
    - device_internal_prepare
    - log_err
    - device_path
    - log_dbg
    - device_info
    linkageType: ''
    returnType: int
    signature: "int device_block_adjust(struct crypt_device *cd,\n\t\t\tstruct device
      *device,\n\t\t\tenum devcheck device_check,\n\t\t\tuint64_t device_offset,\n\t\t\tuint64_t
      *size,\n\t\t\tuint32_t *flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - size
    - block
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 909
    functionDepth: 0
    functionLinenumber: 909
    functionLinenumberEnd: 913
    functionName: size_round_up
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t size_round_up(size_t size, size_t block)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 915
    functionDepth: 0
    functionLinenumber: 915
    functionLinenumberEnd: 919
    functionName: device_disable_direct_io
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void device_disable_direct_io(struct device *device)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 921
    functionDepth: 0
    functionLinenumber: 921
    functionLinenumberEnd: 924
    functionName: device_direct_io
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int device_direct_io(const struct device *device)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device.c:930,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device.c:930,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:933,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:933,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device.c:936,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device.c:936,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 2
    argNames:
    - path1
    - path2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 941
    functionName: device_compare_path
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - S_ISBLK
    - S_ISREG
    - stat
    linkageType: ''
    returnType: int
    signature: int device_compare_path(const char *path1, const char *path2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_device.c:951,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:951,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:951,1
    - Dst: device_compare_path
      Src: /src/cryptsetup/lib/utils_device.c:954,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:954,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:954,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - device1
    - device2
    argTypes:
    - struct device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 955
    functionName: device_is_identical
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 5
    functionsReached:
    - device_path
    - strcmp
    - device_compare_path
    linkageType: ''
    returnType: int
    signature: int device_is_identical(struct device *device1, struct device *device2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device.c:964,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:964,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:967,1
    - Dst: crypt_dev_is_rotational
      Src: /src/cryptsetup/lib/utils_device.c:970,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_device.c:970,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_device.c:970,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 971
    functionName: device_is_rotational
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 1
    functionsReached:
    - crypt_dev_is_rotational
    - minor
    - major
    - device_path
    - stat
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int device_is_rotational(struct device *device)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device.c:980,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:980,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:983,1
    - Dst: crypt_dev_is_dax
      Src: /src/cryptsetup/lib/utils_device.c:986,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_device.c:986,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_device.c:986,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 987
    functionName: device_is_dax
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 2
    functionsReached:
    - crypt_dev_is_dax
    - minor
    - major
    - device_path
    - stat
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int device_is_dax(struct device *device)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device.c:996,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:996,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:999,1
    - Dst: crypt_dev_is_zoned
      Src: /src/cryptsetup/lib/utils_device.c:1002,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_device.c:1002,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_device.c:1002,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 989
    functionDepth: 2
    functionLinenumber: 989
    functionLinenumberEnd: 1003
    functionName: device_is_zoned
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 2
    functionsReached:
    - minor
    - major
    - device_path
    - stat
    - S_ISBLK
    - crypt_dev_is_zoned
    linkageType: ''
    returnType: int
    signature: int device_is_zoned(struct device *device)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_base_device
      Src: /src/cryptsetup/lib/utils_device.c:1019,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:1019,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device.c:1021,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device.c:1022,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device.c:1024,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:1024,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device.c:1029,1
    - Dst: crypt_dev_is_nop_dif
      Src: /src/cryptsetup/lib/utils_device.c:1032,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_device.c:1032,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_device.c:1032,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - device
    - tag_size
    argTypes:
    - struct device*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1005
    functionDepth: 2
    functionLinenumber: 1005
    functionLinenumberEnd: 1033
    functionName: device_is_nop_dif
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 1
    functionsReached:
    - crypt_get_base_device
    - crypt_dev_is_nop_dif
    - free
    - minor
    - major
    - device_path
    - stat
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int device_is_nop_dif(struct device *device, uint32_t *tag_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device.c:1043,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:1043,1
    - Dst: device_alignment_fd
      Src: /src/cryptsetup/lib/utils_device.c:1045,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:1046,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1051
    functionName: device_alignment
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 2
    functionsReached:
    - open
    - device_path
    - close
    - device_alignment_fd
    linkageType: ''
    returnType: size_t
    signature: size_t device_alignment(struct device *device)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - device
    - h
    argTypes:
    - struct device*
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1057
    functionName: device_set_lock_handle
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void device_set_lock_handle(struct device *device, struct crypt_lock_handle
      *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1059
    functionDepth: 0
    functionLinenumber: 1059
    functionLinenumberEnd: 1062
    functionName: device_get_lock_handle
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct crypt_lock_handle
    signature: struct crypt_lock_handle *device_get_lock_handle(struct device *device)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_locking_enabled
      Src: /src/cryptsetup/lib/utils_device.c:1066,1
    - Dst: device_read_lock_internal
      Src: /src/cryptsetup/lib/utils_device.c:1069,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1073
    functionName: device_read_lock
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - crypt_metadata_locking_enabled
    - device_read_lock_internal
    linkageType: ''
    returnType: int
    signature: int device_read_lock(struct crypt_device *cd, struct device *device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_locking_enabled
      Src: /src/cryptsetup/lib/utils_device.c:1077,1
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_device.c:1080,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device.c:1080,1
    - Dst: device_locked_readonly
      Src: /src/cryptsetup/lib/utils_device.c:1080,1
    - Dst: device_write_lock_internal
      Src: /src/cryptsetup/lib/utils_device.c:1082,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts:
    - condition: (!device_locked(device->lh) || !device_locked_readonly(device->lh))
      pos:
        line_end: 1079
        line_start: 1079
        source_file: /src/cryptsetup/lib/utils_device.c
    constantsTouched: []
    func_position:
      end: 1083
      start: 1075
    functionDepth: 1
    functionLinenumber: 1075
    functionLinenumberEnd: 1083
    functionName: device_write_lock
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - device_locked_readonly
    - device_locked
    - assert
    - crypt_metadata_locking_enabled
    - device_write_lock_internal
    linkageType: ''
    returnType: int
    signature: int device_write_lock(struct crypt_device *cd, struct device *device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_locking_enabled
      Src: /src/cryptsetup/lib/utils_device.c:1087,1
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_device.c:1090,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device.c:1090,1
    - Dst: device_unlock_internal
      Src: /src/cryptsetup/lib/utils_device.c:1092,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts:
    - condition: (device_locked(device->lh))
      pos:
        line_end: 1089
        line_start: 1089
        source_file: /src/cryptsetup/lib/utils_device.c
    constantsTouched: []
    func_position:
      end: 1093
      start: 1085
    functionDepth: 1
    functionLinenumber: 1085
    functionLinenumberEnd: 1093
    functionName: device_read_unlock
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - device_unlock_internal
    - crypt_metadata_locking_enabled
    - device_locked
    - assert
    linkageType: ''
    returnType: void
    signature: void device_read_unlock(struct crypt_device *cd, struct device *device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_locking_enabled
      Src: /src/cryptsetup/lib/utils_device.c:1097,1
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_device.c:1100,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device.c:1100,1
    - Dst: device_locked_readonly
      Src: /src/cryptsetup/lib/utils_device.c:1100,1
    - Dst: device_unlock_internal
      Src: /src/cryptsetup/lib/utils_device.c:1102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts:
    - condition: (device_locked(device->lh) && !device_locked_readonly(device->lh))
      pos:
        line_end: 1099
        line_start: 1099
        source_file: /src/cryptsetup/lib/utils_device.c
    constantsTouched: []
    func_position:
      end: 1103
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1103
    functionName: device_write_unlock
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 0
    functionsReached:
    - device_locked_readonly
    - device_unlock_internal
    - device_locked
    - assert
    - crypt_metadata_locking_enabled
    linkageType: ''
    returnType: void
    signature: void device_write_unlock(struct crypt_device *cd, struct device *device)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device.c:1107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - device
    argTypes:
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1108
    functionName: device_is_locked
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 1
    functionsReached:
    - device_locked
    linkageType: ''
    returnType: bool
    signature: bool device_is_locked(struct device *device)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:1116,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:1116,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:1117,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:1118,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:1118,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:1123,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:1123,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device.c:1124,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device.c:1125,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device.c:1125,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1110
    functionDepth: 1
    functionLinenumber: 1110
    functionLinenumberEnd: 1128
    functionName: device_close
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 2
    functionsReached:
    - log_dbg
    - device_path
    - close
    linkageType: ''
    returnType: void
    signature: void device_close(struct crypt_device *cd, struct device *device)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - device
    - size
    argTypes:
    - struct device*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1130
    functionDepth: 0
    functionLinenumber: 1130
    functionLinenumberEnd: 1136
    functionName: device_set_block_size
    functionSourceFile: /src/cryptsetup/lib/utils_device.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void device_set_block_size(struct device *device, size_t size)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_crypt.c:29,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_crypt.c:31,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/utils_crypt.c:33,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:39,1
    - Dst: strcpy
      Src: /src/cryptsetup/lib/utils_crypt.c:40,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/utils_crypt.c:42,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/utils_crypt.c:43,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:52,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:52,1
    - Dst: strcpy
      Src: /src/cryptsetup/lib/utils_crypt.c:53,1
    - Dst: strcpy
      Src: /src/cryptsetup/lib/utils_crypt.c:54,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_crypt.c:60,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_crypt.c:61,1
    - Dst: strcpy
      Src: /src/cryptsetup/lib/utils_crypt.c:62,1
    - Dst: strcpy
      Src: /src/cryptsetup/lib/utils_crypt.c:64,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 4
    argNames:
    - s
    - cipher
    - key_nums
    - cipher_mode
    argTypes:
    - char*
    - char*
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 71
    functionName: crypt_parse_name_and_mode
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 12
    functionsReached:
    - strncmp
    - strcpy
    - sscanf
    - strcmp
    - atoi
    - strchr
    linkageType: ''
    returnType: int
    signature: "int crypt_parse_name_and_mode(const char *s, char *cipher, int *key_nums,\n\t\t\t
      \     char *cipher_mode)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/cryptsetup/lib/utils_crypt.c:78,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/utils_crypt.c:78,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_crypt.c:81,1
    - Dst: isdigit
      Src: /src/cryptsetup/lib/utils_crypt.c:82,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_crypt.c:83,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_crypt.c:85,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_crypt.c:87,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 2
    argNames:
    - s
    - integrity
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 95
    functionName: crypt_parse_hash_integrity_mode
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 3
    functionsReached:
    - isdigit
    - sscanf
    - snprintf
    - strchr
    linkageType: ''
    returnType: int
    signature: int crypt_parse_hash_integrity_mode(const char *s, char *integrity)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:106,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:107,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:108,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_crypt.c:109,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:113,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_crypt.c:114,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:116,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_crypt.c:117,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:119,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_crypt.c:120,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:122,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_crypt.c:123,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:127,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_crypt.c:128,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:132,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_crypt.c:133,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:137,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_crypt.c:138,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 4
    argNames:
    - s
    - integrity
    - integrity_key_size
    - required_key_size
    argTypes:
    - char*
    - char*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 149
    functionName: crypt_parse_integrity_mode
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 2
    functionsReached:
    - strcmp
    - strncpy
    linkageType: ''
    returnType: int
    signature: "int crypt_parse_integrity_mode(const char *s, char *integrity,\n\t\t\t
      \      int *integrity_key_size, int required_key_size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/utils_crypt.c:158,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/utils_crypt.c:160,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/utils_crypt.c:162,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - s
    - pbkdf
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 172
    functionName: crypt_parse_pbkdf
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 2
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int crypt_parse_pbkdf(const char *s, const char **pbkdf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 203
    functionName: hex_to_bin
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int hex_to_bin(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 208
    functionName: hex2asc
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char hex2asc(unsigned char c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/lib/utils_crypt.c:219,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/utils_crypt.c:224,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/utils_crypt.c:224,1
    - Dst: hex_to_bin
      Src: /src/cryptsetup/lib/utils_crypt.c:229,1
    - Dst: hex_to_bin
      Src: /src/cryptsetup/lib/utils_crypt.c:230,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/utils_crypt.c:232,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_crypt.c:232,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - hex
    - result
    - safe_alloc
    argTypes:
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 239
    functionName: crypt_hex_to_bytes
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 5
    functionsReached:
    - crypt_safe_alloc
    - free
    - malloc
    - crypt_safe_free
    - hex_to_bin
    - strlen
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t crypt_hex_to_bytes(const char *hex, char **result, int safe_alloc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/utils_crypt.c:251,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/utils_crypt.c:253,1
    - Dst: hex2asc
      Src: /src/cryptsetup/lib/utils_crypt.c:260,1
    - Dst: hex2asc
      Src: /src/cryptsetup/lib/utils_crypt.c:261,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - size
    - bytes
    argTypes:
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 265
    functionName: crypt_bytes_to_hex
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 5
    functionsReached:
    - hex2asc
    - crypt_safe_alloc
    linkageType: ''
    returnType: char
    signature: char *crypt_bytes_to_hex(size_t size, const char *bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_logf
      Src: /src/cryptsetup/lib/utils_crypt.c:275,1
    - Dst: crypt_logf
      Src: /src/cryptsetup/lib/utils_crypt.c:276,1
    - Dst: hex2asc
      Src: /src/cryptsetup/lib/utils_crypt.c:277,1
    - Dst: hex2asc
      Src: /src/cryptsetup/lib/utils_crypt.c:278,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 6
    argNames:
    - cd
    - bytes
    - size
    - sep
    - numwrap
    - wrapsep
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 280
    functionName: crypt_log_hex
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 7
    functionsReached:
    - hex2asc
    - crypt_logf
    linkageType: ''
    returnType: void
    signature: "void crypt_log_hex(struct crypt_device *cd,\n\t\t   const char *bytes,
      size_t size,\n\t\t   const char *sep, int numwrap, const char *wrapsep)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/cryptsetup/lib/utils_crypt.c:286,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/utils_crypt.c:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - cipher_spec
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 287
    functionName: crypt_is_cipher_null
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 14
    functionsReached:
    - strcmp
    - strstr
    linkageType: ''
    returnType: bool
    signature: bool crypt_is_cipher_null(const char *cipher_spec)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/utils_crypt.c:301,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_crypt.c:302,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_crypt.c:305,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_crypt.c:306,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_crypt.c:316,1
    - Dst: strrchr
      Src: /src/cryptsetup/lib/utils_crypt.c:321,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_crypt.c:324,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/utils_crypt.c:329,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_crypt.c:336,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_crypt.c:337,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_crypt.c:339,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_crypt.c:340,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_crypt.c:342,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_crypt.c:343,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_crypt.c:347,1
    - Dst: memset
      Src: /src/cryptsetup/lib/utils_crypt.c:351,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/utils_crypt.c:352,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/utils_crypt.c:355,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_crypt.c:357,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_crypt.c:359,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_crypt.c:361,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_crypt.c:366,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_crypt.c:367,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 66
    argCount: 4
    argNames:
    - org_c
    - org_i
    - c_dm
    - i_dm
    argTypes:
    - char**
    - char**
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 373
    functionName: crypt_capi_to_cipher
    functionSourceFile: /src/cryptsetup/lib/utils_crypt.c
    functionUses: 2
    functionsReached:
    - memset
    - free
    - snprintf
    - strncmp
    - strncpy
    - strdup
    - sscanf
    - strrchr
    - strlen
    linkageType: ''
    returnType: int
    signature: int crypt_capi_to_cipher(char **org_c, char **org_i, const char *c_dm,
      const char *i_dm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - buf1
    - ','
    - buf2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 29
    functionName: same_inode
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: same_inode(buf1, buf2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_device_locking.c:61,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_device_locking.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - res
    - res_size
    - name
    - fullpath
    argTypes:
    - char*
    - size_t
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 66
    functionName: resource_by_name
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int resource_by_name(char *res, size_t res_size, const char *name,
      bool fullpath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_device_locking.c:73,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_device_locking.c:73,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_device_locking.c:73,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/utils_device_locking.c:75,1
    - Dst: major
      Src: /src/cryptsetup/lib/utils_device_locking.c:75,1
    - Dst: minor
      Src: /src/cryptsetup/lib/utils_device_locking.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - res
    - res_size
    - devno
    - fullpath
    argTypes:
    - char*
    - size_t
    - dev_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 78
    functionName: resource_by_devno
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - minor
    - snprintf
    - major
    linkageType: ''
    returnType: int
    signature: int resource_by_devno(char *res, size_t res_size, dev_t devno, unsigned
      fullpath)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device_locking.c:84,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:86,1
    - Dst: strerror
      Src: /src/cryptsetup/lib/utils_device_locking.c:86,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device_locking.c:88,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device_locking.c:88,1
    - Dst: openat
      Src: /src/cryptsetup/lib/utils_device_locking.c:92,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:95,1
    - Dst: mkdirat
      Src: /src/cryptsetup/lib/utils_device_locking.c:98,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:99,1
    - Dst: strerror
      Src: /src/cryptsetup/lib/utils_device_locking.c:99,1
    - Dst: openat
      Src: /src/cryptsetup/lib/utils_device_locking.c:101,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:103,1
    - Dst: strerror
      Src: /src/cryptsetup/lib/utils_device_locking.c:103,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/utils_device_locking.c:105,1
    - Dst: _
      Src: /src/cryptsetup/lib/utils_device_locking.c:105,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device_locking.c:109,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - cd
    - dir
    - base
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 111
    functionName: open_lock_dir
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - _
    - mkdirat
    - strerror
    - close
    - openat
    - log_err
    - log_dbg
    - open
    linkageType: ''
    returnType: int
    signature: int open_lock_dir(struct crypt_device *cd, const char *dir, const char
      *base)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open_lock_dir
      Src: /src/cryptsetup/lib/utils_device_locking.c:119,1
    - Dst: dirname
      Src: /src/cryptsetup/lib/utils_device_locking.c:119,1
    - Dst: basename
      Src: /src/cryptsetup/lib/utils_device_locking.c:119,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:123,1
    - Dst: openat
      Src: /src/cryptsetup/lib/utils_device_locking.c:124,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device_locking.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - res
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 130
    functionName: open_resource
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - openat
    - log_dbg
    - dirname
    - open_lock_dir
    - close
    - basename
    linkageType: ''
    returnType: int
    signature: int open_resource(struct crypt_device *cd, const char *res)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device_locking.c:138,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:138,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device_locking.c:142,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device_locking.c:143,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device_locking.c:147,1
    - Dst: resource_by_devno
      Src: /src/cryptsetup/lib/utils_device_locking.c:148,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device_locking.c:149,1
    - Dst: open_resource
      Src: /src/cryptsetup/lib/utils_device_locking.c:153,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device_locking.c:154,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device_locking.c:161,1
    - Dst: open
      Src: /src/cryptsetup/lib/utils_device_locking.c:163,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:163,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device_locking.c:168,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device_locking.c:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 3
    argNames:
    - cd
    - device
    - h
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 132
    functionDepth: 3
    functionLinenumber: 132
    functionLinenumberEnd: 178
    functionName: acquire_lock_handle
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - open_resource
    - close
    - fstat
    - S_ISREG
    - device_path
    - resource_by_devno
    - open
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int acquire_lock_handle(struct crypt_device *cd, struct device *device,
      struct crypt_lock_handle *h)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/cryptsetup/lib/utils_device_locking.c:185,1
    - Dst: resource_by_name
      Src: /src/cryptsetup/lib/utils_device_locking.c:189,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device_locking.c:190,1
    - Dst: open_resource
      Src: /src/cryptsetup/lib/utils_device_locking.c:194,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device_locking.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - cd
    - name
    - h
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 204
    functionName: acquire_lock_handle_by_name
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - strdup
    - open_resource
    - free
    - resource_by_name
    linkageType: ''
    returnType: int
    signature: int acquire_lock_handle_by_name(struct crypt_device *cd, const char
      *name, struct crypt_lock_handle *h)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: flock
      Src: /src/cryptsetup/lib/utils_device_locking.c:212,1
    - Dst: resource_by_name
      Src: /src/cryptsetup/lib/utils_device_locking.c:213,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device_locking.c:214,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device_locking.c:215,1
    - Dst: same_inode
      Src: /src/cryptsetup/lib/utils_device_locking.c:216,1
    - Dst: unlink
      Src: /src/cryptsetup/lib/utils_device_locking.c:218,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:219,1
    - Dst: flock
      Src: /src/cryptsetup/lib/utils_device_locking.c:223,1
    - Dst: resource_by_devno
      Src: /src/cryptsetup/lib/utils_device_locking.c:224,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device_locking.c:225,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device_locking.c:226,1
    - Dst: same_inode
      Src: /src/cryptsetup/lib/utils_device_locking.c:227,1
    - Dst: unlink
      Src: /src/cryptsetup/lib/utils_device_locking.c:229,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:230,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device_locking.c:234,1
    - Dst: close
      Src: /src/cryptsetup/lib/utils_device_locking.c:236,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:237,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 13
    argCount: 2
    argNames:
    - cd
    - h
    argTypes:
    - struct crypt_device*
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 238
    functionName: release_lock_handle
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - free
    - fstat
    - resource_by_name
    - same_inode
    - unlink
    - flock
    - log_dbg
    - resource_by_devno
    - stat
    - close
    linkageType: ''
    returnType: void
    signature: void release_lock_handle(struct crypt_device *cd, struct crypt_lock_handle
      *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: device_locked
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int device_locked(struct crypt_lock_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: device_locked_readonly
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int device_locked_readonly(struct crypt_lock_handle *h)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: resource_by_name
      Src: /src/cryptsetup/lib/utils_device_locking.c:260,1
    - Dst: resource_by_devno
      Src: /src/cryptsetup/lib/utils_device_locking.c:263,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device_locking.c:268,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device_locking.c:271,1
    - Dst: same_inode
      Src: /src/cryptsetup/lib/utils_device_locking.c:271,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 272
    functionName: verify_lock_handle
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - fstat
    - resource_by_name
    - same_inode
    - resource_by_devno
    - stat
    linkageType: ''
    returnType: int
    signature: int verify_lock_handle(struct crypt_lock_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: device_lock_inc
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned device_lock_inc(struct crypt_lock_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_device_locking.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct crypt_lock_handle*
    assertStmts:
    - condition: (h->refcnt)
      pos:
        line_end: 280
        line_start: 280
        source_file: /src/cryptsetup/lib/utils_device_locking.c
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: device_lock_dec
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: unsigned
    signature: unsigned device_lock_dec(struct crypt_lock_handle *h)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/utils_device_locking.c:294,1
    - Dst: acquire_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:298,1
    - Dst: acquire_lock_handle_by_name
      Src: /src/cryptsetup/lib/utils_device_locking.c:298,1
    - Dst: flock
      Src: /src/cryptsetup/lib/utils_device_locking.c:302,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:303,1
    - Dst: release_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:305,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:309,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:309,1
    - Dst: verify_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:315,1
    - Dst: flock
      Src: /src/cryptsetup/lib/utils_device_locking.c:317,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:318,1
    - Dst: release_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:319,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:320,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device_locking.c:325,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 5
    argNames:
    - cd
    - device
    - resource
    - flock_op
    - lock
    argTypes:
    - struct crypt_device*
    - struct device*
    - char*
    - int
    - struct crypt_lock_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 286
    functionDepth: 4
    functionLinenumber: 286
    functionLinenumberEnd: 332
    functionName: acquire_and_verify
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 0
    functionsReached:
    - free
    - verify_lock_handle
    - malloc
    - flock
    - acquire_lock_handle
    - log_dbg
    - device_path
    - acquire_lock_handle_by_name
    - release_lock_handle
    linkageType: ''
    returnType: int
    signature: int acquire_and_verify(struct crypt_device *cd, struct device *device,
      const char *resource, int flock_op, struct crypt_lock_handle **lock)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: device_get_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:342,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device_locking.c:344,1
    - Dst: device_lock_inc
      Src: /src/cryptsetup/lib/utils_device_locking.c:345,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:346,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:346,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:350,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:350,1
    - Dst: acquire_and_verify
      Src: /src/cryptsetup/lib/utils_device_locking.c:352,1
    - Dst: device_set_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:358,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:360,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:360,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 334
    functionDepth: 5
    functionLinenumber: 334
    functionLinenumberEnd: 363
    functionName: device_read_lock_internal
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 1
    functionsReached:
    - acquire_and_verify
    - device_get_lock_handle
    - device_locked
    - log_dbg
    - device_path
    - device_lock_inc
    - device_set_lock_handle
    linkageType: ''
    returnType: int
    signature: int device_read_lock_internal(struct crypt_device *cd, struct device
      *device)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: device_get_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:373,1
    - Dst: device_locked
      Src: /src/cryptsetup/lib/utils_device_locking.c:375,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:376,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:376,1
    - Dst: device_lock_inc
      Src: /src/cryptsetup/lib/utils_device_locking.c:377,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:380,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:380,1
    - Dst: acquire_and_verify
      Src: /src/cryptsetup/lib/utils_device_locking.c:382,1
    - Dst: device_set_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:388,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:390,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 365
    functionDepth: 5
    functionLinenumber: 365
    functionLinenumberEnd: 393
    functionName: device_write_lock_internal
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 1
    functionsReached:
    - acquire_and_verify
    - device_get_lock_handle
    - device_locked
    - log_dbg
    - device_path
    - device_lock_inc
    - device_set_lock_handle
    linkageType: ''
    returnType: int
    signature: int device_write_lock_internal(struct crypt_device *cd, struct device
      *device)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:403,1
    - Dst: acquire_and_verify
      Src: /src/cryptsetup/lib/utils_device_locking.c:405,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:412,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - cd
    - resource
    - blocking
    - lock
    argTypes:
    - struct crypt_device*
    - char*
    - bool
    - struct crypt_lock_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 395
    functionDepth: 5
    functionLinenumber: 395
    functionLinenumberEnd: 417
    functionName: crypt_write_lock
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - acquire_and_verify
    linkageType: ''
    returnType: int
    signature: int crypt_write_lock(struct crypt_device *cd, const char *resource,
      bool blocking, struct crypt_lock_handle **lock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flock
      Src: /src/cryptsetup/lib/utils_device_locking.c:421,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:422,1
    - Dst: release_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:423,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_device_locking.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - h
    argTypes:
    - struct crypt_device*
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 419
    functionDepth: 2
    functionLinenumber: 419
    functionLinenumberEnd: 425
    functionName: unlock_internal
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 3
    functionsReached:
    - log_dbg
    - free
    - release_lock_handle
    - flock
    linkageType: ''
    returnType: void
    signature: void unlock_internal(struct crypt_device *cd, struct crypt_lock_handle
      *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/utils_device_locking.c:433,1
    - Dst: device_lock_dec
      Src: /src/cryptsetup/lib/utils_device_locking.c:433,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:435,1
    - Dst: device_locked_readonly
      Src: /src/cryptsetup/lib/utils_device_locking.c:436,1
    - Dst: unlock_internal
      Src: /src/cryptsetup/lib/utils_device_locking.c:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cd
    - h
    argTypes:
    - struct crypt_device*
    - struct crypt_lock_handle*
    assertStmts:
    - condition: (!device_lock_dec(h))
      pos:
        line_end: 432
        line_start: 432
        source_file: /src/cryptsetup/lib/utils_device_locking.c
    constantsTouched: []
    func_position:
      end: 439
      start: 427
    functionDepth: 3
    functionLinenumber: 427
    functionLinenumberEnd: 439
    functionName: crypt_unlock_internal
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 1
    functionsReached:
    - device_locked_readonly
    - assert
    - log_dbg
    - device_lock_dec
    - unlock_internal
    linkageType: ''
    returnType: void
    signature: void crypt_unlock_internal(struct crypt_device *cd, struct crypt_lock_handle
      *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: device_get_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:444,1
    - Dst: device_lock_dec
      Src: /src/cryptsetup/lib/utils_device_locking.c:445,1
    - Dst: device_locked_readonly
      Src: /src/cryptsetup/lib/utils_device_locking.c:450,1
    - Dst: unlock_internal
      Src: /src/cryptsetup/lib/utils_device_locking.c:452,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:454,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/utils_device_locking.c:454,1
    - Dst: device_set_lock_handle
      Src: /src/cryptsetup/lib/utils_device_locking.c:457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - cd
    - device
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 441
    functionDepth: 3
    functionLinenumber: 441
    functionLinenumberEnd: 458
    functionName: device_unlock_internal
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 2
    functionsReached:
    - device_get_lock_handle
    - device_locked_readonly
    - log_dbg
    - device_path
    - device_lock_dec
    - unlock_internal
    - device_set_lock_handle
    linkageType: ''
    returnType: void
    signature: void device_unlock_internal(struct crypt_device *cd, struct device
      *device)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device_locking.c:465,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/utils_device_locking.c:465,1
    - Dst: S_ISREG
      Src: /src/cryptsetup/lib/utils_device_locking.c:469,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:470,1
    - Dst: same_inode
      Src: /src/cryptsetup/lib/utils_device_locking.c:471,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/utils_device_locking.c:473,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/utils_device_locking.c:474,1
    - Dst: resource_by_devno
      Src: /src/cryptsetup/lib/utils_device_locking.c:475,1
    - Dst: stat
      Src: /src/cryptsetup/lib/utils_device_locking.c:476,1
    - Dst: same_inode
      Src: /src/cryptsetup/lib/utils_device_locking.c:477,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 3
    argNames:
    - cd
    - dev_fd
    - h
    argTypes:
    - struct crypt_device*
    - int
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 483
    functionName: device_locked_verify
    functionSourceFile: /src/cryptsetup/lib/utils_device_locking.c
    functionUses: 1
    functionsReached:
    - fstat
    - same_inode
    - S_ISREG
    - log_dbg
    - resource_by_devno
    - stat
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int device_locked_verify(struct crypt_device *cd, int dev_fd, struct
      crypt_lock_handle *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 14
    functionName: CONST_CAST
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONST_CAST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: VOIDP_CAST
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VOIDP_CAST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: UNUSED
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNUSED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: ARRAY_SIZE
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_SIZE(arr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - BF_PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: BITFIELD_SIZE
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITFIELD_SIZE(BF_PTR)
  - 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: 32
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 32
    functionName: MOVE_REF
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MOVE_REF(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: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: FREE_AND_NULL
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE_AND_NULL(x)
  - 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: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: AT_LEAST
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AT_LEAST(a, b)
  - 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: ROUND_SECTOR
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND_SECTOR(x)
  - 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: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: MISALIGNED
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MISALIGNED(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: MISALIGNED_4K
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MISALIGNED_4K(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: MISALIGNED_512
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MISALIGNED_512(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: NOTPOW2
    functionSourceFile: /src/cryptsetup/lib/libcryptsetup_macros.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NOTPOW2(a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/utils_safe_memory.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 30
    functionName: crypt_safe_memzero
    functionSourceFile: /src/cryptsetup/lib/utils_safe_memory.c
    functionUses: 10
    functionsReached:
    - crypt_backend_memzero
    linkageType: ''
    returnType: void
    signature: void crypt_safe_memzero(void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/utils_safe_memory.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - dst
    - src
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: crypt_safe_memcpy
    functionSourceFile: /src/cryptsetup/lib/utils_safe_memory.c
    functionUses: 9
    functionsReached:
    - crypt_backend_memcpy
    linkageType: ''
    returnType: void
    signature: void *crypt_safe_memcpy(void *dst, const void *src, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/utils_safe_memory.c:49,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/utils_safe_memory.c:53,1
    - Dst: mlock
      Src: /src/cryptsetup/lib/utils_safe_memory.c:57,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 62
    functionName: crypt_safe_alloc
    functionSourceFile: /src/cryptsetup/lib/utils_safe_memory.c
    functionUses: 29
    functionsReached:
    - crypt_backend_memzero
    - mlock
    - malloc
    linkageType: ''
    returnType: void
    signature: void *crypt_safe_alloc(size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/utils_safe_memory.c:76,1
    - Dst: munlock
      Src: /src/cryptsetup/lib/utils_safe_memory.c:79,1
    - Dst: free
      Src: /src/cryptsetup/lib/utils_safe_memory.c:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 86
    functionName: crypt_safe_free
    functionSourceFile: /src/cryptsetup/lib/utils_safe_memory.c
    functionUses: 60
    functionsReached:
    - crypt_backend_memzero
    - free
    - munlock
    linkageType: ''
    returnType: void
    signature: void crypt_safe_free(void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/utils_safe_memory.c:94,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/utils_safe_memory.c:104,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/utils_safe_memory.c:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 109
    functionName: crypt_safe_realloc
    functionSourceFile: /src/cryptsetup/lib/utils_safe_memory.c
    functionUses: 1
    functionsReached:
    - crypt_backend_memcpy
    - crypt_safe_alloc
    - crypt_safe_free
    linkageType: ''
    returnType: void
    signature: void *crypt_safe_realloc(void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 121
    functionName: crypt_safe_alloc_size
    functionSourceFile: /src/cryptsetup/lib/utils_safe_memory.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t crypt_safe_alloc_size(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: swab32
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:78,1
    - Dst: swab16
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:79,1
    - Dst: swab16
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - guid
    argTypes:
    - struct bitlk_guid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: swap_guid
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - swab32
    - swab16
    linkageType: ''
    returnType: void
    signature: void swap_guid(struct bitlk_guid *guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: swap_guid
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:84,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - guid
    - out
    argTypes:
    - struct bitlk_guid*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: guid_to_string
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - swap_guid
    - uuid_unparse
    linkageType: ''
    returnType: void
    signature: void guid_to_string(struct bitlk_guid *guid, char *out)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - protection
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 213
    functionName: get_vmk_protection
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BITLKVMKProtection
    signature: BITLKVMKProtection get_vmk_protection(uint16_t protection)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - protection
    argTypes:
    - BITLKVMKProtection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 235
    functionName: get_vmk_protection_string
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * get_vmk_protection_string(BITLKVMKProtection protection)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - BITLKEncryptionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: get_bitlk_type_string
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * get_bitlk_type_string(BITLKEncryptionType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - time
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: filetime_to_unixtime
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t filetime_to_unixtime(uint64_t time)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:275,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:276,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:284,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:285,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:288,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:289,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:293,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:293,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:296,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:304,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:312,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:316,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:322,1
    - Dst: crypt_volume_key_add_next
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:325,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:331,1
    - Dst: crypt_volume_key_add_next
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:334,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:344,1
    - Dst: crypt_utf16_to_utf8
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:347,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:347,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:350,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:351,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:351,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:355,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:355,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:356,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:359,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:360,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:375,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:375,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:378,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 94
    argCount: 5
    argNames:
    - cd
    - data
    - start
    - end
    - vmk
    argTypes:
    - struct crypt_device*
    - uint8_t*
    - int
    - int
    - struct bitlk_vmk**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 386
    functionName: parse_vmk_entry
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - _
    - free
    - memcpy
    - malloc
    - log_err
    - log_dbg
    - crypt_volume_key_add_next
    - crypt_utf16_to_utf8
    - le16_to_cpu
    - CONST_CAST
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: int parse_vmk_entry(struct crypt_device *cd, uint8_t *data, int start,
      int end, struct bitlk_vmk **vmk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:390,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:390,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:391,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - fve
    argTypes:
    - struct bitlk_fve_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 395
    functionName: check_fve_metadata
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - memcmp
    - le16_to_cpu
    linkageType: ''
    returnType: bool
    signature: bool check_fve_metadata(struct bitlk_fve_metadata *fve)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:400,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - validation
    argTypes:
    - struct bitlk_fve_metadata_validation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 404
    functionName: check_fve_metadata_validation
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - le16_to_cpu
    linkageType: ''
    returnType: bool
    signature: bool check_fve_metadata_validation(struct bitlk_fve_metadata_validation
      *validation)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:410,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:413,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:414,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:415,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:419,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:424,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:429,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - params
    - validation
    argTypes:
    - struct bitlk_metadata*
    - struct bitlk_fve_metadata_validation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 434
    functionName: parse_fve_metadata_validation
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - le16_to_cpu
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool parse_fve_metadata_validation(struct bitlk_metadata *params, struct
      bitlk_fve_metadata_validation *validation)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:441,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fvek
    argTypes:
    - struct bitlk_fvek*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 436
    functionDepth: 2
    functionLinenumber: 436
    functionLinenumberEnd: 443
    functionName: BITLK_bitlk_fvek_free
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - crypt_free_volume_key
    - free
    linkageType: ''
    returnType: void
    signature: void BITLK_bitlk_fvek_free(struct bitlk_fvek *fvek)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:450,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:451,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:452,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - vmk
    argTypes:
    - struct bitlk_vmk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 445
    functionDepth: 2
    functionLinenumber: 445
    functionLinenumberEnd: 457
    functionName: BITLK_bitlk_vmk_free
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - crypt_free_volume_key
    - free
    linkageType: ''
    returnType: void
    signature: void BITLK_bitlk_vmk_free(struct bitlk_vmk *vmk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:464,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:465,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:466,1
    - Dst: BITLK_bitlk_vmk_free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:467,1
    - Dst: BITLK_bitlk_fvek_free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - struct bitlk_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 459
    functionDepth: 3
    functionLinenumber: 459
    functionLinenumberEnd: 469
    functionName: BITLK_bitlk_metadata_free
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 1
    functionsReached:
    - free
    - BITLK_bitlk_vmk_free
    - BITLK_bitlk_fvek_free
    linkageType: ''
    returnType: void
    signature: void BITLK_bitlk_metadata_free(struct bitlk_metadata *metadata)
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:474,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:501,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:501,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:508,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:508,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:509,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:510,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:510,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:515,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:518,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:522,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:527,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:528,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:528,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:531,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:534,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:534,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:539,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:541,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:546,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:546,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:552,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:552,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:553,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:554,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:554,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:554,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:560,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:562,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:566,1
    - Dst: get_bitlk_type_string
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:566,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:569,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:571,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:579,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:580,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:582,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:582,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:583,1
    - Dst: check_fve_metadata
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:584,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:585,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:585,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:585,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:586,1
    - Dst: check_fve_metadata_validation
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:587,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:589,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:589,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:589,1
    - Dst: crypt_crc32
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:591,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:591,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:593,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:593,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:603,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:603,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:603,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:609,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:610,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:610,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:610,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:617,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:620,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:621,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:621,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:621,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:626,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:627,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:628,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:628,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:628,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:632,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:633,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:634,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:637,1
    - Dst: parse_fve_metadata_validation
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:643,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:644,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:644,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:644,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:651,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:651,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:653,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:654,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:654,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:657,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:658,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:660,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:695,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:695,1
    - Dst: guid_to_string
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:704,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:705,1
    - Dst: filetime_to_unixtime
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:711,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:711,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:713,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:722,1
    - Dst: memset
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:727,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:729,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:730,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:733,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:733,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:733,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:739,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:744,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:745,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:755,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:756,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:765,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:769,1
    - Dst: memset
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:774,1
    - Dst: guid_to_string
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:776,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:777,1
    - Dst: get_vmk_protection
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:781,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:781,1
    - Dst: parse_vmk_entry
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:784,1
    - Dst: BITLK_bitlk_vmk_free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:788,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:805,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:810,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:814,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:820,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:832,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:835,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:836,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:843,1
    - Dst: crypt_utf16_to_utf8
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:848,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:848,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:851,1
    - Dst: BITLK_bitlk_vmk_free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:852,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:853,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:853,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:862,1
    - Dst: free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:863,1
    CyclomaticComplexity: 94
    EdgeCount: 94
    ICount: 303
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct bitlk_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 471
    functionDepth: 4
    functionLinenumber: 471
    functionLinenumberEnd: 866
    functionName: BITLK_read_sb
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 1
    functionsReached:
    - memset
    - BITLK_bitlk_vmk_free
    - memcpy
    - crypt_utf16_to_utf8
    - get_bitlk_type_string
    - device_alignment
    - CONST_CAST
    - guid_to_string
    - free
    - log_dbg
    - check_fve_metadata
    - strdup
    - parse_vmk_entry
    - get_vmk_protection
    - check_fve_metadata_validation
    - crypt_hash_destroy
    - crypt_hash_final
    - memcmp
    - le32_to_cpu
    - parse_fve_metadata_validation
    - malloc
    - log_err
    - crypt_hash_write
    - filetime_to_unixtime
    - le16_to_cpu
    - crypt_data_device
    - device_open
    - _
    - crypt_backend_memzero
    - crypt_metadata_device
    - read_lseek_blockwise
    - device_path
    - le64_to_cpu
    - crypt_hash_init
    - crypt_alloc_volume_key
    - crypt_crc32
    - device_block_size
    linkageType: ''
    returnType: int
    signature: int BITLK_read_sb(struct crypt_device *cd, struct bitlk_metadata *params)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:876,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:876,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:877,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:878,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:879,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:880,1
    - Dst: ctime_r
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:881,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:882,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:883,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:884,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:885,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:886,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:888,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:890,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:893,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:895,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:897,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:898,1
    - Dst: get_vmk_protection_string
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:898,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:899,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:900,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:901,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:905,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:905,1
    - Dst: crypt_volume_key_next
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:906,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:912,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:913,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:913,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:915,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:917,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:920,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:921,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:922,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:925,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:926,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:927,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:928,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 47
    argCount: 3
    argNames:
    - cd
    - device
    - params
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct bitlk_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 868
    functionDepth: 3
    functionLinenumber: 868
    functionLinenumberEnd: 931
    functionName: BITLK_dump
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 1
    functionsReached:
    - crypt_volume_key_length
    - ctime_r
    - get_vmk_protection_string
    - log_std
    - crypt_log_hex
    - device_path
    - crypt_volume_key_next
    linkageType: ''
    returnType: int
    signature: int BITLK_dump(struct crypt_device *cd, struct device *device, struct
      bitlk_metadata *params)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:953,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:964,1
    - Dst: strtol
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:967,1
    - Dst: cpu_to_le16
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:974,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:977,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 4
    argNames:
    - cd
    - password
    - passwordLen
    - rc_key
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 934
    functionDepth: 2
    functionLinenumber: 934
    functionLinenumberEnd: 982
    functionName: get_recovery_key
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - cpu_to_le16
    - strncpy
    - log_dbg
    - strtol
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int get_recovery_key(struct crypt_device *cd,\n\t\t\t    const char
      *password,\n\t\t\t    size_t passwordLen,\n\t\t\t    struct volume_key **rc_key)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1001,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1002,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1010,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1011,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1014,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1015,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1018,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1018,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1027,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1038,1
    - Dst: guid_to_string
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1039,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1040,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1041,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1041,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1045,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1045,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 6
    argNames:
    - cd
    - data
    - start
    - end
    - vk
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - int
    - int
    - struct volume_key**
    - struct bitlk_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 984
    functionDepth: 3
    functionLinenumber: 984
    functionLinenumberEnd: 1054
    functionName: parse_external_key_entry
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - guid_to_string
    - _
    - memcpy
    - log_err
    - le16_to_cpu
    - strcmp
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int parse_external_key_entry(struct crypt_device *cd,\n\t\t\t\t    const
      char *data,\n\t\t\t\t    int start,\n\t\t\t\t    int end,\n\t\t\t\t    struct
      volume_key **vk,\n\t\t\t\t    const struct bitlk_metadata *params)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1074,1
    - Dst: guid_to_string
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1077,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1078,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1079,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1083,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1084,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1084,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1084,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1088,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1089,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1089,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1090,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1095,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1096,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1098,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1103,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1104,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1107,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1108,1
    - Dst: parse_external_key_entry
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1111,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1115,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1115,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1116,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 6
    argNames:
    - cd
    - password
    - passwordLen
    - vmk
    - su_key
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - struct bitlk_vmk*
    - struct volume_key**
    - struct bitlk_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1057
    functionDepth: 4
    functionLinenumber: 1057
    functionLinenumberEnd: 1119
    functionName: get_startup_key
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - guid_to_string
    - parse_external_key_entry
    - le32_to_cpu
    - _
    - memcpy
    - log_dbg
    - log_err
    - le16_to_cpu
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int get_startup_key(struct crypt_device *cd,\n\t\t\t   const char
      *password,\n\t\t\t   size_t passwordLen,\n\t\t\t   const struct bitlk_vmk *vmk,\n\t\t\t
      \  struct volume_key **su_key,\n\t\t\t   const struct bitlk_metadata *params)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1138,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1140,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1143,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1145,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1151,1
    - Dst: crypt_utf8_to_utf16
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1156,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1156,1
    - Dst: crypt_char16_strlen
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1160,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1161,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1162,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1166,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1167,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1172,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1173,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1179,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1180,1
    - Dst: cpu_to_le64
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1183,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1183,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1186,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1189,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1191,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 56
    argCount: 5
    argNames:
    - password
    - passwordLen
    - recovery
    - salt
    - vk
    argTypes:
    - char*
    - size_t
    - bool
    - uint8_t*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1121
    functionDepth: 2
    functionLinenumber: 1121
    functionLinenumberEnd: 1193
    functionName: bitlk_kdf
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_final
    - crypt_safe_alloc
    - crypt_hash_size
    - crypt_utf8_to_utf16
    - memcpy
    - cpu_to_le64
    - crypt_safe_free
    - crypt_hash_write
    - le64_to_cpu
    - crypt_hash_init
    - CONST_CAST
    - crypt_char16_strlen
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int bitlk_kdf(const char *password,\n\t\t     size_t passwordLen,\n\t\t
      \    bool recovery,\n\t\t     const uint8_t *salt,\n\t\t     struct volume_key
      **vk)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1207,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1207,1
    - Dst: crypt_bitlk_decrypt_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1211,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1211,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1212,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1213,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1214,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1218,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1218,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1223,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1224,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1225,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1226,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1226,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1227,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1228,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1234,1
    - Dst: crypt_get_cipher_mode
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1234,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1235,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1238,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1244,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1248,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 9
    argNames:
    - cd
    - vk
    - enc_key
    - key
    - tag
    - tag_size
    - iv
    - iv_size
    - is_fvek
    argTypes:
    - struct crypt_device*
    - struct volume_key**
    - struct volume_key*
    - struct volume_key*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1195
    functionDepth: 3
    functionLinenumber: 1195
    functionLinenumberEnd: 1250
    functionName: decrypt_key
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 1
    functionsReached:
    - crypt_volume_key_length
    - crypt_safe_alloc
    - _
    - memcpy
    - crypt_safe_memcpy
    - crypt_volume_key_get_key
    - crypt_get_cipher_mode
    - crypt_safe_free
    - log_err
    - log_dbg
    - crypt_get_volume_key_size
    - crypt_bitlk_decrypt_key
    - le16_to_cpu
    - strcmp
    - crypt_alloc_volume_key
    linkageType: ''
    returnType: int
    signature: "int decrypt_key(struct crypt_device *cd,\n\t\t       struct volume_key
      **vk,\n\t\t       struct volume_key *enc_key,\n\t\t       struct volume_key
      *key,\n\t\t       const uint8_t *tag, size_t tag_size,\n\t\t       const uint8_t
      *iv, size_t iv_size,\n\t\t       bool is_fvek)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1257,1
    - Dst: crypt_volume_key_next
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1261,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1264,1
    - Dst: decrypt_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1273,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1278,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1282,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - cd
    - vmk
    - vmk_dec_key
    argTypes:
    - struct crypt_device*
    - struct bitlk_vmk*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1252
    functionDepth: 4
    functionLinenumber: 1252
    functionLinenumberEnd: 1285
    functionName: get_clear_key
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - decrypt_key
    - crypt_volume_key_next
    linkageType: ''
    returnType: int
    signature: int get_clear_key(struct crypt_device *cd, const struct bitlk_vmk *vmk,
      struct volume_key **vmk_dec_key)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: bitlk_kdf
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1315,1
    - Dst: get_recovery_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1322,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1334,1
    - Dst: bitlk_kdf
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1335,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1335,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1336,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1338,1
    - Dst: get_startup_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1342,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1347,1
    - Dst: get_clear_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1349,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1357,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1360,1
    - Dst: get_vmk_protection_string
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1360,1
    - Dst: decrypt_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1369,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1373,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1376,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1384,1
    - Dst: crypt_bitlk_decrypt_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1385,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1385,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1386,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1393,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1394,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1401,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1401,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1402,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1403,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1404,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1408,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1409,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1410,1
    - Dst: decrypt_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1414,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1418,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1419,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1423,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1431,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 103
    argCount: 5
    argNames:
    - cd
    - password
    - passwordLen
    - params
    - open_fvek_key
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - struct bitlk_metadata*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1287
    functionDepth: 5
    functionLinenumber: 1287
    functionLinenumberEnd: 1436
    functionName: BITLK_get_volume_key
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 3
    functionsReached:
    - decrypt_key
    - crypt_volume_key_length
    - memcmp
    - get_vmk_protection_string
    - crypt_free_volume_key
    - crypt_volume_key_get_key
    - get_clear_key
    - bitlk_kdf
    - log_dbg
    - crypt_bitlk_decrypt_key
    - le16_to_cpu
    - get_startup_key
    - get_recovery_key
    linkageType: ''
    returnType: int
    signature: "int BITLK_get_volume_key(struct crypt_device *cd,\n\t\t\t const char
      *password,\n\t\t\t size_t passwordLen,\n\t\t\t const struct bitlk_metadata *params,\n\t\t\t
      struct volume_key **open_fvek_key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1442,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1442,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1447,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1447,1
    - Dst: get_bitlk_type_string
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct bitlk_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1438
    functionDepth: 1
    functionLinenumber: 1438
    functionLinenumberEnd: 1452
    functionName: _activate_check
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 0
    functionsReached:
    - log_err
    - get_bitlk_type_string
    - _
    linkageType: ''
    returnType: int
    signature: "int _activate_check(struct crypt_device *cd,\n\t\t           const
      struct bitlk_metadata *params)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: _activate_check
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1476,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1480,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1480,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1486,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1486,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1545,1
    - Dst: dm_targets_allocate
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1579,1
    - Dst: dm_zero_target_set
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1586,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1590,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1593,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1595,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1606,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1607,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1607,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1609,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1611,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1612,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1613,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1613,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1616,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1617,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1617,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1621,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1621,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1624,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1625,1
    - Dst: _
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1625,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1630,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 117
    argCount: 5
    argNames:
    - cd
    - name
    - open_fvek_key
    - params
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - struct bitlk_metadata*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1632
      start: 1454
    functionDepth: 7
    functionLinenumber: 1454
    functionLinenumberEnd: 1632
    functionName: _activate
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 7
    functionsReached:
    - dm_zero_target_set
    - _
    - dm_create_device
    - log_std
    - dm_crypt_target_set
    - crypt_get_cipher_spec
    - dm_targets_free
    - dm_flags
    - _activate_check
    - device_block_adjust
    - log_dbg
    - device_path
    - log_err
    - dm_targets_allocate
    - strcmp
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int _activate(struct crypt_device *cd,\n\t\t     const char *name,\n\t\t
      \    struct volume_key *open_fvek_key,\n\t\t     const struct bitlk_metadata
      *params,\n\t\t     uint32_t flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _activate_check
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1642,1
    - Dst: _activate
      Src: /src/cryptsetup/lib/bitlk/bitlk.c:1646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - cd
    - name
    - vk
    - params
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - struct bitlk_metadata*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1634
    functionDepth: 2
    functionLinenumber: 1634
    functionLinenumberEnd: 1647
    functionName: BITLK_activate_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/bitlk/bitlk.c
    functionUses: 1
    functionsReached:
    - _activate_check
    - _activate
    linkageType: ''
    returnType: int
    signature: "int BITLK_activate_by_volume_key(struct crypt_device *cd,\n\t\t\t\t
      const char *name,\n\t\t\t\t struct volume_key *vk,\n\t\t\t\t const struct bitlk_metadata
      *params,\n\t\t\t\t uint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: VERITY_BLOCK_SIZE_OK
    functionSourceFile: /src/cryptsetup/lib/verity/verity.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VERITY_BLOCK_SIZE_OK(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: FEC_div_round_up
    functionSourceFile: /src/cryptsetup/lib/verity/verity_fec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t FEC_div_round_up(uint64_t x, uint64_t y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - offset
    argTypes:
    - struct fec_context*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: FEC_interleave
    functionSourceFile: /src/cryptsetup/lib/verity/verity_fec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t FEC_interleave(struct fec_context *ctx, uint64_t offset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FEC_interleave
      Src: /src/cryptsetup/lib/verity/verity_fec.c:68,1
    - Dst: memset
      Src: /src/cryptsetup/lib/verity/verity_fec.c:72,1
    - Dst: lseek
      Src: /src/cryptsetup/lib/verity/verity_fec.c:84,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/verity/verity_fec.c:86,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - ctx
    - i
    - output
    - count
    argTypes:
    - struct fec_context*
    - uint64_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 91
    functionName: FEC_read_interleaved
    functionSourceFile: /src/cryptsetup/lib/verity/verity_fec.c
    functionUses: 0
    functionsReached:
    - memset
    - read_buffer
    - lseek
    - FEC_interleave
    linkageType: ''
    returnType: int
    signature: "int FEC_read_interleaved(struct fec_context *ctx, uint64_t i,\n\t\t\t\tvoid
      *output, size_t count)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: init_rs_char
      Src: /src/cryptsetup/lib/verity/verity_fec.c:116,1
    - Dst: FEC_PARAMS
      Src: /src/cryptsetup/lib/verity/verity_fec.c:116,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:118,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:118,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_fec.c:125,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_fec.c:126,1
    - Dst: FEC_div_round_up
      Src: /src/cryptsetup/lib/verity/verity_fec.c:131,1
    - Dst: FEC_div_round_up
      Src: /src/cryptsetup/lib/verity/verity_fec.c:132,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/verity_fec.c:134,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:136,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:136,1
    - Dst: FEC_read_interleaved
      Src: /src/cryptsetup/lib/verity/verity_fec.c:144,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:146,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:146,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/verity/verity_fec.c:158,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:159,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:159,1
    - Dst: decode_rs_char
      Src: /src/cryptsetup/lib/verity/verity_fec.c:165,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:167,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:167,1
    - Dst: encode_rs_char
      Src: /src/cryptsetup/lib/verity/verity_fec.c:177,1
    - Dst: write_buffer
      Src: /src/cryptsetup/lib/verity/verity_fec.c:178,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:179,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:179,1
    - Dst: free_rs_char
      Src: /src/cryptsetup/lib/verity/verity_fec.c:187,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/verity_fec.c:188,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 70
    argCount: 7
    argNames:
    - cd
    - params
    - inputs
    - ninputs
    - fd
    - decode
    - errors
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    - struct fec_input_device*
    - size_t
    - int
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 190
    functionName: FEC_process_inputs
    functionSourceFile: /src/cryptsetup/lib/verity/verity_fec.c
    functionUses: 0
    functionsReached:
    - FEC_read_interleaved
    - read_buffer
    - _
    - init_rs_char
    - free_rs_char
    - free
    - encode_rs_char
    - FEC_PARAMS
    - decode_rs_char
    - malloc
    - write_buffer
    - log_err
    - log_dbg
    - device_path
    - FEC_div_round_up
    linkageType: ''
    returnType: int
    signature: "int FEC_process_inputs(struct crypt_device *cd,\n\t\t\t      struct
      crypt_params_verity *params,\n\t\t\t      struct fec_input_device *inputs,\n\t\t\t
      \     size_t ninputs, int fd,\n\t\t\t      int decode, unsigned int *errors)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:195,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:195,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:201,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 206
    functionName: VERITY_FEC_validate
    functionSourceFile: /src/cryptsetup/lib/verity/verity_fec.c
    functionUses: 0
    functionsReached:
    - log_err
    - _
    linkageType: ''
    returnType: int
    signature: int VERITY_FEC_validate(struct crypt_device *cd, struct crypt_params_verity
      *params)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/verity/verity_fec.c:217,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_fec.c:222,1
    - Dst: VERITY_hash_offset_block
      Src: /src/cryptsetup/lib/verity/verity_fec.c:224,1
    - Dst: VERITY_FEC_blocks
      Src: /src/cryptsetup/lib/verity/verity_fec.c:225,1
    - Dst: VERITY_FEC_validate
      Src: /src/cryptsetup/lib/verity/verity_fec.c:230,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:235,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:235,1
    - Dst: open
      Src: /src/cryptsetup/lib/verity/verity_fec.c:242,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_fec.c:242,1
    - Dst: open
      Src: /src/cryptsetup/lib/verity/verity_fec.c:244,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_fec.c:244,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:247,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:247,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_fec.c:247,1
    - Dst: lseek
      Src: /src/cryptsetup/lib/verity/verity_fec.c:251,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_fec.c:252,1
    - Dst: open
      Src: /src/cryptsetup/lib/verity/verity_fec.c:257,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_fec.c:257,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:259,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:259,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_fec.c:259,1
    - Dst: open
      Src: /src/cryptsetup/lib/verity/verity_fec.c:262,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_fec.c:262,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:264,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:264,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_fec.c:264,1
    - Dst: FEC_process_inputs
      Src: /src/cryptsetup/lib/verity/verity_fec.c:268,1
    - Dst: close
      Src: /src/cryptsetup/lib/verity/verity_fec.c:271,1
    - Dst: close
      Src: /src/cryptsetup/lib/verity/verity_fec.c:273,1
    - Dst: close
      Src: /src/cryptsetup/lib/verity/verity_fec.c:275,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 5
    argNames:
    - cd
    - params
    - fec_device
    - check_fec
    - errors
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    - struct device*
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 208
    functionDepth: 4
    functionLinenumber: 208
    functionLinenumberEnd: 278
    functionName: VERITY_FEC_process
    functionSourceFile: /src/cryptsetup/lib/verity/verity_fec.c
    functionUses: 1
    functionsReached:
    - FEC_process_inputs
    - _
    - lseek
    - close
    - open
    - crypt_metadata_device
    - log_err
    - device_path
    - log_dbg
    - VERITY_hash_offset_block
    - VERITY_FEC_validate
    - VERITY_FEC_blocks
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int VERITY_FEC_process(struct crypt_device *cd,\n\t\t      struct
      crypt_params_verity *params,\n\t\t      struct device *fec_device, int check_fec,\n\t\t
      \     unsigned int *errors)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VERITY_FEC_validate
      Src: /src/cryptsetup/lib/verity/verity_fec.c:287,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/verity/verity_fec.c:297,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_fec.c:297,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_fec.c:298,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/verity/verity_fec.c:302,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_fec.c:302,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_fec.c:303,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_fec.c:303,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_fec.c:304,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_fec.c:304,1
    - Dst: VERITY_hash_offset_block
      Src: /src/cryptsetup/lib/verity/verity_fec.c:311,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - cd
    - fec_device
    - params
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 317
    functionName: VERITY_FEC_blocks
    functionSourceFile: /src/cryptsetup/lib/verity/verity_fec.c
    functionUses: 1
    functionsReached:
    - device_is_identical
    - _
    - device_size
    - crypt_metadata_device
    - log_dbg
    - log_err
    - device_path
    - VERITY_hash_offset_block
    - VERITY_FEC_validate
    linkageType: ''
    returnType: uint64_t
    signature: "uint64_t VERITY_FEC_blocks(struct crypt_device *cd,\n\t\t\t   struct
      device *fec_device,\n\t\t\t   struct crypt_params_verity *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FEC_div_round_up
      Src: /src/cryptsetup/lib/verity/verity_fec.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - blocks
    - roots
    argTypes:
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 323
    functionName: VERITY_FEC_RS_blocks
    functionSourceFile: /src/cryptsetup/lib/verity/verity_fec.c
    functionUses: 0
    functionsReached:
    - FEC_div_round_up
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t VERITY_FEC_RS_blocks(uint64_t blocks, uint32_t roots)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:41,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:49,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:51,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:54,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:56,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:57,1
    - Dst: memset
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:60,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:76,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:77,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:78,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:83,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:85,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:86,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:87,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:107,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:112,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 72
    argCount: 6
    argNames:
    - symsize
    - gfpoly
    - fcr
    - prim
    - nroots
    - pad
    argTypes:
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 119
    functionName: init_rs_char
    functionSourceFile: /src/cryptsetup/lib/verity/rs_encode_char.c
    functionUses: 1
    functionsReached:
    - memset
    - free
    - modnn
    - malloc
    - calloc
    linkageType: ''
    returnType: struct rs
    signature: struct rs *init_rs_char(int symsize, int gfpoly, int fcr, int prim,
      int nroots, int pad)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:126,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:127,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:128,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rs
    argTypes:
    - struct rs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 130
    functionName: free_rs_char
    functionSourceFile: /src/cryptsetup/lib/verity/rs_encode_char.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free_rs_char(struct rs *rs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:137,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:146,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:149,1
    - Dst: memmove
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:153,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_encode_char.c:156,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - rs
    - data
    - parity
    argTypes:
    - struct rs*
    - data_t*
    - data_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 160
    functionName: encode_rs_char
    functionSourceFile: /src/cryptsetup/lib/verity/rs_encode_char.c
    functionUses: 1
    functionsReached:
    - memset
    - memmove
    - modnn
    linkageType: ''
    returnType: void
    signature: void encode_rs_char(struct rs *rs, data_t *data, data_t *parity)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:29,1
    - Dst: memset
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:30,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:41,1
    - Dst: memset
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:60,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:77,1
    - Dst: memmove
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:83,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:90,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:101,1
    - Dst: memmove
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:104,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:107,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:119,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:121,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:125,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:156,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:169,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:171,1
    - Dst: RS_MIN
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:175,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:177,1
    - Dst: modnn
      Src: /src/cryptsetup/lib/verity/rs_decode_char.c:182,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 109
    argCount: 2
    argNames:
    - rs
    - data
    argTypes:
    - struct rs*
    - data_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 188
    functionName: decode_rs_char
    functionSourceFile: /src/cryptsetup/lib/verity/rs_decode_char.c
    functionUses: 1
    functionsReached:
    - memset
    - memcpy
    - modnn
    - RS_MIN
    - memmove
    linkageType: ''
    returnType: int
    signature: int decode_rs_char(struct rs* rs, data_t* data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - u
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 26
    functionName: get_bits_up
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned get_bits_up(size_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - u
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 34
    functionName: get_bits_down
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned get_bits_down(size_t u)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/verity_hash.c:42,1
    - Dst: fread
      Src: /src/cryptsetup/lib/verity/verity_hash.c:46,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:47,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:53,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:53,1
    - Dst: ftello
      Src: /src/cryptsetup/lib/verity/verity_hash.c:54,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/verity_hash.c:60,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - cd
    - wr
    - bytes
    argTypes:
    - struct crypt_device*
    - FILE*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 62
    functionName: verify_zero
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 0
    functionsReached:
    - _
    - free
    - ftello
    - malloc
    - log_dbg
    - log_err
    - fread
    linkageType: ''
    returnType: int
    signature: int verify_zero(struct crypt_device *cd, FILE *wr, size_t bytes)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/verity/verity_hash.c:72,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/verity/verity_hash.c:75,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/verity/verity_hash.c:78,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/verity/verity_hash.c:81,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/verity/verity_hash.c:84,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/verity/verity_hash.c:86,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 8
    argNames:
    - hash_name
    - version
    - hash
    - hash_size
    - data
    - data_size
    - salt
    - salt_size
    argTypes:
    - char*
    - int
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 88
    functionName: verify_hash_block
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_write
    - crypt_hash_final
    - crypt_hash_init
    linkageType: ''
    returnType: int
    signature: "int verify_hash_block(const char *hash_name, int version,\n\t\t\t
      \     char *hash, size_t hash_size,\n\t\t\t      const char *data, size_t data_size,\n\t\t\t
      \     const char *salt, size_t salt_size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_bits_down
      Src: /src/cryptsetup/lib/verity/verity_hash.c:101,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 7
    argNames:
    - hash_block_size
    - digest_size
    - data_file_blocks
    - hash_position
    - levels
    - hash_level_block
    - hash_level_size
    argTypes:
    - size_t
    - size_t
    - uint64_t
    - uint64_t*
    - int*
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 129
    functionName: hash_levels
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 0
    functionsReached:
    - get_bits_down
    linkageType: ''
    returnType: int
    signature: "int hash_levels(size_t hash_block_size, size_t digest_size,\n\t\t
      \      uint64_t data_file_blocks, uint64_t *hash_position, int *levels,\n\t\t
      \      uint64_t *hash_level_block, uint64_t *hash_level_size)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: get_bits_down
      Src: /src/cryptsetup/lib/verity/verity_hash.c:141,1
    - Dst: get_bits_up
      Src: /src/cryptsetup/lib/verity/verity_hash.c:142,1
    - Dst: uint64_mult_overflow
      Src: /src/cryptsetup/lib/verity/verity_hash.c:152,1
    - Dst: uint64_mult_overflow
      Src: /src/cryptsetup/lib/verity/verity_hash.c:153,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:154,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:154,1
    - Dst: fseeko
      Src: /src/cryptsetup/lib/verity/verity_hash.c:158,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:159,1
    - Dst: fseeko
      Src: /src/cryptsetup/lib/verity/verity_hash.c:163,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:164,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/verity_hash.c:168,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/verity_hash.c:169,1
    - Dst: memset
      Src: /src/cryptsetup/lib/verity/verity_hash.c:175,1
    - Dst: fread
      Src: /src/cryptsetup/lib/verity/verity_hash.c:182,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:183,1
    - Dst: verify_hash_block
      Src: /src/cryptsetup/lib/verity/verity_hash.c:188,1
    - Dst: fread
      Src: /src/cryptsetup/lib/verity/verity_hash.c:199,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:200,1
    - Dst: crypt_backend_memeq
      Src: /src/cryptsetup/lib/verity/verity_hash.c:204,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:205,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:205,1
    - Dst: ftello
      Src: /src/cryptsetup/lib/verity/verity_hash.c:206,1
    - Dst: fwrite
      Src: /src/cryptsetup/lib/verity/verity_hash.c:211,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:212,1
    - Dst: verify_zero
      Src: /src/cryptsetup/lib/verity/verity_hash.c:222,1
    - Dst: fwrite
      Src: /src/cryptsetup/lib/verity/verity_hash.c:225,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:226,1
    - Dst: verify_zero
      Src: /src/cryptsetup/lib/verity/verity_hash.c:236,1
    - Dst: fwrite
      Src: /src/cryptsetup/lib/verity/verity_hash.c:239,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:240,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/verity_hash.c:248,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/verity_hash.c:249,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 104
    argCount: 15
    argNames:
    - cd
    - rd
    - wr
    - data_block
    - data_block_size
    - hash_block
    - hash_block_size
    - blocks
    - version
    - hash_name
    - verify
    - calculated_digest
    - digest_size
    - salt
    - salt_size
    argTypes:
    - struct crypt_device*
    - FILE*
    - FILE*
    - uint64_t
    - size_t
    - uint64_t
    - size_t
    - uint64_t
    - int
    - char*
    - int
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 251
    functionName: create_or_verify
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 0
    functionsReached:
    - memset
    - _
    - fwrite
    - free
    - verify_hash_block
    - get_bits_up
    - ftello
    - malloc
    - verify_zero
    - log_err
    - log_dbg
    - get_bits_down
    - crypt_backend_memeq
    - fseeko
    - uint64_mult_overflow
    - fread
    linkageType: ''
    returnType: int
    signature: "int create_or_verify(struct crypt_device *cd, FILE *rd, FILE *wr,\n\t\t\t\t
      \  uint64_t data_block, size_t data_block_size,\n\t\t\t\t   uint64_t hash_block,
      size_t hash_block_size,\n\t\t\t\t   uint64_t blocks, int version,\n\t\t\t\t
      \  const char *hash_name, int verify,\n\t\t\t\t   char *calculated_digest, size_t
      digest_size,\n\t\t\t\t   const char *salt, size_t salt_size)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: VERITY_hash_offset_block
      Src: /src/cryptsetup/lib/verity/verity_hash.c:264,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:268,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_hash.c:271,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:271,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_hash.c:272,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:272,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/verity/verity_hash.c:278,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:278,1
    - Dst: uint64_mult_overflow
      Src: /src/cryptsetup/lib/verity/verity_hash.c:286,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:287,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:287,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:290,1
    - Dst: hash_levels
      Src: /src/cryptsetup/lib/verity/verity_hash.c:292,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:294,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:294,1
    - Dst: uint64_mult_overflow
      Src: /src/cryptsetup/lib/verity/verity_hash.c:297,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:298,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:298,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:301,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:303,1
    - Dst: device_check_size
      Src: /src/cryptsetup/lib/verity/verity_hash.c:305,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:305,1
    - Dst: fopen
      Src: /src/cryptsetup/lib/verity/verity_hash.c:310,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_hash.c:310,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:310,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:312,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:312,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_hash.c:313,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:313,1
    - Dst: fopen
      Src: /src/cryptsetup/lib/verity/verity_hash.c:319,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_hash.c:319,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:319,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:321,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:321,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_hash.c:322,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:322,1
    - Dst: memset
      Src: /src/cryptsetup/lib/verity/verity_hash.c:327,1
    - Dst: create_or_verify
      Src: /src/cryptsetup/lib/verity/verity_hash.c:331,1
    - Dst: fopen
      Src: /src/cryptsetup/lib/verity/verity_hash.c:339,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_hash.c:339,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:339,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:341,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:341,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity_hash.c:342,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity_hash.c:342,1
    - Dst: create_or_verify
      Src: /src/cryptsetup/lib/verity/verity_hash.c:346,1
    - Dst: fclose
      Src: /src/cryptsetup/lib/verity/verity_hash.c:351,1
    - Dst: create_or_verify
      Src: /src/cryptsetup/lib/verity/verity_hash.c:358,1
    - Dst: create_or_verify
      Src: /src/cryptsetup/lib/verity/verity_hash.c:364,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:372,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:372,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:374,1
    - Dst: crypt_backend_memeq
      Src: /src/cryptsetup/lib/verity/verity_hash.c:375,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:377,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:377,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity_hash.c:379,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:383,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:383,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:385,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:385,1
    - Dst: fsync
      Src: /src/cryptsetup/lib/verity/verity_hash.c:387,1
    - Dst: fileno
      Src: /src/cryptsetup/lib/verity/verity_hash.c:387,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/verity/verity_hash.c:388,1
    - Dst: fclose
      Src: /src/cryptsetup/lib/verity/verity_hash.c:393,1
    - Dst: fclose
      Src: /src/cryptsetup/lib/verity/verity_hash.c:395,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 93
    argCount: 5
    argNames:
    - cd
    - verify
    - params
    - root_hash
    - digest_size
    argTypes:
    - struct crypt_device*
    - bool
    - struct crypt_params_verity*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 253
    functionDepth: 3
    functionLinenumber: 253
    functionLinenumberEnd: 397
    functionName: VERITY_create_or_verify_hash
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    - log_dbg
    - hash_levels
    - fileno
    - device_check_size
    - fclose
    - fsync
    - create_or_verify
    - device_size
    - log_err
    - VERITY_hash_offset_block
    - crypt_data_device
    - _
    - crypt_metadata_device
    - fopen
    - device_path
    - crypt_backend_memeq
    - uint64_mult_overflow
    linkageType: ''
    returnType: int
    signature: "int VERITY_create_or_verify_hash(struct crypt_device *cd, bool verify,\n\tstruct
      crypt_params_verity *params,\n\tchar *root_hash, size_t digest_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VERITY_create_or_verify_hash
      Src: /src/cryptsetup/lib/verity/verity_hash.c:405,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/verity/verity_hash.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - verity_hdr
    - root_hash
    - root_hash_size
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 400
    functionDepth: 4
    functionLinenumber: 400
    functionLinenumberEnd: 406
    functionName: VERITY_verify
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 0
    functionsReached:
    - CONST_CAST
    - VERITY_create_or_verify_hash
    linkageType: ''
    returnType: int
    signature: "int VERITY_verify(struct crypt_device *cd,\n\t\t  struct crypt_params_verity
      *verity_hdr,\n\t\t  const char *root_hash,\n\t\t  size_t root_hash_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_getpagesize
      Src: /src/cryptsetup/lib/verity/verity_hash.c:414,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity_hash.c:420,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity_hash.c:420,1
    - Dst: VERITY_create_or_verify_hash
      Src: /src/cryptsetup/lib/verity/verity_hash.c:423,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/verity/verity_hash.c:423,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - cd
    - verity_hdr
    - root_hash
    - root_hash_size
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 409
    functionDepth: 4
    functionLinenumber: 409
    functionLinenumberEnd: 424
    functionName: VERITY_create
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 1
    functionsReached:
    - _
    - VERITY_create_or_verify_hash
    - crypt_getpagesize
    - log_err
    - CONST_CAST
    linkageType: ''
    returnType: int
    signature: "int VERITY_create(struct crypt_device *cd,\n\t\t  struct crypt_params_verity
      *verity_hdr,\n\t\t  const char *root_hash,\n\t\t  size_t root_hash_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_levels
      Src: /src/cryptsetup/lib/verity/verity_hash.c:431,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/lib/verity/verity_hash.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 426
    functionDepth: 3
    functionLinenumber: 426
    functionLinenumberEnd: 436
    functionName: VERITY_hash_blocks
    functionSourceFile: /src/cryptsetup/lib/verity/verity_hash.c
    functionUses: 1
    functionsReached:
    - crypt_get_volume_key_size
    - hash_levels
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t VERITY_hash_blocks(struct crypt_device *cd, struct crypt_params_verity
      *params)
  - 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: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: RS_MIN
    functionSourceFile: /src/cryptsetup/lib/verity/rs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RS_MIN(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rs
    - x
    argTypes:
    - struct rs*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: modnn
    functionSourceFile: /src/cryptsetup/lib/verity/rs.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int modnn(struct rs *rs, int x)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity.c:46,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:51,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity.c:52,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:55,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:55,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity.c:56,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/verity/verity.c:60,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:61,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:61,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/verity/verity.c:65,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:67,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:67,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity.c:67,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/verity/verity.c:71,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/verity/verity.c:71,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/verity/verity.c:72,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/verity/verity.c:76,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:77,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/verity/verity.c:81,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:83,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:83,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/verity/verity.c:86,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:88,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:88,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/verity/verity.c:92,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/verity/verity.c:93,1
    - Dst: VERITY_BLOCK_SIZE_OK
      Src: /src/cryptsetup/lib/verity/verity.c:94,1
    - Dst: VERITY_BLOCK_SIZE_OK
      Src: /src/cryptsetup/lib/verity/verity.c:95,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:96,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:96,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/verity/verity.c:99,1
    - Dst: device_set_block_size
      Src: /src/cryptsetup/lib/verity/verity.c:102,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity.c:102,1
    - Dst: device_set_block_size
      Src: /src/cryptsetup/lib/verity/verity.c:103,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/verity/verity.c:103,1
    - Dst: strndup
      Src: /src/cryptsetup/lib/verity/verity.c:105,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/verity/verity.c:108,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:109,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:109,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/verity/verity.c:116,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:118,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:118,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/verity.c:123,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/verity.c:131,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/verity/verity.c:132,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 67
    argCount: 4
    argNames:
    - cd
    - sb_offset
    - uuid_string
    - params
    argTypes:
    - struct crypt_device*
    - uint64_t
    - char**
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 41
    functionDepth: 4
    functionLinenumber: 41
    functionLinenumberEnd: 136
    functionName: VERITY_read_sb
    functionSourceFile: /src/cryptsetup/lib/verity/verity.c
    functionUses: 1
    functionsReached:
    - crypt_hash_size
    - device_alignment
    - uuid_unparse
    - log_dbg
    - VERITY_BLOCK_SIZE_OK
    - memcmp
    - le32_to_cpu
    - malloc
    - log_err
    - MISALIGNED_512
    - le16_to_cpu
    - device_set_block_size
    - crypt_data_device
    - device_open
    - _
    - crypt_metadata_device
    - device_path
    - read_lseek_blockwise
    - le64_to_cpu
    - strndup
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int VERITY_read_sb(struct crypt_device *cd,\n\t\t   uint64_t sb_offset,\n\t\t
      \  char **uuid_string,\n\t\t   struct crypt_params_verity *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isupper
      Src: /src/cryptsetup/lib/verity/verity.c:141,1
    - Dst: tolower
      Src: /src/cryptsetup/lib/verity/verity.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: _to_lower
    functionSourceFile: /src/cryptsetup/lib/verity/verity.c
    functionUses: 0
    functionsReached:
    - isupper
    - tolower
    linkageType: ''
    returnType: void
    signature: void _to_lower(char *str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity.c:151,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:159,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity.c:160,1
    - Dst: uuid_parse
      Src: /src/cryptsetup/lib/verity/verity.c:162,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:163,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:163,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity.c:164,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:169,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:169,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity.c:170,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/verity/verity.c:175,1
    - Dst: device_disable_direct_io
      Src: /src/cryptsetup/lib/verity/verity.c:177,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/verity/verity.c:181,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:183,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:183,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity.c:183,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/verity/verity.c:187,1
    - Dst: cpu_to_le32
      Src: /src/cryptsetup/lib/verity/verity.c:188,1
    - Dst: cpu_to_le32
      Src: /src/cryptsetup/lib/verity/verity.c:189,1
    - Dst: cpu_to_le32
      Src: /src/cryptsetup/lib/verity/verity.c:190,1
    - Dst: cpu_to_le32
      Src: /src/cryptsetup/lib/verity/verity.c:191,1
    - Dst: cpu_to_le16
      Src: /src/cryptsetup/lib/verity/verity.c:192,1
    - Dst: cpu_to_le64
      Src: /src/cryptsetup/lib/verity/verity.c:193,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/verity/verity.c:197,1
    - Dst: _to_lower
      Src: /src/cryptsetup/lib/verity/verity.c:199,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/verity/verity.c:201,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/verity/verity.c:202,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/verity/verity.c:204,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/verity/verity.c:204,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:207,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:207,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity.c:208,1
    - Dst: device_sync
      Src: /src/cryptsetup/lib/verity/verity.c:210,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 4
    argNames:
    - cd
    - sb_offset
    - uuid_string
    - params
    argTypes:
    - struct crypt_device*
    - uint64_t
    - char*
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 146
    functionDepth: 4
    functionLinenumber: 146
    functionLinenumberEnd: 213
    functionName: VERITY_write_sb
    functionSourceFile: /src/cryptsetup/lib/verity/verity.c
    functionUses: 1
    functionsReached:
    - device_open
    - _
    - _to_lower
    - memcpy
    - device_sync
    - cpu_to_le64
    - device_alignment
    - crypt_metadata_device
    - cpu_to_le16
    - cpu_to_le32
    - log_dbg
    - device_path
    - log_err
    - strncpy
    - uuid_parse
    - write_lseek_blockwise
    - device_disable_direct_io
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int VERITY_write_sb(struct crypt_device *cd,\n\t\t   uint64_t sb_offset,\n\t\t
      \  const char *uuid_string,\n\t\t   struct crypt_params_verity *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - params
    argTypes:
    - struct crypt_params_verity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 227
    functionName: VERITY_hash_offset_block
    functionSourceFile: /src/cryptsetup/lib/verity/verity.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t VERITY_hash_offset_block(struct crypt_params_verity *params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/verity/verity.c:233,1
    - Dst: uuid_generate
      Src: /src/cryptsetup/lib/verity/verity.c:236,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/verity/verity.c:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - uuid_string
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 239
    functionName: VERITY_UUID_generate
    functionSourceFile: /src/cryptsetup/lib/verity/verity.c
    functionUses: 1
    functionsReached:
    - uuid_unparse
    - uuid_generate
    - malloc
    linkageType: ''
    returnType: int
    signature: int VERITY_UUID_generate(char **uuid_string)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/verity/verity.c:251,1
    - Dst: assert
      Src: /src/cryptsetup/lib/verity/verity.c:252,1
    - Dst: assert
      Src: /src/cryptsetup/lib/verity/verity.c:253,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:255,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:261,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:261,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:266,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:266,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:273,1
    - Dst: VERITY_verify
      Src: /src/cryptsetup/lib/verity/verity.c:274,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/verity/verity.c:274,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/verity/verity.c:275,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:279,1
    - Dst: VERITY_FEC_process
      Src: /src/cryptsetup/lib/verity/verity.c:280,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:282,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:282,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:284,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:284,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 5
    argNames:
    - cd
    - hdr
    - signed_root_hash
    - fec_device
    - root_hash
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    - bool
    - struct device*
    - struct volume_key*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 250
        line_start: 250
        source_file: /src/cryptsetup/lib/verity/verity.c
    - condition: (hdr)
      pos:
        line_end: 251
        line_start: 251
        source_file: /src/cryptsetup/lib/verity/verity.c
    - condition: (root_hash)
      pos:
        line_end: 252
        line_start: 252
        source_file: /src/cryptsetup/lib/verity/verity.c
    constantsTouched: []
    func_position:
      end: 293
      start: 241
    functionDepth: 5
    functionLinenumber: 241
    functionLinenumberEnd: 293
    functionName: VERITY_verify_params
    functionSourceFile: /src/cryptsetup/lib/verity/verity.c
    functionUses: 1
    functionsReached:
    - crypt_volume_key_length
    - _
    - VERITY_verify
    - crypt_volume_key_get_key
    - assert
    - log_dbg
    - log_err
    - VERITY_FEC_process
    linkageType: ''
    returnType: int
    signature: "int VERITY_verify_params(struct crypt_device *cd,\n\tstruct crypt_params_verity
      *hdr,\n\tbool signed_root_hash,\n\tstruct device *fec_device,\n\tstruct volume_key
      *root_hash)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/verity/verity.c:310,1
    - Dst: assert
      Src: /src/cryptsetup/lib/verity/verity.c:311,1
    - Dst: assert
      Src: /src/cryptsetup/lib/verity/verity.c:312,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/verity/verity.c:316,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:318,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/verity/verity.c:322,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/verity/verity.c:323,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/verity/verity.c:323,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:327,1
    - Dst: keyring_add_key_in_thread_keyring
      Src: /src/cryptsetup/lib/verity/verity.c:328,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/verity/verity.c:329,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/verity/verity.c:330,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:332,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:333,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:333,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/verity.c:334,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/verity/verity.c:339,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity.c:339,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/verity/verity.c:344,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/verity/verity.c:344,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/verity/verity.c:351,1
    - Dst: dm_verity_target_set
      Src: /src/cryptsetup/lib/verity/verity.c:357,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/verity/verity.c:357,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity.c:358,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/verity/verity.c:358,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/verity/verity.c:359,1
    - Dst: VERITY_hash_offset_block
      Src: /src/cryptsetup/lib/verity/verity.c:360,1
    - Dst: VERITY_FEC_blocks
      Src: /src/cryptsetup/lib/verity/verity.c:361,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/verity/verity.c:366,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/verity/verity.c:367,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:368,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:368,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:372,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:372,1
    - Dst: dm_status_verity_ok
      Src: /src/cryptsetup/lib/verity/verity.c:378,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/verity/verity.c:383,1
    - Dst: _
      Src: /src/cryptsetup/lib/verity/verity.c:383,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:388,1
    - Dst: keyring_unlink_key_from_thread_keyring
      Src: /src/cryptsetup/lib/verity/verity.c:390,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/verity/verity.c:391,1
    - Dst: free
      Src: /src/cryptsetup/lib/verity/verity.c:393,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/verity/verity.c:394,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 68
    argCount: 7
    argNames:
    - cd
    - name
    - root_hash
    - signature
    - fec_device
    - verity_hdr
    - activation_flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - struct volume_key*
    - struct device*
    - struct crypt_params_verity*
    - uint32_t
    assertStmts:
    - condition: (verity_hdr)
      pos:
        line_end: 311
        line_start: 311
        source_file: /src/cryptsetup/lib/verity/verity.c
    - condition: (root_hash)
      pos:
        line_end: 310
        line_start: 310
        source_file: /src/cryptsetup/lib/verity/verity.c
    - condition: (name)
      pos:
        line_end: 309
        line_start: 309
        source_file: /src/cryptsetup/lib/verity/verity.c
    constantsTouched: []
    func_position:
      end: 396
      start: 296
    functionDepth: 7
    functionLinenumber: 296
    functionLinenumberEnd: 396
    functionName: VERITY_activate
    functionSourceFile: /src/cryptsetup/lib/verity/verity.c
    functionUses: 1
    functionsReached:
    - dm_verity_target_set
    - VERITY_FEC_blocks
    - free
    - dm_flags
    - log_dbg
    - device_block_adjust
    - keyring_add_key_in_thread_keyring
    - crypt_volume_key_length
    - dm_create_device
    - dm_targets_free
    - crypt_volume_key_get_key
    - log_err
    - VERITY_hash_offset_block
    - crypt_data_device
    - crypt_get_uuid
    - _
    - crypt_metadata_device
    - assert
    - keyring_unlink_key_from_thread_keyring
    - asprintf
    - dm_status_verity_ok
    linkageType: ''
    returnType: int
    signature: "int VERITY_activate(struct crypt_device *cd,\n\t\t     const char
      *name,\n\t\t     struct volume_key *root_hash,\n\t\t     struct volume_key *signature,\n\t\t
      \    struct device *fec_device,\n\t\t     struct crypt_params_verity *verity_hdr,\n\t\t
      \    uint32_t activation_flags)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: VERITY_hash_blocks
      Src: /src/cryptsetup/lib/verity/verity.c:407,1
    - Dst: VERITY_hash_offset_block
      Src: /src/cryptsetup/lib/verity/verity.c:408,1
    - Dst: VERITY_FEC_blocks
      Src: /src/cryptsetup/lib/verity/verity.c:411,1
    - Dst: VERITY_FEC_RS_blocks
      Src: /src/cryptsetup/lib/verity/verity.c:412,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/verity/verity.c:413,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity.c:413,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:422,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/verity/verity.c:422,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/verity/verity.c:422,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:423,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/verity/verity.c:423,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:424,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:425,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:426,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:427,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:428,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:429,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:431,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:432,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:435,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/lib/verity/verity.c:437,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:439,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:440,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:443,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/lib/verity/verity.c:444,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:445,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:450,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/verity/verity.c:453,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 5
    argNames:
    - cd
    - verity_hdr
    - root_hash
    - root_hash_size
    - fec_device
    argTypes:
    - struct crypt_device*
    - struct crypt_params_verity*
    - char*
    - unsigned int
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 398
    functionDepth: 4
    functionLinenumber: 398
    functionLinenumberEnd: 456
    functionName: VERITY_dump
    functionSourceFile: /src/cryptsetup/lib/verity/verity.c
    functionUses: 1
    functionsReached:
    - crypt_get_uuid
    - device_is_identical
    - log_std
    - VERITY_hash_blocks
    - crypt_metadata_device
    - crypt_log_hex
    - device_path
    - VERITY_FEC_RS_blocks
    - VERITY_hash_offset_block
    - VERITY_FEC_blocks
    linkageType: ''
    returnType: int
    signature: "int VERITY_dump(struct crypt_device *cd,\n\t\tstruct crypt_params_verity
      *verity_hdr,\n\t\tconst char *root_hash,\n\t\tunsigned int root_hash_size,\n\t\tstruct
      device *fec_device)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - key_size
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 30
    functionName: get_hash
    functionSourceFile: /src/cryptsetup/lib/loopaes/loopaes.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *get_hash(unsigned int key_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - keys_count
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 40
    functionName: get_tweak
    functionSourceFile: /src/cryptsetup/lib/loopaes/loopaes.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char get_tweak(unsigned int keys_count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:49,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:52,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:54,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - src
    - src_len
    - dst
    - dst_len
    - hash_name
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 58
    functionName: hash_key
    functionSourceFile: /src/cryptsetup/lib/loopaes/loopaes.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_write
    - crypt_hash_final
    - crypt_hash_init
    linkageType: ''
    returnType: int
    signature: "int hash_key(const char *src, size_t src_len,\n\t\t    char *dst,
      size_t dst_len,\n\t\t    const char *hash_name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_hash
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:74,1
    - Dst: get_tweak
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:75,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:78,1
    - Dst: _
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:78,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:83,1
    - Dst: hash_key
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:89,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:97,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:105,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 7
    argNames:
    - cd
    - vk
    - hash_override
    - input_keys
    - keys_count
    - key_len_output
    - key_len_input
    argTypes:
    - struct crypt_device*
    - struct volume_key**
    - char*
    - char**
    - unsigned int
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 108
    functionName: hash_keys
    functionSourceFile: /src/cryptsetup/lib/loopaes/loopaes.c
    functionUses: 0
    functionsReached:
    - crypt_alloc_volume_key_by_safe_alloc
    - get_tweak
    - _
    - crypt_safe_alloc
    - hash_key
    - log_err
    - crypt_safe_free
    - get_hash
    linkageType: ''
    returnType: int
    signature: "int hash_keys(struct crypt_device *cd,\n\t\t     struct volume_key
      **vk,\n\t\t     const char *hash_override,\n\t\t     const char **input_keys,\n\t\t
      \    unsigned int keys_count,\n\t\t     unsigned int key_len_output,\n\t\t     unsigned
      int key_len_input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - buffer
    - buffer_len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 121
    functionName: keyfile_is_gpg
    functionSourceFile: /src/cryptsetup/lib/loopaes/loopaes.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: int
    signature: int keyfile_is_gpg(char *buffer, size_t buffer_len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:134,1
    - Dst: keyfile_is_gpg
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:139,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:140,1
    - Dst: _
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:140,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:141,1
    - Dst: _
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:141,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:161,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:162,1
    - Dst: _
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:162,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:174,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:182,1
    - Dst: _
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:182,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:186,1
    - Dst: hash_keys
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:189,1
    - Dst: crypt_get_volume_key_size
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:190,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 45
    argCount: 6
    argNames:
    - cd
    - vk
    - hash
    - keys_count
    - buffer
    - buffer_len
    argTypes:
    - struct crypt_device*
    - struct volume_key**
    - char*
    - unsigned int*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 123
    functionDepth: 4
    functionLinenumber: 123
    functionLinenumberEnd: 191
    functionName: LOOPAES_parse_keyfile
    functionSourceFile: /src/cryptsetup/lib/loopaes/loopaes.c
    functionUses: 1
    functionsReached:
    - hash_keys
    - _
    - log_std
    - log_dbg
    - log_err
    - crypt_get_volume_key_size
    - keyfile_is_gpg
    linkageType: ''
    returnType: int
    signature: "int LOOPAES_parse_keyfile(struct crypt_device *cd,\n\t\t\t  struct
      volume_key **vk,\n\t\t\t  const char *hash,\n\t\t\t  unsigned int *keys_count,\n\t\t\t
      \ char *buffer,\n\t\t\t  size_t buffer_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:207,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:207,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:208,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:214,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:217,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:222,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:222,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:223,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:223,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:224,1
    - Dst: free
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:227,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:231,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:234,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:236,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:238,1
    - Dst: _
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:238,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:242,1
    - Dst: free
      Src: /src/cryptsetup/lib/loopaes/loopaes.c:243,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 6
    argNames:
    - cd
    - name
    - base_cipher
    - keys_count
    - vk
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - unsigned int
    - struct volume_key*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 193
    functionDepth: 7
    functionLinenumber: 193
    functionLinenumberEnd: 246
    functionName: LOOPAES_activate
    functionSourceFile: /src/cryptsetup/lib/loopaes/loopaes.c
    functionUses: 1
    functionsReached:
    - crypt_get_iv_offset
    - free
    - dm_create_device
    - dm_crypt_target_set
    - _
    - dm_targets_free
    - dm_flags
    - device_block_adjust
    - log_dbg
    - log_err
    - asprintf
    - crypt_get_data_offset
    - crypt_get_sector_size
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int LOOPAES_activate(struct crypt_device *cd,\n\t\t     const char
      *name,\n\t\t     const char *base_cipher,\n\t\t     unsigned int keys_count,\n\t\t
      \    struct volume_key *vk,\n\t\t     uint32_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_crc32
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:202,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:203,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:204,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:205,1
    - Dst: crypt_crc32
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:210,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:211,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:212,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:217,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:218,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:220,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:222,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:223,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:225,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:229,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:231,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:233,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:237,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 5
    argNames:
    - cd
    - hdr
    - params
    - kdf_index
    - cipher_index
    argTypes:
    - struct crypt_device*
    - struct tcrypt_phdr*
    - struct crypt_params_tcrypt*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 248
    functionName: TCRYPT_hdr_from_disk
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - be64_to_cpu
    - log_dbg
    - be32_to_cpu
    - crypt_crc32
    - be16_to_cpu
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_hdr_from_disk(struct crypt_device *cd,\n\t\t\t\tstruct
      tcrypt_phdr *hdr,\n\t\t\t\tstruct crypt_params_tcrypt *params,\n\t\t\t\tint
      kdf_index, int cipher_index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VOIDP_CAST
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:255,1
    - Dst: VOIDP_CAST
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:256,1
    - Dst: swab32
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:257,1
    - Dst: swab32
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 259
    functionName: TCRYPT_swab_le
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - swab32
    - VOIDP_CAST
    linkageType: ''
    returnType: void
    signature: void TCRYPT_swab_le(char *buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:269,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:271,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:276,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:278,1
    - Dst: TCRYPT_swab_le
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:279,1
    - Dst: crypt_cipher_decrypt
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:280,1
    - Dst: TCRYPT_swab_le
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:282,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:287,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:290,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:291,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:292,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - alg
    - key
    - buf
    argTypes:
    - struct tcrypt_alg*
    - char*
    - char*
    assertStmts:
    - condition: (bs == 8)
      pos:
        line_end: 268
        line_start: 268
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.c
    constantsTouched: []
    func_position:
      end: 294
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 294
    functionName: decrypt_blowfish_le_cbc
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - memcpy
    - crypt_cipher_init
    - crypt_cipher_decrypt
    - crypt_cipher_destroy
    - assert
    - TCRYPT_swab_le
    - crypt_safe_memzero
    linkageType: ''
    returnType: int
    signature: "int decrypt_blowfish_le_cbc(const struct tcrypt_alg *alg,\n\t\t\t\t
      \  const char *key, char *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - key
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 302
    functionName: TCRYPT_remove_whitening
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCRYPT_remove_whitening(char *buf, const char *key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:308,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:310,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:311,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:312,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:314,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:315,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:316,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:317,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:319,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - alg
    - mode
    - out_key
    - key
    argTypes:
    - struct tcrypt_alg*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 322
    functionName: TCRYPT_copy_key
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - strncmp
    - crypt_safe_memcpy
    linkageType: ''
    returnType: void
    signature: "void TCRYPT_copy_key(const struct tcrypt_alg *alg, const char *mode,\n\t\t\t
      \    char *out_key, const char *key)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strncpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:336,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:337,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:341,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:343,1
    - Dst: TCRYPT_remove_whitening
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:344,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:345,1
    - Dst: decrypt_blowfish_le_cbc
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:346,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:347,1
    - Dst: TCRYPT_copy_key
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:350,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:351,1
    - Dst: crypt_cipher_decrypt
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:354,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:356,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:359,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:360,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - alg
    - mode
    - key
    - hdr
    argTypes:
    - struct tcrypt_alg*
    - char*
    - char*
    - struct tcrypt_phdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 324
    functionDepth: 3
    functionLinenumber: 324
    functionLinenumberEnd: 362
    functionName: TCRYPT_decrypt_hdr_one
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - memcpy
    - crypt_cipher_init
    - crypt_cipher_decrypt
    - strncmp
    - crypt_cipher_destroy
    - strncpy
    - decrypt_blowfish_le_cbc
    - strcmp
    - TCRYPT_copy_key
    - crypt_safe_memzero
    - TCRYPT_remove_whitening
    - strchr
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_decrypt_hdr_one(const struct tcrypt_alg *alg, const char
      *mode,\n\t\t\t\t   const char *key,struct tcrypt_phdr *hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:377,1
    - Dst: assert
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:378,1
    - Dst: TCRYPT_remove_whitening
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:380,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:382,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:388,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:397,1
    - Dst: crypt_cipher_decrypt
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:399,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:406,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:411,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:413,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:414,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 3
    argNames:
    - ciphers
    - key
    - hdr
    argTypes:
    - struct tcrypt_algs*
    - char*
    - struct tcrypt_phdr*
    assertStmts:
    - condition: (ciphers->chain_count <= 3)
      pos:
        line_end: 376
        line_start: 376
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.c
    - condition: (bs <= 16)
      pos:
        line_end: 377
        line_start: 377
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.c
    constantsTouched: []
    func_position:
      end: 416
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 416
    functionName: TCRYPT_decrypt_cbci
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - memcpy
    - crypt_cipher_init
    - crypt_cipher_decrypt
    - crypt_cipher_destroy
    - assert
    - crypt_safe_memzero
    - TCRYPT_remove_whitening
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_decrypt_cbci(const struct tcrypt_algs *ciphers,\n\t\t\t\tconst
      char *key, struct tcrypt_phdr *hdr)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:425,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:429,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:432,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:434,1
    - Dst: TCRYPT_decrypt_cbci
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:435,1
    - Dst: TCRYPT_decrypt_hdr_one
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:439,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:446,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:453,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:454,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:455,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:460,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:461,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:462,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:469,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 40
    argCount: 4
    argNames:
    - cd
    - hdr
    - key
    - params
    argTypes:
    - struct crypt_device*
    - struct tcrypt_phdr*
    - char*
    - struct crypt_params_tcrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 418
    functionDepth: 4
    functionLinenumber: 418
    functionLinenumberEnd: 471
    functionName: TCRYPT_decrypt_hdr
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strstr
    - strncmp
    - log_dbg
    - TCRYPT_decrypt_cbci
    - TCRYPT_decrypt_hdr_one
    - crypt_safe_memzero
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_decrypt_hdr(struct crypt_device *cd, struct tcrypt_phdr
      *hdr,\n\t\t\t       const char *key, struct crypt_params_tcrypt *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:481,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:483,1
    - Dst: memset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:486,1
    - Dst: open
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:488,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:490,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:490,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:494,1
    - Dst: close
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:495,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:497,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:497,1
    - Dst: crypt_crc32
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:502,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:511,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:512,1
    - Dst: free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:513,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 4
    argNames:
    - cd
    - pool
    - keyfile
    - keyfiles_pool_length
    argTypes:
    - struct crypt_device*
    - unsigned char[]
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 516
    functionName: TCRYPT_pool_keyfile
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - memset
    - read_buffer
    - _
    - free
    - close
    - malloc
    - log_dbg
    - log_err
    - open
    - crypt_safe_memzero
    - crypt_crc32
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_pool_keyfile(struct crypt_device *cd,\n\t\t\t\tunsigned
      char pool[VCRYPT_KEY_POOL_LEN],\n\t\t\t\tconst char *keyfile, int keyfiles_pool_length)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:528,1
    - Dst: crypt_getpagesize
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:528,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:547,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:547,1
    - Dst: TCRYPT_pool_keyfile
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:554,1
    - Dst: strstr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:564,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:580,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:583,1
    - Dst: log_verbose
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:589,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:589,1
    - Dst: TCRYPT_decrypt_hdr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:597,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:608,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:608,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:610,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:610,1
    - Dst: TCRYPT_hdr_from_disk
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:617,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:619,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:625,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:629,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:631,1
    - Dst: free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:632,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 76
    argCount: 3
    argNames:
    - cd
    - hdr
    - params
    argTypes:
    - struct crypt_device*
    - struct tcrypt_phdr*
    - struct crypt_params_tcrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 518
    functionDepth: 5
    functionLinenumber: 518
    functionLinenumberEnd: 634
    functionName: TCRYPT_init_hdr
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - TCRYPT_pool_keyfile
    - TCRYPT_hdr_from_disk
    - _
    - log_verbose
    - TCRYPT_decrypt_hdr
    - free
    - posix_memalign
    - crypt_getpagesize
    - strstr
    - log_err
    - log_dbg
    - crypt_pbkdf
    - crypt_safe_memzero
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_init_hdr(struct crypt_device *cd,\n\t\t\t   struct tcrypt_phdr
      *hdr,\n\t\t\t   struct crypt_params_tcrypt *params)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:640,1
    - Dst: assert
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:645,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:647,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:648,1
    - Dst: crypt_dev_is_partition
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:651,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:651,1
    - Dst: crypt_get_base_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:652,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:652,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:654,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:658,1
    - Dst: free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:659,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:662,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:664,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:667,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:668,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:668,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:668,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:674,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:674,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:675,1
    - Dst: TCRYPT_init_hdr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:677,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:681,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:681,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:682,1
    - Dst: TCRYPT_init_hdr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:684,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:686,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:686,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:687,1
    - Dst: TCRYPT_init_hdr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:689,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:690,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:690,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:691,1
    - Dst: TCRYPT_init_hdr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:693,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:696,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:696,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:697,1
    - Dst: TCRYPT_init_hdr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:699,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:700,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:700,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:701,1
    - Dst: TCRYPT_init_hdr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:702,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:704,1
    - Dst: memset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:706,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 3
    argNames:
    - cd
    - hdr
    - params
    argTypes:
    - struct crypt_device*
    - struct tcrypt_phdr*
    - struct crypt_params_tcrypt*
    assertStmts:
    - condition: (sizeof(struct tcrypt_phdr) == 512)
      pos:
        line_end: 644
        line_start: 644
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.c
    constantsTouched: []
    func_position:
      end: 708
      start: 636
    functionDepth: 6
    functionLinenumber: 636
    functionLinenumberEnd: 708
    functionName: TCRYPT_read_phdr
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 1
    functionsReached:
    - crypt_get_base_device
    - device_free
    - device_open
    - _
    - free
    - TCRYPT_init_hdr
    - crypt_dev_is_partition
    - memset
    - crypt_metadata_device
    - assert
    - log_dbg
    - device_path
    - log_err
    - read_lseek_blockwise
    - device_alignment
    - device_alloc
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_read_phdr(struct crypt_device *cd,\n\t\t     struct tcrypt_phdr
      *hdr,\n\t\t     struct crypt_params_tcrypt *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:718,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:719,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - cipher
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 723
    functionName: TCRYPT_get_algs
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct tcrypt_algs
    signature: struct tcrypt_algs *TCRYPT_get_algs(const char *cipher, const char
      *mode)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:741,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:747,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:752,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:752,1
    - Dst: strstr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:757,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:758,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:758,1
    - Dst: strstr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:762,1
    - Dst: TCRYPT_get_algs
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:767,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:783,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:784,1
    - Dst: crypt_dev_is_partition
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:796,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:796,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:796,1
    - Dst: crypt_dev_partition_offset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:799,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:799,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:799,1
    - Dst: crypt_dev_is_partition
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:800,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:800,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:800,1
    - Dst: crypt_dev_partition_offset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:803,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:803,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:803,1
    - Dst: crypt_get_partition_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:806,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:806,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:806,1
    - Dst: crypt_get_partition_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:809,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:809,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:809,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:812,1
    - Dst: log_verbose
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:813,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:813,1
    - Dst: crypt_dev_partition_offset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:817,1
    - Dst: free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:819,1
    - Dst: device_is_identical
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:820,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:820,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:820,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:828,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:828,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:837,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:837,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:840,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:843,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:849,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:859,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:862,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:869,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:869,1
    - Dst: TCRYPT_copy_key
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:875,1
    - Dst: crypt_volume_key_pass_safe_alloc
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:878,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:881,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:881,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:885,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:892,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:898,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:899,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:903,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:905,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:907,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:908,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:916,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:917,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:917,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:922,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:923,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:924,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:925,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 128
    argCount: 5
    argNames:
    - cd
    - name
    - hdr
    - params
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct tcrypt_phdr*
    - struct crypt_params_tcrypt*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 725
    functionDepth: 7
    functionLinenumber: 725
    functionLinenumberEnd: 927
    functionName: TCRYPT_activate
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 1
    functionsReached:
    - device_free
    - crypt_get_partition_device
    - crypt_get_iv_offset
    - crypt_safe_alloc
    - dm_crypt_target_set
    - strstr
    - crypt_volume_key_pass_safe_alloc
    - TCRYPT_copy_key
    - log_verbose
    - free
    - dm_flags
    - strncpy
    - log_dbg
    - device_block_adjust
    - crypt_get_sector_size
    - crypt_volume_key_length
    - dm_create_device
    - dm_get_dir
    - dm_targets_free
    - crypt_free_volume_key
    - crypt_safe_free
    - log_err
    - crypt_get_data_offset
    - device_alloc
    - crypt_data_device
    - _
    - device_is_identical
    - snprintf
    - crypt_dev_is_partition
    - crypt_metadata_device
    - device_path
    - crypt_dev_partition_offset
    - crypt_alloc_volume_key
    - TCRYPT_get_algs
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_activate(struct crypt_device *cd,\n\t\t     const char
      *name,\n\t\t     struct tcrypt_phdr *hdr,\n\t\t     struct crypt_params_tcrypt
      *params,\n\t\t     uint32_t flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:933,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:934,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:939,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:940,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:940,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:946,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:946,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - dm_uuid
    - base_uuid
    argTypes:
    - char*
    - char*
    assertStmts:
    - condition: (base_uuid)
      pos:
        line_end: 932
        line_start: 932
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.c
    constantsTouched: []
    func_position:
      end: 947
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 947
    functionName: is_tcrypt_subdev
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - strlen
    - strchr
    - strncmp
    - assert
    linkageType: ''
    returnType: bool
    signature: bool is_tcrypt_subdev(const char *dm_uuid, const char *base_uuid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:956,1
    - Dst: dm_status_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:959,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:963,1
    - Dst: is_tcrypt_subdev
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:964,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:965,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 5
    argNames:
    - cd
    - name
    - base_uuid
    - index
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 949
    functionDepth: 8
    functionLinenumber: 949
    functionLinenumberEnd: 969
    functionName: TCRYPT_remove_one
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - snprintf
    - dm_remove_device
    - dm_status_device
    - is_tcrypt_subdev
    - dm_query_device
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_remove_one(struct crypt_device *cd, const char *name,\n\t\t
      \     const char *base_uuid, int index, uint32_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:976,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:982,1
    - Dst: TCRYPT_remove_one
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:987,1
    - Dst: TCRYPT_remove_one
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:991,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - cd
    - name
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 971
    functionDepth: 9
    functionLinenumber: 971
    functionLinenumberEnd: 995
    functionName: TCRYPT_deactivate
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 1
    functionsReached:
    - dm_remove_device
    - dm_query_device
    - TCRYPT_remove_one
    linkageType: ''
    returnType: int
    signature: int TCRYPT_deactivate(struct crypt_device *cd, const char *name, uint32_t
      flags)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1010,1
    - Dst: dm_status_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1013,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1017,1
    - Dst: single_segment
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1023,1
    - Dst: is_tcrypt_subdev
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1030,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1031,1
    - Dst: strcat
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1033,1
    - Dst: strncat
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1034,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1035,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1037,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1038,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1042,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 8
    argNames:
    - cd
    - name
    - base_uuid
    - index
    - key_size
    - cipher
    - tcrypt_hdr
    - device
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - int
    - size_t*
    - char*
    - struct tcrypt_phdr*
    - struct device**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 997
    functionDepth: 8
    functionLinenumber: 997
    functionLinenumberEnd: 1045
    functionName: TCRYPT_status_one
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 0
    functionsReached:
    - device_free
    - crypt_volume_key_length
    - snprintf
    - dm_targets_free
    - MOVE_REF
    - dm_status_device
    - strncat
    - is_tcrypt_subdev
    - dm_query_device
    - single_segment
    - strcat
    - strchr
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_status_one(struct crypt_device *cd, const char *name,\n\t\t\t
      \    const char *base_uuid, int index,\n\t\t\t     size_t *key_size, char *cipher,\n\t\t\t
      \    struct tcrypt_phdr *tcrypt_hdr,\n\t\t\t     struct device **device)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1059,1
    - Dst: memset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1060,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1064,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1065,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1070,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1072,1
    - Dst: TCRYPT_status_one
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1073,1
    - Dst: TCRYPT_status_one
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1076,1
    - Dst: TCRYPT_get_algs
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1082,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 7
    argNames:
    - cd
    - name
    - uuid
    - tgt
    - device
    - tcrypt_params
    - tcrypt_hdr
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - struct dm_target*
    - struct device**
    - struct crypt_params_tcrypt*
    - struct tcrypt_phdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1047
    functionDepth: 9
    functionLinenumber: 1047
    functionLinenumberEnd: 1090
    functionName: TCRYPT_init_by_name
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 1
    functionsReached:
    - memset
    - crypt_volume_key_length
    - strncpy
    - TCRYPT_status_one
    - TCRYPT_get_algs
    - strchr
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_init_by_name(struct crypt_device *cd, const char *name,\n\t\t\tconst
      char *uuid,\n\t\t\tconst struct dm_target *tgt,\n\t\t\tstruct device **device,\n\t\t\tstruct
      crypt_params_tcrypt *tcrypt_params,\n\t\t\tstruct tcrypt_phdr *tcrypt_hdr)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1102,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1109,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1109,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1115,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1115,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - cd
    - hdr
    - params
    argTypes:
    - struct crypt_device*
    - struct tcrypt_phdr*
    - struct crypt_params_tcrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1092
    functionDepth: 1
    functionLinenumber: 1092
    functionLinenumberEnd: 1122
    functionName: TCRYPT_get_data_offset
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 2
    functionsReached:
    - device_size
    - crypt_metadata_device
    - strncmp
    linkageType: ''
    returnType: uint64_t
    signature: "uint64_t TCRYPT_get_data_offset(struct crypt_device *cd,\n\t\t\t\t
      struct tcrypt_phdr *hdr,\n\t\t\t\t struct crypt_params_tcrypt *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1128,1
    - Dst: TCRYPT_get_data_offset
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1129,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - cd
    - hdr
    - params
    argTypes:
    - struct crypt_device*
    - struct tcrypt_phdr*
    - struct crypt_params_tcrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1124
    functionDepth: 2
    functionLinenumber: 1124
    functionLinenumberEnd: 1134
    functionName: TCRYPT_get_iv_offset
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 2
    functionsReached:
    - strncmp
    - TCRYPT_get_data_offset
    linkageType: ''
    returnType: uint64_t
    signature: "uint64_t TCRYPT_get_iv_offset(struct crypt_device *cd,\n\t\t\t      struct
      tcrypt_phdr *hdr,\n\t\t\t      struct crypt_params_tcrypt *params)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1146,1
    - Dst: _
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1146,1
    - Dst: TCRYPT_get_algs
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1150,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1154,1
    - Dst: TCRYPT_copy_key
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1159,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1164,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - cd
    - hdr
    - params
    - vk
    argTypes:
    - struct crypt_device*
    - struct tcrypt_phdr*
    - struct crypt_params_tcrypt*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1136
    functionDepth: 3
    functionLinenumber: 1136
    functionLinenumberEnd: 1171
    functionName: TCRYPT_get_volume_key
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 1
    functionsReached:
    - crypt_alloc_volume_key_by_safe_alloc
    - crypt_safe_alloc
    - _
    - crypt_safe_free
    - log_err
    - TCRYPT_copy_key
    - TCRYPT_get_algs
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_get_volume_key(struct crypt_device *cd,\n\t\t\t  struct
      tcrypt_phdr *hdr,\n\t\t\t  struct crypt_params_tcrypt *params,\n\t\t\t  struct
      volume_key **vk)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1177,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1179,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1179,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1181,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1182,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1184,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1186,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1187,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1189,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1191,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1192,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1194,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1195,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/tcrypt/tcrypt.c:1196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - cd
    - hdr
    - params
    argTypes:
    - struct crypt_device*
    - struct tcrypt_phdr*
    - struct crypt_params_tcrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1198
    functionName: TCRYPT_dump
    functionSourceFile: /src/cryptsetup/lib/tcrypt/tcrypt.c
    functionUses: 1
    functionsReached:
    - device_path
    - crypt_metadata_device
    - log_std
    linkageType: ''
    returnType: int
    signature: "int TCRYPT_dump(struct crypt_device *cd,\n\t\tstruct tcrypt_phdr *hdr,\n\t\tstruct
      crypt_params_tcrypt *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:24,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:27,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:27,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:31,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:32,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:32,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:33,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:33,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:34,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:34,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 5
    argNames:
    - ctx
    - device
    - cipher
    - mode
    - keyLength
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 35
    functionName: _error_hint
    functionSourceFile: /src/cryptsetup/lib/luks1/keyencryption.c
    functionUses: 0
    functionsReached:
    - _
    - snprintf
    - strncmp
    - log_err
    - strlen
    - strchr
    linkageType: ''
    returnType: void
    signature: "void _error_hint(struct crypt_device *ctx, const char *device,\n\t\t\tconst
      char *cipher, const char *mode, size_t keyLength)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:53,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:55,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:55,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:56,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:56,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:64,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:69,1
    - Dst: getpid
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:69,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:71,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:71,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:73,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:76,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:76,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:79,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:79,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:80,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:80,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:85,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:85,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:86,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:86,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:90,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:91,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:96,1
    - Dst: _error_hint
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:99,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:99,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:99,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:100,1
    - Dst: open
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:106,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:108,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:108,1
    - Dst: func
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:113,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:115,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:115,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:120,1
    - Dst: close
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:122,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:124,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 61
    argCount: 8
    argNames:
    - src
    - srcLength
    - cipher
    - cipher_mode
    - vk
    - sector
    - mode
    - ctx
    argTypes:
    - char*
    - size_t
    - char*
    - char*
    - struct volume_key*
    - unsigned int
    - int
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 37
    functionDepth: 7
    functionLinenumber: 37
    functionLinenumberEnd: 126
    functionName: LUKS_endec_template
    functionSourceFile: /src/cryptsetup/lib/luks1/keyencryption.c
    functionUses: 0
    functionsReached:
    - dm_crypt_target_set
    - func
    - dm_remove_device
    - open
    - device_alignment
    - log_dbg
    - device_block_adjust
    - close
    - crypt_volume_key_length
    - dm_create_device
    - dm_get_dir
    - dm_targets_free
    - log_err
    - getpid
    - _
    - snprintf
    - crypt_metadata_device
    - size_round_up
    - device_path
    - _error_hint
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int LUKS_endec_template(char *src, size_t srcLength,\n\t\t\t       const
      char *cipher, const char *cipher_mode,\n\t\t\t       struct volume_key *vk,\n\t\t\t
      \      unsigned int sector,\n\t\t\t       ssize_t (*func)(int, size_t, size_t,
      void *, size_t),\n\t\t\t       int mode,\n\t\t\t       struct crypt_device *ctx)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:135,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:140,1
    - Dst: crypt_storage_init
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:144,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:144,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:145,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:148,1
    - Dst: LUKS_endec_template
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:153,1
    - Dst: _error_hint
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:157,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:157,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:158,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:162,1
    - Dst: crypt_storage_encrypt
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:164,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:165,1
    - Dst: device_is_locked
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:173,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:174,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:176,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:180,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:180,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:181,1
    - Dst: device_sync
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:187,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:189,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:189,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 7
    argNames:
    - src
    - srcLength
    - cipher
    - cipher_mode
    - vk
    - sector
    - ctx
    argTypes:
    - char*
    - size_t
    - char*
    - char*
    - struct volume_key*
    - unsigned int
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 128
    functionDepth: 8
    functionLinenumber: 128
    functionLinenumberEnd: 192
    functionName: LUKS_encrypt_to_storage
    functionSourceFile: /src/cryptsetup/lib/luks1/keyencryption.c
    functionUses: 0
    functionsReached:
    - LUKS_endec_template
    - device_is_locked
    - device_alignment
    - device_sync
    - crypt_storage_init
    - log_dbg
    - device_open_locked
    - write_lseek_blockwise
    - crypt_volume_key_length
    - crypt_volume_key_get_key
    - crypt_storage_destroy
    - log_err
    - MISALIGNED_512
    - device_open
    - _
    - crypt_storage_encrypt
    - crypt_metadata_device
    - device_path
    - _error_hint
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int LUKS_encrypt_to_storage(char *src, size_t srcLength,\n\t\t\t    const
      char *cipher,\n\t\t\t    const char *cipher_mode,\n\t\t\t    struct volume_key
      *vk,\n\t\t\t    unsigned int sector,\n\t\t\t    struct crypt_device *ctx)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:201,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:207,1
    - Dst: crypt_storage_init
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:210,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:210,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:211,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:214,1
    - Dst: LUKS_endec_template
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:219,1
    - Dst: _error_hint
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:223,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:223,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:224,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:228,1
    - Dst: device_is_locked
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:231,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:232,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:234,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:236,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:236,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:236,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:237,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:241,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:241,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:242,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:244,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:245,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:245,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:245,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:247,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:247,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:249,1
    - Dst: crypt_storage_decrypt
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:254,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/luks1/keyencryption.c:255,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 7
    argNames:
    - dst
    - dstLength
    - cipher
    - cipher_mode
    - vk
    - sector
    - ctx
    argTypes:
    - char*
    - size_t
    - char*
    - char*
    - struct volume_key*
    - unsigned int
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 194
    functionDepth: 8
    functionLinenumber: 194
    functionLinenumberEnd: 258
    functionName: LUKS_decrypt_from_storage
    functionSourceFile: /src/cryptsetup/lib/luks1/keyencryption.c
    functionUses: 0
    functionsReached:
    - LUKS_endec_template
    - device_is_locked
    - device_alignment
    - crypt_storage_init
    - log_dbg
    - device_open_locked
    - crypt_volume_key_length
    - crypt_volume_key_get_key
    - crypt_storage_destroy
    - log_err
    - MISALIGNED_512
    - device_open
    - _
    - fstat
    - crypt_metadata_device
    - crypt_storage_decrypt
    - device_path
    - read_lseek_blockwise
    - _error_hint
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int LUKS_decrypt_from_storage(char *dst, size_t dstLength,\n\t\t\t
      \     const char *cipher,\n\t\t\t      const char *cipher_mode,\n\t\t\t      struct
      volume_key *vk,\n\t\t\t      unsigned int sector,\n\t\t\t      struct crypt_device
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - src1
    - src2
    - dst
    - n
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: XORblock
    functionSourceFile: /src/cryptsetup/lib/luks1/af.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XORblock(const char *src1, const char *src2, char *dst, size_t
      n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/luks1/af.c:34,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/luks1/af.c:35,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/luks1/af.c:38,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/luks1/af.c:41,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/luks1/af.c:44,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/luks1/af.c:46,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 5
    argNames:
    - src
    - dst
    - iv
    - len
    - hash_name
    argTypes:
    - char*
    - char*
    - uint32_t
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 48
    functionName: hash_buf
    functionSourceFile: /src/cryptsetup/lib/luks1/af.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_final
    - crypt_hash_write
    - crypt_hash_init
    - be32_to_cpu
    linkageType: ''
    returnType: int
    signature: "int hash_buf(const char *src, char *dst, uint32_t iv,\n\t\t    size_t
      len, const char *hash_name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks1/af.c:56,1
    - Dst: hash_buf
      Src: /src/cryptsetup/lib/luks1/af.c:68,1
    - Dst: hash_buf
      Src: /src/cryptsetup/lib/luks1/af.c:76,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - src
    - dst
    - size
    - hash_name
    argTypes:
    - char*
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 84
    functionName: diffuse
    functionSourceFile: /src/cryptsetup/lib/luks1/af.c
    functionUses: 0
    functionsReached:
    - hash_buf
    - crypt_hash_size
    linkageType: ''
    returnType: int
    signature: int diffuse(char *src, char *dst, size_t size, const char *hash_name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks1/af.c:98,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks1/af.c:104,1
    - Dst: XORblock
      Src: /src/cryptsetup/lib/luks1/af.c:108,1
    - Dst: diffuse
      Src: /src/cryptsetup/lib/luks1/af.c:109,1
    - Dst: XORblock
      Src: /src/cryptsetup/lib/luks1/af.c:114,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks1/af.c:117,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 6
    argNames:
    - ctx
    - src
    - dst
    - blocksize
    - blocknumbers
    - hash
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - size_t
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 119
    functionName: AF_split
    functionSourceFile: /src/cryptsetup/lib/luks1/af.c
    functionUses: 0
    functionsReached:
    - diffuse
    - crypt_safe_alloc
    - XORblock
    - crypt_safe_free
    - crypt_random_get
    linkageType: ''
    returnType: int
    signature: "int AF_split(struct crypt_device *ctx, const char *src, char *dst,\n\t
      \    size_t blocksize, unsigned int blocknumbers, const char *hash)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks1/af.c:128,1
    - Dst: XORblock
      Src: /src/cryptsetup/lib/luks1/af.c:133,1
    - Dst: diffuse
      Src: /src/cryptsetup/lib/luks1/af.c:134,1
    - Dst: XORblock
      Src: /src/cryptsetup/lib/luks1/af.c:138,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks1/af.c:141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - src
    - dst
    - blocksize
    - blocknumbers
    - hash
    argTypes:
    - char*
    - char*
    - size_t
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 143
    functionName: AF_merge
    functionSourceFile: /src/cryptsetup/lib/luks1/af.c
    functionUses: 0
    functionsReached:
    - diffuse
    - crypt_safe_alloc
    - XORblock
    - crypt_safe_free
    linkageType: ''
    returnType: int
    signature: "int AF_merge(const char *src, char *dst,\n\t     size_t blocksize,
      unsigned int blocknumbers, const char *hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - blocksize
    - blocknumbers
    argTypes:
    - size_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 157
    functionName: AF_split_sectors
    functionSourceFile: /src/cryptsetup/lib/luks1/af.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t AF_split_sectors(size_t blocksize, unsigned int blocknumbers)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - hdr
    - keyslot
    - offset
    - length
    argTypes:
    - struct luks_phdr*
    - int
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 37
    functionName: LUKS_keyslot_area
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - AF_split_sectors
    linkageType: ''
    returnType: int
    signature: "int LUKS_keyslot_area(const struct luks_phdr *hdr,\n\tint keyslot,\n\tuint64_t
      *offset,\n\tuint64_t *length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - hdr
    - array
    argTypes:
    - struct luks_phdr*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: LUKS_sort_keyslots
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LUKS_sort_keyslots(const struct luks_phdr *hdr, int *array)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isupper
      Src: /src/cryptsetup/lib/luks1/keymanage.c:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - str
    - max_len
    argTypes:
    - char*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: _is_not_lower
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 0
    functionsReached:
    - isupper
    linkageType: ''
    returnType: int
    signature: int _is_not_lower(char *str, unsigned max_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isupper
      Src: /src/cryptsetup/lib/luks1/keymanage.c:68,1
    - Dst: tolower
      Src: /src/cryptsetup/lib/luks1/keymanage.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - str
    - max_len
    argTypes:
    - char*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 74
    functionName: _to_lower
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - isupper
    - tolower
    linkageType: ''
    returnType: int
    signature: int _to_lower(char *str, unsigned max_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS_sort_keyslots
      Src: /src/cryptsetup/lib/luks1/keymanage.c:80,1
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks_phdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: LUKS_device_sectors
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - AF_split_sectors
    - LUKS_sort_keyslots
    linkageType: ''
    returnType: size_t
    signature: size_t LUKS_device_sectors(const struct luks_phdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS_sort_keyslots
      Src: /src/cryptsetup/lib/luks1/keymanage.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks_phdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 92
    functionName: LUKS_keyslots_offset
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 0
    functionsReached:
    - LUKS_sort_keyslots
    linkageType: ''
    returnType: size_t
    signature: size_t LUKS_keyslots_offset(const struct luks_phdr *hdr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:96,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:102,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:103,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:103,1
    - Dst: LUKS_device_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:108,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:109,1
    - Dst: device_fallocate
      Src: /src/cryptsetup/lib/luks1/keymanage.c:114,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:117,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:117,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - hdr
    - falloc
    argTypes:
    - struct crypt_device*
    - struct luks_phdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 123
    functionName: LUKS_check_device_size
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 0
    functionsReached:
    - _
    - LUKS_device_sectors
    - device_size
    - crypt_metadata_device
    - device_fallocate
    - log_dbg
    - device_path
    - log_err
    linkageType: ''
    returnType: int
    signature: int LUKS_check_device_size(struct crypt_device *ctx, const struct luks_phdr
      *hdr, int falloc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:128,1
    - Dst: LUKS_sort_keyslots
      Src: /src/cryptsetup/lib/luks1/keymanage.c:130,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:136,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:138,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:138,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:144,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:146,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:146,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:155,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:158,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:158,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:163,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:169,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:169,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:180,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:181,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:181,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - phdr
    argTypes:
    - struct crypt_device*
    - struct luks_phdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 188
    functionName: LUKS_check_keyslots
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 0
    functionsReached:
    - _
    - LUKS_sort_keyslots
    - log_dbg
    - log_err
    - AF_split_sectors
    linkageType: ''
    returnType: int
    signature: int LUKS_check_keyslots(struct crypt_device *ctx, const struct luks_phdr
      *phdr)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ki
    argTypes:
    - crypt_keyslot_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 203
    functionName: dbg_slot_state
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *dbg_slot_state(crypt_keyslot_info ki)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:207,1
    - Dst: LUKS_read_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:215,1
    - Dst: LUKS_device_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:219,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks1/keymanage.c:220,1
    - Dst: crypt_getpagesize
      Src: /src/cryptsetup/lib/luks1/keymanage.c:220,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:222,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks1/keymanage.c:227,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:229,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:232,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks1/keymanage.c:234,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:236,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:236,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:236,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks1/keymanage.c:241,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:241,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks1/keymanage.c:241,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks1/keymanage.c:249,1
    - Dst: open
      Src: /src/cryptsetup/lib/luks1/keymanage.c:251,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:254,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:254,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:256,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:256,1
    - Dst: write_buffer
      Src: /src/cryptsetup/lib/luks1/keymanage.c:260,1
    - Dst: close
      Src: /src/cryptsetup/lib/luks1/keymanage.c:261,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:263,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:263,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks1/keymanage.c:270,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks1/keymanage.c:271,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks1/keymanage.c:272,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 2
    argNames:
    - backup_file
    - ctx
    argTypes:
    - char*
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 205
    functionDepth: 4
    functionLinenumber: 205
    functionLinenumberEnd: 274
    functionName: LUKS_hdr_backup
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - memset
    - crypt_getpagesize
    - write_buffer
    - open
    - device_alignment
    - free
    - LUKS_device_sectors
    - LUKS_read_phdr
    - log_dbg
    - close
    - crypt_safe_memzero
    - malloc
    - log_err
    - device_open
    - _
    - crypt_metadata_device
    - size_round_up
    - device_path
    - read_lseek_blockwise
    - device_block_size
    linkageType: ''
    returnType: int
    signature: int LUKS_hdr_backup(const char *backup_file, struct crypt_device *ctx)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:281,1
    - Dst: LUKS_read_phdr_backup
      Src: /src/cryptsetup/lib/luks1/keymanage.c:287,1
    - Dst: LUKS_device_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:292,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:295,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:295,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:300,1
    - Dst: open
      Src: /src/cryptsetup/lib/luks1/keymanage.c:306,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:308,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:308,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/luks1/keymanage.c:313,1
    - Dst: close
      Src: /src/cryptsetup/lib/luks1/keymanage.c:314,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:316,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:316,1
    - Dst: LUKS_read_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:321,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:323,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:323,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:326,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:326,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/luks1/keymanage.c:330,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks1/keymanage.c:334,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:334,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:334,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:335,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:336,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:337,1
    - Dst: crypt_confirm
      Src: /src/cryptsetup/lib/luks1/keymanage.c:342,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:347,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:348,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks1/keymanage.c:350,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:353,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:353,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:354,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:356,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:356,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:356,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks1/keymanage.c:361,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:361,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks1/keymanage.c:361,1
    - Dst: LUKS_read_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:368,1
    - Dst: device_sync
      Src: /src/cryptsetup/lib/luks1/keymanage.c:370,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks1/keymanage.c:371,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks1/keymanage.c:372,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 77
    argCount: 3
    argNames:
    - backup_file
    - hdr
    - ctx
    argTypes:
    - char*
    - struct luks_phdr*
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 276
    functionDepth: 4
    functionLinenumber: 276
    functionLinenumberEnd: 374
    functionName: LUKS_hdr_restore
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - read_buffer
    - open
    - device_alignment
    - device_sync
    - free
    - LUKS_device_sectors
    - LUKS_read_phdr
    - log_dbg
    - close
    - crypt_safe_memzero
    - write_lseek_blockwise
    - memcmp
    - malloc
    - log_err
    - LUKS_read_phdr_backup
    - crypt_confirm
    - device_open
    - _
    - snprintf
    - crypt_metadata_device
    - device_path
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int LUKS_hdr_restore(\n\tconst char *backup_file,\n\tstruct luks_phdr
      *hdr,\n\tstruct crypt_device *ctx)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:385,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:385,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:395,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:395,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks1/keymanage.c:403,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:404,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:404,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks1/keymanage.c:405,1
    - Dst: strcpy
      Src: /src/cryptsetup/lib/luks1/keymanage.c:406,1
    - Dst: _to_lower
      Src: /src/cryptsetup/lib/luks1/keymanage.c:414,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:415,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:415,1
    - Dst: crypt_hmac_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:416,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:417,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:417,1
    - Dst: LUKS_check_cipher
      Src: /src/cryptsetup/lib/luks1/keymanage.c:423,1
    - Dst: crypt_generate_volume_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:427,1
    - Dst: log_verbose
      Src: /src/cryptsetup/lib/luks1/keymanage.c:431,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:431,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:433,1
    - Dst: LUKS_generate_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:436,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:444,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:450,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:450,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:458,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:458,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:467,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:467,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:472,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:472,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks1/keymanage.c:474,1
    - Dst: LUKS_check_keyslots
      Src: /src/cryptsetup/lib/luks1/keymanage.c:486,1
    - Dst: log_verbose
      Src: /src/cryptsetup/lib/luks1/keymanage.c:489,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:489,1
    - Dst: LUKS_write_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:490,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:494,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:494,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:495,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks1/keymanage.c:496,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 77
    argCount: 2
    argNames:
    - phdr
    - ctx
    argTypes:
    - struct luks_phdr*
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 498
    functionName: _keyslot_repair
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 0
    functionsReached:
    - memset
    - _to_lower
    - _
    - log_verbose
    - LUKS_generate_phdr
    - LUKS_write_phdr
    - crypt_free_volume_key
    - strncmp
    - LUKS_check_cipher
    - log_err
    - log_dbg
    - strcpy
    - LUKS_check_keyslots
    - crypt_safe_memzero
    - crypt_hmac_size
    - crypt_generate_volume_key
    linkageType: ''
    returnType: int
    signature: int _keyslot_repair(struct luks_phdr *phdr, struct crypt_device *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/luks1/keymanage.c:510,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/luks1/keymanage.c:511,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:512,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:514,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:514,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:517,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:517,1
    - Dst: crypt_hmac_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:522,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:523,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:523,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/luks1/keymanage.c:528,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/luks1/keymanage.c:529,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/luks1/keymanage.c:530,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/luks1/keymanage.c:533,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/luks1/keymanage.c:534,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/luks1/keymanage.c:535,1
    - Dst: be32_to_cpu
      Src: /src/cryptsetup/lib/luks1/keymanage.c:536,1
    - Dst: LUKS_check_keyslots
      Src: /src/cryptsetup/lib/luks1/keymanage.c:539,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks1/keymanage.c:548,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:549,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:549,1
    - Dst: _is_not_lower
      Src: /src/cryptsetup/lib/luks1/keymanage.c:553,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:554,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:554,1
    - Dst: _keyslot_repair
      Src: /src/cryptsetup/lib/luks1/keymanage.c:559,1
    - Dst: log_verbose
      Src: /src/cryptsetup/lib/luks1/keymanage.c:561,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:561,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 5
    argNames:
    - device
    - hdr
    - require_luks_device
    - repair
    - ctx
    argTypes:
    - char*
    - struct luks_phdr*
    - int
    - int
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 500
    functionDepth: 4
    functionLinenumber: 500
    functionLinenumberEnd: 565
    functionName: _check_and_convert_hdr
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 0
    functionsReached:
    - _
    - memcmp
    - log_verbose
    - _keyslot_repair
    - strncmp
    - log_dbg
    - log_err
    - LUKS_check_keyslots
    - be32_to_cpu
    - _is_not_lower
    - crypt_hmac_size
    - be16_to_cpu
    linkageType: ''
    returnType: int
    signature: "int _check_and_convert_hdr(const char *device,\n\t\t\t\t  struct luks_phdr
      *hdr,\n\t\t\t\t  int require_luks_device,\n\t\t\t\t  int repair,\n\t\t\t\t  struct
      crypt_device *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:575,1
    - Dst: open
      Src: /src/cryptsetup/lib/luks1/keymanage.c:578,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:580,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:580,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/luks1/keymanage.c:584,1
    - Dst: _check_and_convert_hdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:587,1
    - Dst: close
      Src: /src/cryptsetup/lib/luks1/keymanage.c:590,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - backup_file
    - hdr
    - require_luks_device
    - ctx
    argTypes:
    - char*
    - struct luks_phdr*
    - int
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 567
    functionDepth: 5
    functionLinenumber: 567
    functionLinenumberEnd: 592
    functionName: LUKS_read_phdr_backup
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - read_buffer
    - _
    - close
    - log_dbg
    - log_err
    - _check_and_convert_hdr
    - open
    linkageType: ''
    returnType: int
    signature: "int LUKS_read_phdr_backup(const char *backup_file,\n\t\t\t  struct
      luks_phdr *hdr,\n\t\t\t  int require_luks_device,\n\t\t\t  struct crypt_device
      *ctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:600,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks1/keymanage.c:604,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks1/keymanage.c:607,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:612,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:613,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks1/keymanage.c:615,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:617,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:617,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:617,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks1/keymanage.c:621,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:621,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks1/keymanage.c:621,1
    - Dst: _check_and_convert_hdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:625,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:625,1
    - Dst: LUKS_check_device_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:629,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:637,1
    - Dst: device_disable_direct_io
      Src: /src/cryptsetup/lib/luks1/keymanage.c:638,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - hdr
    - require_luks_device
    - repair
    - ctx
    argTypes:
    - struct luks_phdr*
    - int
    - int
    - struct crypt_device*
    assertStmts:
    - condition: (LUKS_STRIPES == 4000)
      pos:
        line_end: 606
        line_start: 606
        source_file: /src/cryptsetup/lib/luks1/keymanage.c
    - condition: (sizeof(struct luks_phdr) <= LUKS_ALIGN_KEYSLOTS)
      pos:
        line_end: 603
        line_start: 603
        source_file: /src/cryptsetup/lib/luks1/keymanage.c
    constantsTouched: []
    func_position:
      end: 642
      start: 594
    functionDepth: 5
    functionLinenumber: 594
    functionLinenumberEnd: 642
    functionName: LUKS_read_phdr
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 3
    functionsReached:
    - device_open
    - _
    - crypt_metadata_device
    - assert
    - log_dbg
    - device_path
    - log_err
    - read_lseek_blockwise
    - _check_and_convert_hdr
    - LUKS_check_device_size
    - device_alignment
    - device_disable_direct_io
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int LUKS_read_phdr(struct luks_phdr *hdr,\n\t\t   int require_luks_device,\n\t\t
      \  int repair,\n\t\t   struct crypt_device *ctx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:647,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:654,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:655,1
    - Dst: LUKS_check_device_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:657,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks1/keymanage.c:661,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:664,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:664,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:665,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:667,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:667,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:667,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks1/keymanage.c:671,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks1/keymanage.c:672,1
    - Dst: cpu_to_be16
      Src: /src/cryptsetup/lib/luks1/keymanage.c:675,1
    - Dst: cpu_to_be32
      Src: /src/cryptsetup/lib/luks1/keymanage.c:676,1
    - Dst: cpu_to_be32
      Src: /src/cryptsetup/lib/luks1/keymanage.c:677,1
    - Dst: cpu_to_be32
      Src: /src/cryptsetup/lib/luks1/keymanage.c:678,1
    - Dst: cpu_to_be32
      Src: /src/cryptsetup/lib/luks1/keymanage.c:680,1
    - Dst: cpu_to_be32
      Src: /src/cryptsetup/lib/luks1/keymanage.c:681,1
    - Dst: cpu_to_be32
      Src: /src/cryptsetup/lib/luks1/keymanage.c:682,1
    - Dst: cpu_to_be32
      Src: /src/cryptsetup/lib/luks1/keymanage.c:683,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks1/keymanage.c:686,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:686,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks1/keymanage.c:686,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:689,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:689,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:689,1
    - Dst: device_sync
      Src: /src/cryptsetup/lib/luks1/keymanage.c:691,1
    - Dst: LUKS_read_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:695,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:697,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:697,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:698,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - hdr
    - ctx
    argTypes:
    - struct luks_phdr*
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 644
    functionDepth: 6
    functionLinenumber: 644
    functionLinenumberEnd: 702
    functionName: LUKS_write_phdr
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 2
    functionsReached:
    - cpu_to_be32
    - memset
    - device_open
    - _
    - cpu_to_be16
    - memcpy
    - device_sync
    - LUKS_read_phdr
    - crypt_metadata_device
    - device_block_size
    - log_dbg
    - device_path
    - log_err
    - LUKS_check_device_size
    - device_alignment
    - write_lseek_blockwise
    linkageType: ''
    returnType: int
    signature: "int LUKS_write_phdr(struct luks_phdr *hdr,\n\t\t    struct crypt_device
      *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:711,1
    - Dst: crypt_generate_volume_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:714,1
    - Dst: LUKS_decrypt_from_storage
      Src: /src/cryptsetup/lib/luks1/keymanage.c:718,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:720,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks1/keymanage.c:721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - keylength
    - cipher
    - cipher_mode
    argTypes:
    - struct crypt_device*
    - size_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 705
    functionDepth: 9
    functionLinenumber: 705
    functionLinenumberEnd: 723
    functionName: LUKS_check_cipher
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 3
    functionsReached:
    - crypt_free_volume_key
    - log_dbg
    - LUKS_decrypt_from_storage
    - crypt_safe_memzero
    - crypt_generate_volume_key
    linkageType: ''
    returnType: int
    signature: int LUKS_check_cipher(struct crypt_device *ctx, size_t keylength, const
      char *cipher, const char *cipher_mode)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/luks1/keymanage.c:747,1
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:749,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keymanage.c:749,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks1/keymanage.c:756,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks1/keymanage.c:765,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:771,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:771,1
    - Dst: crypt_hmac_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:776,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:777,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:777,1
    - Dst: uuid_parse
      Src: /src/cryptsetup/lib/luks1/keymanage.c:781,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:782,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:782,1
    - Dst: uuid_generate
      Src: /src/cryptsetup/lib/luks1/keymanage.c:786,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks1/keymanage.c:789,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks1/keymanage.c:791,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks1/keymanage.c:792,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks1/keymanage.c:793,1
    - Dst: _to_lower
      Src: /src/cryptsetup/lib/luks1/keymanage.c:794,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keymanage.c:796,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:798,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks1/keymanage.c:802,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:804,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:804,1
    - Dst: crypt_get_pbkdf
      Src: /src/cryptsetup/lib/luks1/keymanage.c:809,1
    - Dst: crypt_benchmark_pbkdf_internal
      Src: /src/cryptsetup/lib/luks1/keymanage.c:810,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keymanage.c:810,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks1/keymanage.c:813,1
    - Dst: AT_LEAST
      Src: /src/cryptsetup/lib/luks1/keymanage.c:822,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks1/keymanage.c:823,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/luks1/keymanage.c:825,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:826,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keymanage.c:827,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:832,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:832,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/luks1/keymanage.c:837,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:839,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 66
    argCount: 10
    argNames:
    - header
    - vk
    - cipherName
    - cipherMode
    - hashSpec
    - uuid
    - data_offset
    - align_offset
    - required_alignment
    - ctx
    argTypes:
    - struct luks_phdr*
    - struct volume_key*
    - char*
    - char*
    - char*
    - char*
    - uint64_t
    - uint64_t
    - uint64_t
    - struct crypt_device*
    assertStmts:
    - condition: (header->mkDigestIterations)
      pos:
        line_end: 822
        line_start: 822
        source_file: /src/cryptsetup/lib/luks1/keymanage.c
    - condition: (pbkdf->iterations)
      pos:
        line_end: 812
        line_start: 812
        source_file: /src/cryptsetup/lib/luks1/keymanage.c
    constantsTouched: []
    func_position:
      end: 843
      start: 725
    functionDepth: 5
    functionLinenumber: 725
    functionLinenumberEnd: 843
    functionName: LUKS_generate_phdr
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 2
    functionsReached:
    - memset
    - _to_lower
    - memcpy
    - uuid_parse
    - uuid_unparse
    - crypt_benchmark_pbkdf_internal
    - strncpy
    - log_dbg
    - crypt_pbkdf
    - crypt_get_pbkdf
    - crypt_hmac_size
    - AT_LEAST
    - crypt_volume_key_length
    - crypt_volume_key_get_key
    - log_err
    - AF_split_sectors
    - _
    - uuid_generate
    - size_round_up
    - crypt_random_get
    - assert
    linkageType: ''
    returnType: int
    signature: "int LUKS_generate_phdr(struct luks_phdr *header,\n\tconst struct volume_key
      *vk,\n\tconst char *cipherName,\n\tconst char *cipherMode,\n\tconst char *hashSpec,\n\tconst
      char *uuid,\n\tuint64_t data_offset,        /* in bytes */\n\tuint64_t align_offset,
      \      /* in bytes */\n\tuint64_t required_alignment, /* in bytes */\n\tstruct
      crypt_device *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uuid_parse
      Src: /src/cryptsetup/lib/luks1/keymanage.c:852,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:853,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:853,1
    - Dst: uuid_generate
      Src: /src/cryptsetup/lib/luks1/keymanage.c:857,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/luks1/keymanage.c:859,1
    - Dst: LUKS_write_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - hdr
    - uuid
    - ctx
    argTypes:
    - struct luks_phdr*
    - char*
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 845
    functionDepth: 7
    functionLinenumber: 845
    functionLinenumberEnd: 862
    functionName: LUKS_hdr_uuid_set
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - _
    - LUKS_write_phdr
    - uuid_unparse
    - uuid_generate
    - log_err
    - uuid_parse
    linkageType: ''
    returnType: int
    signature: "int LUKS_hdr_uuid_set(\n\tstruct luks_phdr *hdr,\n\tconst char *uuid,\n\tstruct
      crypt_device *ctx)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:877,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:877,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:883,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:883,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:888,1
    - Dst: crypt_get_pbkdf
      Src: /src/cryptsetup/lib/luks1/keymanage.c:889,1
    - Dst: crypt_benchmark_pbkdf_internal
      Src: /src/cryptsetup/lib/luks1/keymanage.c:890,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keymanage.c:890,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks1/keymanage.c:893,1
    - Dst: AT_LEAST
      Src: /src/cryptsetup/lib/luks1/keymanage.c:899,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:900,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:903,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks1/keymanage.c:909,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/luks1/keymanage.c:914,1
    - Dst: crypt_backend_flags
      Src: /src/cryptsetup/lib/luks1/keymanage.c:919,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:921,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:921,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:925,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks1/keymanage.c:934,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keymanage.c:934,1
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:935,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keymanage.c:935,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:936,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:942,1
    - Dst: AF_split
      Src: /src/cryptsetup/lib/luks1/keymanage.c:944,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:944,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keymanage.c:944,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:949,1
    - Dst: LUKS_encrypt_to_storage
      Src: /src/cryptsetup/lib/luks1/keymanage.c:952,1
    - Dst: LUKS_keyslot_set
      Src: /src/cryptsetup/lib/luks1/keymanage.c:962,1
    - Dst: LUKS_write_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:966,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks1/keymanage.c:972,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks1/keymanage.c:973,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:974,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 73
    argCount: 6
    argNames:
    - keyIndex
    - password
    - passwordLen
    - hdr
    - vk
    - ctx
    argTypes:
    - unsigned int
    - char*
    - size_t
    - struct luks_phdr*
    - struct volume_key*
    - struct crypt_device*
    assertStmts:
    - condition: (crypt_volume_key_length(vk) == hdr->keyBytes)
      pos:
        line_end: 933
        line_start: 933
        source_file: /src/cryptsetup/lib/luks1/keymanage.c
    - condition: (pbkdf->iterations)
      pos:
        line_end: 892
        line_start: 892
        source_file: /src/cryptsetup/lib/luks1/keymanage.c
    constantsTouched: []
    func_position:
      end: 976
      start: 864
    functionDepth: 9
    functionLinenumber: 864
    functionLinenumberEnd: 976
    functionName: LUKS_set_key
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 2
    functionsReached:
    - crypt_safe_alloc
    - crypt_backend_flags
    - crypt_benchmark_pbkdf_internal
    - LUKS_encrypt_to_storage
    - log_dbg
    - crypt_pbkdf
    - AF_split
    - crypt_get_pbkdf
    - AT_LEAST
    - crypt_volume_key_length
    - crypt_free_volume_key
    - crypt_volume_key_get_key
    - crypt_safe_free
    - log_err
    - AF_split_sectors
    - crypt_alloc_volume_key_by_safe_alloc
    - _
    - LUKS_write_phdr
    - assert
    - crypt_random_get
    - LUKS_keyslot_set
    linkageType: ''
    returnType: int
    signature: "int LUKS_set_key(unsigned int keyIndex,\n\t\t const char *password,
      size_t passwordLen,\n\t\t struct luks_phdr *hdr, struct volume_key *vk,\n\t\t
      struct crypt_device *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/luks1/keymanage.c:984,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:984,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks1/keymanage.c:985,1
    - Dst: crypt_backend_memeq
      Src: /src/cryptsetup/lib/luks1/keymanage.c:991,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - hdr
    - vk
    argTypes:
    - struct luks_phdr*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 995
    functionName: LUKS_verify_volume_key
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 4
    functionsReached:
    - crypt_pbkdf
    - crypt_volume_key_length
    - crypt_volume_key_get_key
    - crypt_backend_memeq
    linkageType: ''
    returnType: int
    signature: "int LUKS_verify_volume_key(const struct luks_phdr *hdr,\n\t\t\t   const
      struct volume_key *vk)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LUKS_keyslot_info
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1005,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1012,1
    - Dst: dbg_slot_state
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1013,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1018,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1022,1
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1028,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1029,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1035,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1040,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1040,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1044,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1050,1
    - Dst: LUKS_decrypt_from_storage
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1051,1
    - Dst: AF_merge
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1060,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1064,1
    - Dst: LUKS_verify_volume_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1070,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1075,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1081,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1084,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1085,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1086,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1087,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 6
    argNames:
    - keyIndex
    - password
    - passwordLen
    - hdr
    - r_vk
    - ctx
    argTypes:
    - unsigned int
    - char*
    - size_t
    - struct luks_phdr*
    - struct volume_key**
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 998
    functionDepth: 9
    functionLinenumber: 998
    functionLinenumberEnd: 1089
    functionName: LUKS_open_key
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 0
    functionsReached:
    - crypt_alloc_volume_key_by_safe_alloc
    - crypt_safe_alloc
    - _
    - LUKS_verify_volume_key
    - crypt_free_volume_key
    - LUKS_keyslot_info
    - crypt_is_cipher_null
    - crypt_safe_free
    - log_dbg
    - crypt_pbkdf
    - log_err
    - LUKS_decrypt_from_storage
    - AF_split_sectors
    - dbg_slot_state
    - AF_merge
    linkageType: ''
    returnType: int
    signature: "int LUKS_open_key(unsigned int keyIndex,\n\t\t  const char *password,\n\t\t
      \ size_t passwordLen,\n\t\t  struct luks_phdr *hdr,\n\t\t  struct volume_key
      **r_vk,\n\t\t  struct crypt_device *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS_open_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1102,1
    - Dst: LUKS_open_key
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1107,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 6
    argNames:
    - keyIndex
    - password
    - passwordLen
    - hdr
    - vk
    - ctx
    argTypes:
    - int
    - char*
    - size_t
    - struct luks_phdr*
    - struct volume_key**
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1091
    functionDepth: 10
    functionLinenumber: 1091
    functionLinenumberEnd: 1120
    functionName: LUKS_open_key_with_hdr
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 4
    functionsReached:
    - LUKS_open_key
    linkageType: ''
    returnType: int
    signature: "int LUKS_open_key_with_hdr(int keyIndex,\n\t\t\t   const char *password,\n\t\t\t
      \  size_t passwordLen,\n\t\t\t   struct luks_phdr *hdr,\n\t\t\t   struct volume_key
      **vk,\n\t\t\t   struct crypt_device *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1126,1
    - Dst: LUKS_read_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1130,1
    - Dst: LUKS_keyslot_set
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1134,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1136,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1136,1
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1143,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1145,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1150,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1150,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1151,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1154,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1154,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1155,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1160,1
    - Dst: LUKS_write_phdr
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - keyIndex
    - hdr
    - ctx
    argTypes:
    - unsigned int
    - struct luks_phdr*
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1122
    functionDepth: 7
    functionLinenumber: 1122
    functionLinenumberEnd: 1166
    functionName: LUKS_del_key
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - memset
    - _
    - LUKS_write_phdr
    - LUKS_read_phdr
    - crypt_metadata_device
    - log_err
    - device_path
    - LUKS_keyslot_set
    - AF_split_sectors
    - crypt_wipe_device
    linkageType: ''
    returnType: int
    signature: "int LUKS_del_key(unsigned int keyIndex,\n\t\t struct luks_phdr *hdr,\n\t\t
      struct crypt_device *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - hdr
    - keyslot
    argTypes:
    - struct luks_phdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1168
    functionDepth: 0
    functionLinenumber: 1168
    functionLinenumberEnd: 1186
    functionName: LUKS_keyslot_info
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: crypt_keyslot_info
    signature: crypt_keyslot_info LUKS_keyslot_info(struct luks_phdr *hdr, int keyslot)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks_phdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1188
    functionDepth: 0
    functionLinenumber: 1188
    functionLinenumberEnd: 1200
    functionName: LUKS_keyslot_find_empty
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int LUKS_keyslot_find_empty(struct luks_phdr *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks_phdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1202
    functionDepth: 0
    functionLinenumber: 1202
    functionLinenumberEnd: 1211
    functionName: LUKS_keyslot_active_count
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int LUKS_keyslot_active_count(struct luks_phdr *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS_keyslot_info
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1215,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - hdr
    - keyslot
    - enable
    - ctx
    argTypes:
    - struct luks_phdr*
    - int
    - int
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1213
    functionDepth: 1
    functionLinenumber: 1213
    functionLinenumberEnd: 1223
    functionName: LUKS_keyslot_set
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 2
    functionsReached:
    - log_dbg
    - LUKS_keyslot_info
    linkageType: ''
    returnType: int
    signature: int LUKS_keyslot_set(struct luks_phdr *hdr, int keyslot, int enable,
      struct crypt_device *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1233,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1236,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1236,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1237,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1237,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1238,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1238,1
    - Dst: create_or_reload_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1240,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - cd
    - name
    - vk
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1225
    functionDepth: 6
    functionLinenumber: 1225
    functionLinenumberEnd: 1245
    functionName: LUKS1_activate
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - crypt_get_uuid
    - crypt_get_iv_offset
    - dm_crypt_target_set
    - crypt_get_cipher_spec
    - dm_targets_free
    - create_or_reload_device
    - crypt_get_data_offset
    - crypt_get_sector_size
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int LUKS1_activate(struct crypt_device *cd,\n\t\t   const char *name,\n\t\t
      \  struct volume_key *vk,\n\t\t   uint32_t flags)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LUKS_check_device_size
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1254,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1269,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1272,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1272,1
    - Dst: LUKS_keyslot_area
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1280,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1292,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1295,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1295,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - hdr
    - ctx
    argTypes:
    - struct luks_phdr*
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1247
    functionDepth: 7
    functionLinenumber: 1247
    functionLinenumberEnd: 1302
    functionName: LUKS_wipe_header_areas
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - LUKS_keyslot_area
    - crypt_metadata_device
    - log_dbg
    - LUKS_check_device_size
    - crypt_wipe_device
    linkageType: ''
    returnType: int
    signature: "int LUKS_wipe_header_areas(struct luks_phdr *hdr,\n\tstruct crypt_device
      *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS_keyslot_info
      Src: /src/cryptsetup/lib/luks1/keymanage.c:1306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - hdr
    - keyslot
    - pbkdf
    argTypes:
    - struct luks_phdr*
    - int
    - struct crypt_pbkdf_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1304
    functionDepth: 1
    functionLinenumber: 1304
    functionLinenumberEnd: 1317
    functionName: LUKS_keyslot_pbkdf
    functionSourceFile: /src/cryptsetup/lib/luks1/keymanage.c
    functionUses: 1
    functionsReached:
    - LUKS_keyslot_info
    linkageType: ''
    returnType: int
    signature: int LUKS_keyslot_pbkdf(struct luks_phdr *hdr, int keyslot, struct crypt_pbkdf_type
      *pbkdf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - value
    - data
    - data_size
    argTypes:
    - uint8_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 165
    functionName: _filled_with
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool _filled_with(\n\tuint8_t value,\n\tconst void *data,\n\tsize_t
      data_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:180,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:182,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:183,1
    - Dst: crypt_crc32c
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - data
    - data_size
    argTypes:
    - void*
    - size_t
    assertStmts:
    - condition: (data_size >= crc_size)
      pos:
        line_end: 179
        line_start: 179
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    constantsTouched: []
    func_position:
      end: 192
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 192
    functionName: _check_crc
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - le32_to_cpu
    - crypt_crc32c
    - assert
    linkageType: ''
    returnType: int
    signature: "int _check_crc(\n\tconst void *data,\n\tsize_t data_size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:226,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:228,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:232,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:238,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:258,1
    - Dst: crypt_cipher_decrypt
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:262,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:286,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:287,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:289,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 6
    argNames:
    - kek
    - kek_size
    - key_wrapped
    - key_wrapped_size
    - key_buf
    - key_buf_size
    argTypes:
    - void*
    - size_t
    - void*
    - size_t
    - void*
    - size_t
    assertStmts:
    - condition: (kek_size == 16 && key_wrapped_size == 24 && key_buf_size == 16)
      pos:
        line_end: 225
        line_start: 225
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    constantsTouched: []
    func_position:
      end: 291
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 291
    functionName: _unwrap_key
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - free
    - crypt_cipher_init
    - crypt_cipher_decrypt
    - crypt_cipher_destroy
    - malloc
    - assert
    - cpu_to_be64
    linkageType: ''
    returnType: int
    signature: "int _unwrap_key(\n\tconst void *kek,\n\tsize_t kek_size,\n\tconst
      void *key_wrapped,\n\tsize_t key_wrapped_size,\n\tvoid *key_buf,\n\tsize_t key_buf_size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:314,1
    - Dst: regcomp
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:320,1
    - Dst: regexec
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:327,1
    - Dst: calloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:335,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:341,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:343,1
    - Dst: regfree
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:345,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - xml
    - prop_key
    - prop_type
    - value
    argTypes:
    - char*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 347
    functionName: _search_xml
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - free
    - memcpy
    - calloc
    - asprintf
    - regfree
    - regexec
    - regcomp
    linkageType: ''
    returnType: int
    signature: "int _search_xml(\n\tconst char *xml,\n\tconst char *prop_key,\n\tconst
      char *prop_type,\n\tchar **value)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:371,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:372,1
    - Dst: strndup
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:377,1
    - Dst: _search_xml
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:381,1
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:384,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:384,1
    - Dst: _search_xml
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:392,1
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:395,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:395,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:403,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:404,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:405,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:406,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:408,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:409,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:410,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:411,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:412,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 5
    argNames:
    - md_block
    - pbkdf2_iters
    - pbkdf2_salt
    - wrapped_kek
    - wrapped_vk
    argTypes:
    - struct metadata_block_0x0019*
    - uint32_t*
    - uint8_t*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 414
    functionName: _parse_metadata_block_0x0019
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - _search_xml
    - le32_to_cpu
    - free
    - memcpy
    - crypt_base64_decode
    - strndup
    - strlen
    linkageType: ''
    returnType: int
    signature: "int _parse_metadata_block_0x0019(\n\tconst struct metadata_block_0x0019
      *md_block,\n\tuint32_t *pbkdf2_iters,\n\tuint8_t *pbkdf2_salt,\n\tuint8_t *wrapped_kek,\n\tuint8_t
      *wrapped_vk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uuid_parse
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:428,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - uuid_in
    - uuid_out
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 434
    functionName: _reformat_uuid
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - uuid_unparse
    - uuid_parse
    linkageType: ''
    returnType: int
    signature: "int _reformat_uuid(\n\tconst char *uuid_in,\n\tchar *uuid_out)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:451,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:452,1
    - Dst: strndup
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:457,1
    - Dst: _search_xml
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:461,1
    - Dst: strtoull
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:464,1
    - Dst: _search_xml
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:470,1
    - Dst: _reformat_uuid
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:473,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:477,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:478,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:479,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - md_block
    - log_vol_size
    - family_uuid
    argTypes:
    - struct metadata_block_0x001a*
    - uint64_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 481
    functionName: _parse_metadata_block_0x001a
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - _search_xml
    - le32_to_cpu
    - free
    - strtoull
    - strndup
    - _reformat_uuid
    linkageType: ''
    returnType: int
    signature: "int _parse_metadata_block_0x001a(\n\tconst struct metadata_block_0x001a
      *md_block,\n\tuint64_t *log_vol_size,\n\tchar *family_uuid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - md_block
    - log_vol_blkoff
    argTypes:
    - struct metadata_block_0x0305*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 494
    functionName: _parse_metadata_block_0x0305
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - le32_to_cpu
    linkageType: ''
    returnType: int
    signature: "int _parse_metadata_block_0x0305(\n\tconst struct metadata_block_0x0305
      *md_block,\n\tuint32_t *log_vol_blkoff)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:514,1
    - Dst: assert
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:518,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:520,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:526,1
    - Dst: read_blockwise
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:527,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:527,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:528,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:530,1
    - Dst: _
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:530,1
    - Dst: _check_crc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:535,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:537,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:541,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:542,1
    - Dst: _
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:542,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:543,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:548,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:549,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:554,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:555,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:556,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:561,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:567,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:568,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:569,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:570,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:571,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:574,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:576,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:580,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 59
    argCount: 6
    argNames:
    - devfd
    - cd
    - block_size
    - disklbl_blkoff
    - ph_vol_uuid
    - enc_md_key
    argTypes:
    - int
    - struct crypt_device*
    - uint64_t*
    - uint64_t*
    - char*
    - struct volume_key**
    assertStmts:
    - condition: (sizeof(*vol_header) == FVAULT2_VOL_HEADER_SIZE)
      pos:
        line_end: 517
        line_start: 517
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    constantsTouched: []
    func_position:
      end: 582
      start: 505
    functionDepth: 3
    functionLinenumber: 505
    functionLinenumberEnd: 582
    functionName: _read_volume_header
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - _check_crc
    - crypt_safe_alloc
    - device_alignment
    - read_blockwise
    - free
    - uuid_unparse
    - log_dbg
    - le32_to_cpu
    - crypt_safe_memcpy
    - malloc
    - crypt_safe_free
    - log_err
    - le16_to_cpu
    - be16_to_cpu
    - crypt_alloc_volume_key_by_safe_alloc
    - _
    - crypt_metadata_device
    - assert
    - le64_to_cpu
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int _read_volume_header(\n\tint devfd,\n\tstruct crypt_device *cd,\n\tuint64_t
      *block_size,\n\tuint64_t *disklbl_blkoff,\n\tchar *ph_vol_uuid,\n\tstruct volume_key
      **enc_md_key)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:607,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:609,1
    - Dst: uint64_mult_overflow
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:615,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:617,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:622,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:623,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:623,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:624,1
    - Dst: _check_crc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:629,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:631,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:635,1
    - Dst: le32_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:642,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:644,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:649,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:650,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:650,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:651,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:656,1
    - Dst: le64_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:657,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:659,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:660,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 6
    argNames:
    - devfd
    - cd
    - block_size
    - disklbl_blkoff
    - enc_md_blkoff
    - enc_md_blocks_n
    argTypes:
    - int
    - struct crypt_device*
    - uint64_t
    - uint64_t
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 593
    functionDepth: 4
    functionLinenumber: 593
    functionLinenumberEnd: 662
    functionName: _read_disklabel
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - _check_crc
    - le32_to_cpu
    - free
    - crypt_metadata_device
    - malloc
    - log_dbg
    - read_lseek_blockwise
    - le64_to_cpu
    - device_alignment
    - uint64_mult_overflow
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int _read_disklabel(\n\tint devfd,\n\tstruct crypt_device *cd,\n\tuint64_t
      block_size,\n\tuint64_t disklbl_blkoff,\n\tuint64_t *enc_md_blkoff,\n\tuint64_t
      *enc_md_blocks_n)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:685,1
    - Dst: calloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:696,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:702,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:708,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:714,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:714,1
    - Dst: uint64_mult_overflow
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:718,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:720,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:725,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:729,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:733,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:733,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:734,1
    - Dst: _filled_with
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:741,1
    - Dst: cpu_to_le64
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:744,1
    - Dst: crypt_cipher_decrypt
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:745,1
    - Dst: _check_crc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:750,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:752,1
    - Dst: le16_to_cpu
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:757,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:760,1
    - Dst: _parse_metadata_block_0x0019
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:761,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:772,1
    - Dst: _parse_metadata_block_0x001a
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:773,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:782,1
    - Dst: _parse_metadata_block_0x0305
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:783,1
    - Dst: uint64_mult_overflow
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:787,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:789,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:799,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:804,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:805,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:806,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:808,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 105
    argCount: 7
    argNames:
    - devfd
    - cd
    - block_size
    - start_blkoff
    - blocks_n
    - key
    - params
    argTypes:
    - int
    - struct crypt_device*
    - uint64_t
    - uint64_t
    - uint64_t
    - struct volume_key*
    - struct fvault2_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 674
    functionDepth: 4
    functionLinenumber: 674
    functionLinenumberEnd: 810
    functionName: _read_encrypted_metadata
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 0
    functionsReached:
    - _check_crc
    - _filled_with
    - cpu_to_le64
    - _parse_metadata_block_0x0305
    - crypt_cipher_destroy
    - _parse_metadata_block_0x0019
    - device_alignment
    - free
    - crypt_cipher_decrypt
    - log_dbg
    - crypt_volume_key_get_key
    - malloc
    - le16_to_cpu
    - _parse_metadata_block_0x001a
    - crypt_cipher_init
    - crypt_metadata_device
    - calloc
    - read_lseek_blockwise
    - uint64_mult_overflow
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int _read_encrypted_metadata(\n\tint devfd,\n\tstruct crypt_device
      *cd,\n\tuint64_t block_size,\n\tuint64_t start_blkoff,\n\tuint64_t blocks_n,\n\tconst
      struct volume_key *key,\n\tstruct fvault2_params *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:834,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:834,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:835,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:839,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:842,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:843,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:844,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:844,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:845,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:848,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:850,1
    - Dst: free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:851,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - cd
    - name
    - vol_key
    - params
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - struct fvault2_params*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 820
    functionDepth: 7
    functionLinenumber: 820
    functionLinenumberEnd: 853
    functionName: _activate
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 8
    functionsReached:
    - crypt_get_iv_offset
    - dm_create_device
    - free
    - dm_crypt_target_set
    - dm_targets_free
    - device_block_adjust
    - asprintf
    - crypt_get_data_offset
    - crypt_get_sector_size
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int _activate(\n\tstruct crypt_device *cd,\n\tconst char *name,\n\tstruct
      volume_key *vol_key,\n\tconst struct fvault2_params *params,\n\tuint32_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:866,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:868,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:870,1
    - Dst: _
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:870,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:870,1
    - Dst: _read_volume_header
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:874,1
    - Dst: _read_disklabel
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:879,1
    - Dst: _read_encrypted_metadata
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:884,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:893,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct fvault2_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 855
    functionDepth: 5
    functionLinenumber: 855
    functionLinenumberEnd: 895
    functionName: FVAULT2_read_metadata
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 1
    functionsReached:
    - device_open
    - _
    - _read_encrypted_metadata
    - crypt_free_volume_key
    - crypt_metadata_device
    - log_err
    - device_path
    - _read_volume_header
    - _read_disklabel
    linkageType: ''
    returnType: int
    signature: "int FVAULT2_read_metadata(\n\tstruct crypt_device *cd,\n\tstruct fvault2_params
      *params)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: uuid_parse
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:911,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:912,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:918,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:924,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:930,1
    - Dst: _unwrap_key
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:936,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:941,1
    - Dst: _unwrap_key
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:947,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:952,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:955,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:958,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:962,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:967,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:971,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:972,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:973,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:975,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 65
    argCount: 5
    argNames:
    - cd
    - passphrase
    - passphrase_len
    - params
    - r_vol_key
    argTypes:
    - struct crypt_device*
    - char*
    - size_t
    - struct fvault2_params*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 897
    functionDepth: 3
    functionLinenumber: 897
    functionLinenumberEnd: 977
    functionName: FVAULT2_get_volume_key
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 2
    functionsReached:
    - crypt_alloc_volume_key_by_safe_alloc
    - crypt_hash_destroy
    - crypt_hash_final
    - crypt_safe_alloc
    - crypt_safe_free
    - log_dbg
    - crypt_pbkdf
    - crypt_hash_write
    - uuid_parse
    - crypt_hash_init
    - _unwrap_key
    linkageType: ''
    returnType: int
    signature: "int FVAULT2_get_volume_key(\n\tstruct crypt_device *cd,\n\tconst char
      *passphrase,\n\tsize_t passphrase_len,\n\tconst struct fvault2_params *params,\n\tstruct
      volume_key **r_vol_key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:984,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:984,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:986,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:987,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:989,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:991,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:994,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:995,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:997,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:999,1
    - Dst: crypt_log_hex
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:1000,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - cd
    - device
    - params
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct fvault2_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 979
    functionDepth: 3
    functionLinenumber: 979
    functionLinenumberEnd: 1004
    functionName: FVAULT2_dump
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 1
    functionsReached:
    - device_path
    - crypt_log_hex
    - log_std
    linkageType: ''
    returnType: int
    signature: "int FVAULT2_dump(\n\tstruct crypt_device *cd,\n\tstruct device *device,\n\tconst
      struct fvault2_params *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:1013,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:1013,1
    - Dst: _activate
      Src: /src/cryptsetup/lib/fvault2/fvault2.c:1015,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - cd
    - name
    - vk
    - params
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - struct fvault2_params*
    - uint32_t
    assertStmts:
    - condition: (crypt_volume_key_length(vk) == FVAULT2_XTS_KEY_SIZE)
      pos:
        line_end: 1012
        line_start: 1012
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    constantsTouched: []
    func_position:
      end: 1016
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1016
    functionName: FVAULT2_activate_by_volume_key
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 1
    functionsReached:
    - _activate
    - crypt_volume_key_length
    - assert
    linkageType: ''
    returnType: int
    signature: "int FVAULT2_activate_by_volume_key(\n\tstruct crypt_device *cd,\n\tconst
      char *name,\n\tstruct volume_key *vk,\n\tconst struct fvault2_params *params,\n\tuint32_t
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1018
    functionDepth: 0
    functionLinenumber: 1018
    functionLinenumberEnd: 1021
    functionName: FVAULT2_volume_key_size
    functionSourceFile: /src/cryptsetup/lib/fvault2/fvault2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t FVAULT2_volume_key_size(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:51,1
    - Dst: strncasecmp
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:53,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:53,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - name
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 58
    functionName: _get_alg
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/cipher_generic.c
    functionUses: 0
    functionsReached:
    - strlen
    - strcasecmp
    - strncasecmp
    linkageType: ''
    returnType: struct cipher_alg
    signature: struct cipher_alg *_get_alg(const char *name, const char *mode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:62,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:67,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:70,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - name
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 74
    functionName: crypt_cipher_ivsize
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/cipher_generic.c
    functionUses: 2
    functionsReached:
    - _get_alg
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int crypt_cipher_ivsize(const char *name, const char *mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: crypt_cipher_wrapped_key
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/cipher_generic.c
    functionUses: 2
    functionsReached:
    - _get_alg
    linkageType: ''
    returnType: int
    signature: int crypt_cipher_wrapped_key(const char *name, const char *mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:88,1
    - Dst: read
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:93,1
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/cipher_generic.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 99
    functionName: crypt_fips_mode_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/cipher_generic.c
    functionUses: 2
    functionsReached:
    - open
    - close
    - read
    linkageType: ''
    returnType: bool
    signature: bool crypt_fips_mode_kernel(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:59,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:63,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:64,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:65,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:70,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:71,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:72,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:73,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:77,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:79,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 81
    functionName: crypt_hash_test_whirlpool_bug
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_final
    - memcmp
    - crypt_hash_write
    - crypt_hash_init
    linkageType: ''
    returnType: void
    signature: void crypt_hash_test_whirlpool_bug(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gcry_control
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:90,1
    - Dst: gcry_check_version
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:91,1
    - Dst: gcry_control
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:102,1
    - Dst: gcry_control
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:106,1
    - Dst: gcry_control
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:107,1
    - Dst: gcry_control
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:108,1
    - Dst: gcry_control
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:110,1
    - Dst: crypt_hash_test_whirlpool_bug
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:114,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:116,1
    - Dst: gcry_check_version
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:117,1
    - Dst: crypt_backend_flags
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:120,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 125
    functionName: crypt_backend_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 3
    functionsReached:
    - gcry_control
    - snprintf
    - crypt_hash_test_whirlpool_bug
    - crypt_backend_flags
    - gcry_check_version
    linkageType: ''
    returnType: int
    signature: int crypt_backend_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gcry_control
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 133
    functionName: crypt_backend_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 4
    functionsReached:
    - gcry_control
    linkageType: ''
    returnType: void
    signature: void crypt_backend_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 138
    functionName: crypt_backend_version
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *crypt_backend_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 147
    functionName: crypt_backend_flags
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_backend_flags(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:169,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:179,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - name
    - flags
    argTypes:
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 187
    functionName: crypt_hash_compat_name
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: char
    signature: char *crypt_hash_compat_name(const char *name, unsigned int *flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:194,1
    - Dst: gcry_md_map_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:196,1
    - Dst: crypt_hash_compat_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:196,1
    - Dst: gcry_md_get_algo_dlen
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts:
    - condition: (crypto_backend_initialised)
      pos:
        line_end: 193
        line_start: 193
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: crypt_hash_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 14
    functionsReached:
    - gcry_md_map_name
    - gcry_md_get_algo_dlen
    - crypt_hash_compat_name
    - assert
    linkageType: ''
    returnType: int
    signature: int crypt_hash_size(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:208,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:210,1
    - Dst: gcry_md_map_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:214,1
    - Dst: crypt_hash_compat_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:214,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:216,1
    - Dst: gcry_md_open
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:220,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:221,1
    - Dst: gcry_md_get_algo_dlen
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct crypt_hash**
    - char*
    assertStmts:
    - condition: (crypto_backend_initialised)
      pos:
        line_end: 207
        line_start: 207
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    constantsTouched: []
    func_position:
      end: 228
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 228
    functionName: crypt_hash_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 18
    functionsReached:
    - free
    - gcry_md_get_algo_dlen
    - malloc
    - assert
    - gcry_md_map_name
    - gcry_md_open
    - crypt_hash_compat_name
    linkageType: ''
    returnType: int
    signature: int crypt_hash_init(struct crypt_hash **ctx, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcry_md_reset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 233
    functionName: crypt_hash_restart
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 0
    functionsReached:
    - gcry_md_reset
    linkageType: ''
    returnType: void
    signature: void crypt_hash_restart(struct crypt_hash *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcry_md_write
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 239
    functionName: crypt_hash_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 15
    functionsReached:
    - gcry_md_write
    linkageType: ''
    returnType: int
    signature: int crypt_hash_write(struct crypt_hash *ctx, const char *buffer, size_t
      length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gcry_md_read
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:248,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:252,1
    - Dst: crypt_hash_restart
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 256
    functionName: crypt_hash_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 15
    functionsReached:
    - crypt_hash_restart
    - crypt_backend_memcpy
    - gcry_md_read
    linkageType: ''
    returnType: int
    signature: int crypt_hash_final(struct crypt_hash *ctx, char *buffer, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcry_md_close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:260,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 262
    functionName: crypt_hash_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 22
    functionsReached:
    - gcry_md_close
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_hash_destroy(struct crypt_hash *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: crypt_hmac_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 5
    functionsReached:
    - crypt_hash_size
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_size(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:276,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:278,1
    - Dst: gcry_md_map_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:282,1
    - Dst: crypt_hash_compat_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:282,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:284,1
    - Dst: gcry_md_open
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:288,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:289,1
    - Dst: gcry_md_setkey
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:293,1
    - Dst: gcry_md_close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:294,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:295,1
    - Dst: gcry_md_get_algo_dlen
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - ctx
    - name
    - key
    - key_length
    argTypes:
    - struct crypt_hmac**
    - char*
    - void*
    - size_t
    assertStmts:
    - condition: (crypto_backend_initialised)
      pos:
        line_end: 275
        line_start: 275
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    constantsTouched: []
    func_position:
      end: 302
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 302
    functionName: crypt_hmac_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 1
    functionsReached:
    - gcry_md_close
    - free
    - gcry_md_setkey
    - gcry_md_get_algo_dlen
    - malloc
    - assert
    - gcry_md_map_name
    - gcry_md_open
    - crypt_hash_compat_name
    linkageType: ''
    returnType: int
    signature: "int crypt_hmac_init(struct crypt_hmac **ctx, const char *name,\n\t\t
      \   const void *key, size_t key_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcry_md_reset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: crypt_hmac_restart
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 0
    functionsReached:
    - gcry_md_reset
    linkageType: ''
    returnType: void
    signature: void crypt_hmac_restart(struct crypt_hmac *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcry_md_write
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 313
    functionName: crypt_hmac_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 1
    functionsReached:
    - gcry_md_write
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_write(struct crypt_hmac *ctx, const char *buffer, size_t
      length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gcry_md_read
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:322,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:326,1
    - Dst: crypt_hmac_restart
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 330
    functionName: crypt_hmac_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 1
    functionsReached:
    - crypt_hmac_restart
    - crypt_backend_memcpy
    - gcry_md_read
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcry_md_close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:334,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 336
    functionName: crypt_hmac_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 1
    functionsReached:
    - gcry_md_close
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_hmac_destroy(struct crypt_hmac *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gcry_randomize
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:343,1
    - Dst: gcry_randomize
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - buffer
    - length
    - quality
    - fips
    argTypes:
    - char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 352
    functionName: crypt_backend_rng
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 2
    functionsReached:
    - gcry_randomize
    linkageType: ''
    returnType: int
    signature: int crypt_backend_rng(char *buffer, size_t length, int quality, int
      fips __attribute__((unused)))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_compat_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:360,1
    - Dst: pkcs5_pbkdf2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:363,1
    - Dst: gcry_md_map_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:366,1
    - Dst: gcry_kdf_derive
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:371,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 8
    argNames:
    - hash
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - iterations
    argTypes:
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 377
    functionName: pbkdf2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 1
    functionsReached:
    - gcry_md_map_name
    - pkcs5_pbkdf2
    - gcry_kdf_derive
    - crypt_hash_compat_name
    linkageType: ''
    returnType: int
    signature: "int pbkdf2(const char *hash,\n\t\t  const char *password, size_t password_length,\n\t\t
      \ const char *salt, size_t salt_length,\n\t\t  char *key, size_t key_length,\n\t\t
      \ uint32_t iterations)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct job_thread_param*::job
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:400,1
    - Dst: pthread_exit
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 402
    functionName: gcrypt_job_thread
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 0
    functionsReached:
    - pthread_exit
    - struct job_thread_param*::job
    linkageType: ''
    returnType: void
    signature: void *gcrypt_job_thread(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_join
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 416
    functionName: gcrypt_wait_all_jobs
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 0
    functionsReached:
    - pthread_join
    linkageType: ''
    returnType: int
    signature: int gcrypt_wait_all_jobs(void *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_create
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - job
    - p
    argTypes:
    - void*
    - gcry_kdf_job_fn_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 434
    functionName: gcrypt_dispatch_job
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 0
    functionsReached:
    - pthread_create
    linkageType: ''
    returnType: int
    signature: int gcrypt_dispatch_job(void *ctx, gcry_kdf_job_fn_t job, void *p)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:456,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:458,1
    - Dst: gcry_kdf_open
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:468,1
    - Dst: gcry_kdf_compute
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:476,1
    - Dst: calloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:479,1
    - Dst: pthread_attr_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:484,1
    - Dst: gcry_kdf_compute
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:487,1
    - Dst: gcry_kdf_final
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:491,1
    - Dst: gcry_kdf_close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:495,1
    - Dst: pthread_attr_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:496,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:497,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 10
    argNames:
    - type
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - iterations
    - memory
    - parallel
    argTypes:
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 500
    functionName: gcrypt_argon2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 0
    functionsReached:
    - gcry_kdf_close
    - gcry_kdf_open
    - free
    - pthread_attr_init
    - gcry_kdf_final
    - gcry_kdf_compute
    - pthread_attr_destroy
    - calloc
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int gcrypt_argon2(const char *type,\n\tconst char *password, size_t
      password_length,\n\tconst char *salt, size_t salt_length,\n\tchar *key, size_t
      key_length,\n\tuint32_t iterations, uint32_t memory, uint32_t parallel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:513,1
    - Dst: pbkdf2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:514,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:516,1
    - Dst: gcrypt_argon2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:518,1
    - Dst: argon2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:521,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 11
    argNames:
    - kdf
    - hash
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - iterations
    - memory
    - parallel
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 504
    functionDepth: 2
    functionLinenumber: 504
    functionLinenumberEnd: 525
    functionName: crypt_pbkdf
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 7
    functionsReached:
    - argon2
    - gcrypt_argon2
    - strncmp
    - pbkdf2
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int crypt_pbkdf(const char *kdf, const char *hash,\n\t\tconst char
      *password, size_t password_length,\n\t\tconst char *salt, size_t salt_length,\n\t\tchar
      *key, size_t key_length,\n\t\tuint32_t iterations, uint32_t memory, uint32_t
      parallel)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gcry_cipher_map_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:533,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:537,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:539,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:542,1
    - Dst: gcry_cipher_open
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:548,1
    - Dst: gcry_cipher_setkey
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:551,1
    - Dst: gcry_cipher_close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:552,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 5
    argNames:
    - hd
    - name
    - mode
    - buffer
    - length
    argTypes:
    - gcry_cipher_hd_t*
    - char*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 557
    functionName: _cipher_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 7
    functionsReached:
    - gcry_cipher_close
    - gcry_cipher_map_name
    - gcry_cipher_open
    - strcmp
    - gcry_cipher_setkey
    linkageType: ''
    returnType: int
    signature: "int _cipher_init(gcry_cipher_hd_t *hd, const char *name,\n\t\t\tconst
      char *mode, const void *buffer, size_t length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:565,1
    - Dst: _cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:569,1
    - Dst: crypt_cipher_init_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:575,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - ctx
    - name
    - mode
    - key
    - key_length
    argTypes:
    - struct crypt_cipher**
    - char*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 584
    functionName: crypt_cipher_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 7
    functionsReached:
    - crypt_cipher_init_kernel
    - _cipher_init
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_init(struct crypt_cipher **ctx, const char *name,\n\t\t
      \   const char *mode, const void *key, size_t key_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:589,1
    - Dst: gcry_cipher_close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:591,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 593
    functionName: crypt_cipher_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 7
    functionsReached:
    - crypt_cipher_destroy_kernel
    - free
    - gcry_cipher_close
    linkageType: ''
    returnType: void
    signature: void crypt_cipher_destroy(struct crypt_cipher *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_encrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:600,1
    - Dst: gcry_cipher_setiv
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:602,1
    - Dst: gcry_cipher_encrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:605,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 609
    functionName: crypt_cipher_encrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 1
    functionsReached:
    - gcry_cipher_encrypt
    - crypt_cipher_encrypt_kernel
    - gcry_cipher_setiv
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_encrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_decrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:616,1
    - Dst: gcry_cipher_setiv
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:618,1
    - Dst: gcry_cipher_decrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:621,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 625
    functionName: crypt_cipher_decrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 6
    functionsReached:
    - gcry_cipher_decrypt
    - crypt_cipher_decrypt_kernel
    - gcry_cipher_setiv
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_decrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 630
    functionName: crypt_cipher_kernel_only
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_cipher_kernel_only(struct crypt_cipher *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gcry_cipher_open
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:642,1
    - Dst: gcry_cipher_setkey
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:645,1
    - Dst: gcry_cipher_setiv
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:648,1
    - Dst: gcry_cipher_ctl
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:654,1
    - Dst: gcry_cipher_decrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:657,1
    - Dst: gcry_cipher_checktag
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:660,1
    - Dst: gcry_cipher_close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:665,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 9
    argNames:
    - key
    - key_length
    - in
    - out
    - length
    - iv
    - iv_length
    - tag
    - tag_length
    argTypes:
    - void*
    - size_t
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 670
    functionName: crypt_bitlk_decrypt_key
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 2
    functionsReached:
    - gcry_cipher_close
    - gcry_cipher_checktag
    - gcry_cipher_decrypt
    - gcry_cipher_setiv
    - gcry_cipher_open
    - gcry_cipher_ctl
    - gcry_cipher_setkey
    linkageType: ''
    returnType: int
    signature: "int crypt_bitlk_decrypt_key(const void *key, size_t key_length,\n\t\t\t
      \   const char *in, char *out, size_t length,\n\t\t\t    const char *iv, size_t
      iv_length,\n\t\t\t    const char *tag, size_t tag_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_internal_memeq
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - m1
    - m2
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 672
    functionDepth: 1
    functionLinenumber: 672
    functionLinenumberEnd: 675
    functionName: crypt_backend_memeq
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 6
    functionsReached:
    - crypt_internal_memeq
    linkageType: ''
    returnType: int
    signature: int crypt_backend_memeq(const void *m1, const void *m2, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 678
    functionName: crypt_fips_mode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_fips_mode(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_backend_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:687,1
    - Dst: gcry_fips_mode_active
      Src: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c:690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 694
    functionName: crypt_fips_mode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    functionUses: 7
    functionsReached:
    - crypt_backend_init
    - gcry_fips_mode_active
    linkageType: ''
    returnType: bool
    signature: bool crypt_fips_mode(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:34,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:43,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:43,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - kdf
    - limits
    argTypes:
    - char*
    - struct crypt_pbkdf_limits*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 55
    functionName: crypt_pbkdf_get_limits
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
    functionUses: 3
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int crypt_pbkdf_get_limits(const char *kdf, struct crypt_pbkdf_limits
      *limits)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_backend_flags
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - struct rusage*
    - struct rusage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 82
    functionName: time_ms
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
    functionUses: 0
    functionsReached:
    - crypt_backend_flags
    linkageType: ''
    returnType: long
    signature: long time_ms(struct rusage *start, struct rusage *end)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - struct timespec*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: timespec_ms
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long timespec_ms(struct timespec *start, struct timespec *end)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:107,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:110,1
    - Dst: clock_gettime
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:115,1
    - Dst: timespec_ms
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:118,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 13
    argNames:
    - kdf
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - t_cost
    - m_cost
    - parallel
    - samples
    - ms_atleast
    - out_ms
    argTypes:
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    - size_t
    - long
    - long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 133
    functionName: measure_argon2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
    functionUses: 0
    functionsReached:
    - crypt_pbkdf
    - clock_gettime
    - timespec_ms
    linkageType: ''
    returnType: int
    signature: "int measure_argon2(const char *kdf, const char *password, size_t password_length,\n\t\t\t
      \ const char *salt, size_t salt_length,\n\t\t\t  char *key, size_t key_length,\n\t\t\t
      \ uint32_t t_cost, uint32_t m_cost, uint32_t parallel,\n\t\t\t  size_t samples,
      long ms_atleast, long *out_ms)"
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 7
    argNames:
    - t_cost
    - m_cost
    - min_t_cost
    - min_m_cost
    - max_m_cost
    - ms
    - target_ms
    argTypes:
    - uint32_t*
    - uint32_t*
    - uint32_t
    - uint32_t
    - uint32_t
    - long
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 193
    functionName: next_argon2_params
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int next_argon2_params(uint32_t *t_cost, uint32_t *m_cost,\n\t\t\t
      \     uint32_t min_t_cost, uint32_t min_m_cost,\n\t\t\t      uint32_t max_m_cost,
      long ms, uint32_t target_ms)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:220,1
    - Dst: measure_argon2
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:229,1
    - Dst: progress
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:236,1
    - Dst: t_cost::t_cost
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:251,1
    - Dst: m_cost::m_cost
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:261,1
    - Dst: next_argon2_params
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:277,1
    - Dst: measure_argon2
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:285,1
    - Dst: progress
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:293,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:304,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:305,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 67
    argCount: 14
    argNames:
    - kdf
    - password
    - password_length
    - salt
    - salt_length
    - key_length
    - min_t_cost
    - min_m_cost
    - max_m_cost
    - parallel
    - target_ms
    - out_t_cost
    - out_m_cost
    - usrptr
    argTypes:
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 308
    functionName: crypt_argon2_check
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
    functionUses: 0
    functionsReached:
    - t_cost::t_cost
    - measure_argon2
    - free
    - crypt_backend_memzero
    - m_cost::m_cost
    - malloc
    - next_argon2_params
    - progress
    linkageType: ''
    returnType: int
    signature: "int crypt_argon2_check(const char *kdf, const char *password,\n\t\t\t
      \     size_t password_length, const char *salt,\n\t\t\t      size_t salt_length,
      size_t key_length,\n\t\t\t      uint32_t min_t_cost, uint32_t min_m_cost, uint32_t
      max_m_cost,\n\t\t\t      uint32_t parallel, uint32_t target_ms,\n\t\t\t      uint32_t
      *out_t_cost, uint32_t *out_m_cost,\n\t\t\t      int (*progress)(uint32_t time_ms,
      void *usrptr),\n\t\t\t      void *usrptr)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:328,1
    - Dst: getrusage
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:335,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:340,1
    - Dst: getrusage
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:346,1
    - Dst: time_ms
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:351,1
    - Dst: progress
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:361,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:386,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:387,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 60
    argCount: 10
    argNames:
    - kdf
    - hash
    - password
    - password_length
    - salt
    - salt_length
    - key_length
    - iter_secs
    - target_ms
    - usrptr
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - size_t
    - uint32_t*
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 390
    functionName: crypt_pbkdf_check
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
    functionUses: 0
    functionsReached:
    - free
    - crypt_backend_memzero
    - malloc
    - crypt_pbkdf
    - progress
    - getrusage
    - time_ms
    linkageType: ''
    returnType: int
    signature: "int crypt_pbkdf_check(const char *kdf, const char *hash,\n\t\t      const
      char *password, size_t password_length,\n\t\t      const char *salt, size_t
      salt_length,\n\t\t      size_t key_length, uint32_t *iter_secs, uint32_t target_ms,\n\t\t
      \     int (*progress)(uint32_t time_ms, void *usrptr), void *usrptr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_pbkdf_get_limits
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:407,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:421,1
    - Dst: crypt_pbkdf_check
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:422,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:426,1
    - Dst: crypt_argon2_check
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c:427,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 13
    argNames:
    - kdf
    - hash
    - password
    - password_size
    - salt
    - salt_size
    - volume_key_size
    - time_ms
    - max_memory_kb
    - parallel_threads
    - iterations_out
    - memory_out
    - usrptr
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 392
    functionDepth: 3
    functionLinenumber: 392
    functionLinenumberEnd: 435
    functionName: crypt_pbkdf_perf
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
    functionUses: 1
    functionsReached:
    - crypt_argon2_check
    - crypt_pbkdf_check
    - strncmp
    - crypt_pbkdf_get_limits
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int crypt_pbkdf_perf(const char *kdf, const char *hash,\n\t\tconst
      char *password, size_t password_size,\n\t\tconst char *salt, size_t salt_size,\n\t\tsize_t
      volume_key_size, uint32_t time_ms,\n\t\tuint32_t max_memory_kb, uint32_t parallel_threads,\n\t\tuint32_t
      *iterations_out, uint32_t *memory_out,\n\t\tint (*progress)(uint32_t time_ms,
      void *usrptr), void *usrptr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:23,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:26,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:29,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:31,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - src
    - src_len
    - dst
    - dst_len
    - hash_name
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 33
    functionName: hash_buf
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c
    functionUses: 1
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_write
    - crypt_hash_final
    - crypt_hash_init
    linkageType: ''
    returnType: int
    signature: "int hash_buf(const char *src, size_t src_len,\n\t\t    char *dst,
      size_t dst_len,\n\t\t    const char *hash_name)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: alloca
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:86,1
    - Dst: crypt_hmac_size
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:90,1
    - Dst: hash_buf
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:172,1
    - Dst: crypt_hmac_init
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:175,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:177,1
    - Dst: crypt_hmac_init
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:179,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:184,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:188,1
    - Dst: crypt_hmac_write
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:194,1
    - Dst: crypt_hmac_write
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:197,1
    - Dst: crypt_hmac_final
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:201,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:208,1
    - Dst: crypt_hmac_destroy
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:212,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:213,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:214,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c:215,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 60
    argCount: 9
    argNames:
    - hash
    - P
    - Plen
    - S
    - Slen
    - c
    - dkLen
    - DK
    - hash_block_size
    argTypes:
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - unsigned int
    - unsigned int
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 218
    functionName: pkcs5_pbkdf2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c
    functionUses: 1
    functionsReached:
    - memset
    - crypt_hmac_write
    - memcpy
    - crypt_hmac_init
    - crypt_backend_memzero
    - alloca
    - crypt_hmac_destroy
    - crypt_hmac_final
    - hash_buf
    - crypt_hmac_size
    linkageType: ''
    returnType: int
    signature: "int pkcs5_pbkdf2(const char *hash,\n\t\t\tconst char *P, size_t Plen,\n\t\t\tconst
      char *S, size_t Slen,\n\t\t\tunsigned int c, unsigned int dkLen,\n\t\t\tchar
      *DK, unsigned int hash_block_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 26
    functionName: base64char
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/base64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char base64char(int x)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 56
    functionName: unbase64char
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/base64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int unbase64char(char c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:63,1
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:64,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:67,1
    - Dst: base64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:73,1
    - Dst: base64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:74,1
    - Dst: base64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:75,1
    - Dst: base64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:76,1
    - Dst: base64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:81,1
    - Dst: base64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:82,1
    - Dst: base64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:83,1
    - Dst: base64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:88,1
    - Dst: base64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:89,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 4
    argNames:
    - out
    - out_length
    - in
    - in_length
    argTypes:
    - char**
    - size_t*
    - char*
    - size_t
    assertStmts:
    - condition: (in || in_length == 0)
      pos:
        line_end: 62
        line_start: 62
        source_file: /src/cryptsetup/lib/crypto_backend/base64.c
    - condition: (out)
      pos:
        line_end: 63
        line_start: 63
        source_file: /src/cryptsetup/lib/crypto_backend/base64.c
    constantsTouched: []
    func_position:
      end: 101
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 101
    functionName: crypt_base64_encode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/base64.c
    functionUses: 1
    functionsReached:
    - base64char
    - malloc
    - assert
    linkageType: ''
    returnType: int
    signature: int crypt_base64_encode(char **out, size_t *out_length, const char
      *in, size_t in_length)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:107,1
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:108,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:117,1
    - Dst: unbase64char
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:127,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:137,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 2
    argNames:
    - p
    - l
    argTypes:
    - char**
    - size_t*
    assertStmts:
    - condition: (p)
      pos:
        line_end: 106
        line_start: 106
        source_file: /src/cryptsetup/lib/crypto_backend/base64.c
    - condition: (l)
      pos:
        line_end: 107
        line_start: 107
        source_file: /src/cryptsetup/lib/crypto_backend/base64.c
    constantsTouched: []
    func_position:
      end: 144
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 144
    functionName: unbase64_next
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/base64.c
    functionUses: 0
    functionsReached:
    - strchr
    - unbase64char
    - assert
    linkageType: ''
    returnType: int
    signature: int unbase64_next(const char **p, size_t *l)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:154,1
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:155,1
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:156,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:159,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:165,1
    - Dst: unbase64_next
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:172,1
    - Dst: unbase64_next
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:184,1
    - Dst: unbase64_next
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:194,1
    - Dst: unbase64_next
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:200,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/base64.c:256,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 95
    argCount: 4
    argNames:
    - out
    - out_length
    - in
    - in_length
    argTypes:
    - char**
    - size_t*
    - char*
    - size_t
    assertStmts:
    - condition: (in || in_length == 0)
      pos:
        line_end: 153
        line_start: 153
        source_file: /src/cryptsetup/lib/crypto_backend/base64.c
    - condition: (out)
      pos:
        line_end: 154
        line_start: 154
        source_file: /src/cryptsetup/lib/crypto_backend/base64.c
    - condition: (out_length)
      pos:
        line_end: 155
        line_start: 155
        source_file: /src/cryptsetup/lib/crypto_backend/base64.c
    constantsTouched: []
    func_position:
      end: 263
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 263
    functionName: crypt_base64_decode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/base64.c
    functionUses: 2
    functionsReached:
    - unbase64_next
    - free
    - malloc
    - assert
    - strlen
    linkageType: ''
    returnType: int
    signature: int crypt_base64_decode(char **out, size_t *out_length, const char
      *in, size_t in_length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - crc32_table
    - seed
    - buf
    - len
    argTypes:
    - uint32_t*
    - uint32_t
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 171
    functionName: compute_crc32
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crc32.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t compute_crc32(\n\tconst uint32_t *crc32_table,\n\tuint32_t
      seed,\n\tconst unsigned char *buf,\n\tsize_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: compute_crc32
      Src: /src/cryptsetup/lib/crypto_backend/crc32.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - seed
    - buf
    - len
    argTypes:
    - uint32_t
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: crypt_crc32
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crc32.c
    functionUses: 4
    functionsReached:
    - compute_crc32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_crc32(uint32_t seed, const unsigned char *buf, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: compute_crc32
      Src: /src/cryptsetup/lib/crypto_backend/crc32.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - seed
    - buf
    - len
    argTypes:
    - uint32_t
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: crypt_crc32c
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crc32.c
    functionUses: 1
    functionsReached:
    - compute_crc32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_crc32c(uint32_t seed, const unsigned char *buf, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:64,1
    - Dst: mbedtls_md_info_from_type
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:65,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 70
    functionName: crypt_get_hash
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mbedtls_md_info_from_type
    linkageType: ''
    returnType: mbedtls_md_info_t
    signature: mbedtls_md_info_t *crypt_get_hash(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_version_get_string_full
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:79,1
    - Dst: mbedtls_entropy_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:81,1
    - Dst: mbedtls_ctr_drbg_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:82,1
    - Dst: mbedtls_ctr_drbg_seed
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 93
    functionName: crypt_backend_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 4
    functionsReached:
    - mbedtls_ctr_drbg_seed
    - mbedtls_entropy_init
    - mbedtls_ctr_drbg_init
    - mbedtls_version_get_string_full
    linkageType: ''
    returnType: int
    signature: int crypt_backend_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_ctr_drbg_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:100,1
    - Dst: mbedtls_entropy_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 103
    functionName: crypt_backend_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 4
    functionsReached:
    - mbedtls_entropy_free
    - mbedtls_ctr_drbg_free
    linkageType: ''
    returnType: void
    signature: void crypt_backend_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: crypt_backend_flags
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_backend_flags(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: crypt_backend_version
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *crypt_backend_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: crypt_fips_mode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_fips_mode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_ct_memcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - m1
    - m2
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: crypt_backend_memeq
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 6
    functionsReached:
    - mbedtls_ct_memcmp
    linkageType: ''
    returnType: int
    signature: int crypt_backend_memeq(const void *m1, const void *m2, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hash
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:129,1
    - Dst: mbedtls_md_get_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 131
    functionName: crypt_hash_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 15
    functionsReached:
    - mbedtls_md_get_size
    - crypt_get_hash
    linkageType: ''
    returnType: int
    signature: int crypt_hash_size(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:137,1
    - Dst: crypt_get_hash
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:141,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:143,1
    - Dst: mbedtls_md_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:147,1
    - Dst: mbedtls_md_setup
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:149,1
    - Dst: mbedtls_md_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:150,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:151,1
    - Dst: mbedtls_md_starts
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:155,1
    - Dst: mbedtls_md_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:156,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct crypt_hash**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 163
    functionName: crypt_hash_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 19
    functionsReached:
    - mbedtls_md_starts
    - free
    - mbedtls_md_setup
    - mbedtls_md_free
    - malloc
    - mbedtls_md_init
    - crypt_get_hash
    linkageType: ''
    returnType: int
    signature: int crypt_hash_init(struct crypt_hash **ctx, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_md_update
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 171
    functionName: crypt_hash_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 16
    functionsReached:
    - mbedtls_md_update
    linkageType: ''
    returnType: int
    signature: int crypt_hash_write(struct crypt_hash *ctx, const char *buffer, size_t
      length)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_md_get_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:177,1
    - Dst: mbedtls_md_finish
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:180,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:183,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:184,1
    - Dst: mbedtls_md_starts
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 190
    functionName: crypt_hash_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 16
    functionsReached:
    - mbedtls_md_starts
    - crypt_backend_memcpy
    - mbedtls_md_get_size
    - crypt_backend_memzero
    - mbedtls_md_finish
    linkageType: ''
    returnType: int
    signature: int crypt_hash_final(struct crypt_hash *ctx, char *buffer, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_md_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:194,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:195,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 197
    functionName: crypt_hash_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 23
    functionsReached:
    - crypt_backend_memzero
    - mbedtls_md_free
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_hash_destroy(struct crypt_hash *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: crypt_hmac_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 6
    functionsReached:
    - crypt_hash_size
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_size(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:210,1
    - Dst: crypt_get_hash
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:214,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:216,1
    - Dst: mbedtls_md_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:220,1
    - Dst: mbedtls_md_setup
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:222,1
    - Dst: mbedtls_md_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:223,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:224,1
    - Dst: mbedtls_md_hmac_starts
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:228,1
    - Dst: mbedtls_md_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:229,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:230,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - ctx
    - name
    - key
    - key_length
    argTypes:
    - struct crypt_hmac**
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 236
    functionName: crypt_hmac_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 2
    functionsReached:
    - free
    - mbedtls_md_setup
    - mbedtls_md_free
    - malloc
    - mbedtls_md_init
    - crypt_get_hash
    - mbedtls_md_hmac_starts
    linkageType: ''
    returnType: int
    signature: "int crypt_hmac_init(struct crypt_hmac **ctx, const char *name,\n\t\t
      \   const void *key, size_t key_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_md_hmac_update
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 244
    functionName: crypt_hmac_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 2
    functionsReached:
    - mbedtls_md_hmac_update
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_write(struct crypt_hmac *ctx, const char *buffer, size_t
      length)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_md_get_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:250,1
    - Dst: mbedtls_md_hmac_finish
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:253,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:256,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:257,1
    - Dst: mbedtls_md_hmac_reset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 263
    functionName: crypt_hmac_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 2
    functionsReached:
    - crypt_backend_memcpy
    - mbedtls_md_hmac_reset
    - mbedtls_md_get_size
    - crypt_backend_memzero
    - mbedtls_md_hmac_finish
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_md_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:267,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:268,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 270
    functionName: crypt_hmac_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 2
    functionsReached:
    - crypt_backend_memzero
    - mbedtls_md_free
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_hmac_destroy(struct crypt_hmac *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_ctr_drbg_set_prediction_resistance
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:280,1
    - Dst: mbedtls_ctr_drbg_set_prediction_resistance
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:282,1
    - Dst: mbedtls_ctr_drbg_random
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - buffer
    - length
    - quality
    - fips
    argTypes:
    - char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 288
    functionName: crypt_backend_rng
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 2
    functionsReached:
    - mbedtls_ctr_drbg_set_prediction_resistance
    - mbedtls_ctr_drbg_random
    linkageType: ''
    returnType: int
    signature: int crypt_backend_rng(char *buffer, size_t length, int quality, int
      fips)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:324,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:331,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:340,1
    - Dst: mbedtls_cipher_info_from_values
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:345,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:347,1
    - Dst: mbedtls_cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:351,1
    - Dst: mbedtls_cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:352,1
    - Dst: mbedtls_cipher_setup
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:353,1
    - Dst: mbedtls_cipher_setup
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:354,1
    - Dst: mbedtls_cipher_setkey
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:355,1
    - Dst: mbedtls_cipher_setkey
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:356,1
    - Dst: mbedtls_cipher_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:358,1
    - Dst: mbedtls_cipher_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:359,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:360,1
    - Dst: mbedtls_cipher_set_padding_mode
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:365,1
    - Dst: mbedtls_cipher_set_padding_mode
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:366,1
    - Dst: mbedtls_cipher_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:368,1
    - Dst: mbedtls_cipher_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:369,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:370,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 43
    argCount: 5
    argNames:
    - ctx
    - name
    - mode
    - key
    - key_length
    argTypes:
    - struct crypt_cipher**
    - char*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 378
    functionName: crypt_cipher_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 7
    functionsReached:
    - mbedtls_cipher_setup
    - mbedtls_cipher_setkey
    - free
    - malloc
    - mbedtls_cipher_info_from_values
    - mbedtls_cipher_set_padding_mode
    - strcmp
    - mbedtls_cipher_init
    - mbedtls_cipher_free
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_init(struct crypt_cipher **ctx, const char *name,\n\t\t
      \     const char *mode, const void *key, size_t key_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_cipher_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:382,1
    - Dst: mbedtls_cipher_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:383,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 385
    functionName: crypt_cipher_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 7
    functionsReached:
    - free
    - mbedtls_cipher_free
    linkageType: ''
    returnType: void
    signature: void crypt_cipher_destroy(struct crypt_cipher *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_cipher_get_block_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:400,1
    - Dst: mbedtls_cipher_set_iv
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:407,1
    - Dst: mbedtls_cipher_reset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:410,1
    - Dst: mbedtls_cipher_update
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:415,1
    - Dst: mbedtls_cipher_finish
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:423,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 7
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    - ecb
    argTypes:
    - mbedtls_cipher_context_t*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 427
    functionName: crypt_cipher_crypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 0
    functionsReached:
    - mbedtls_cipher_finish
    - mbedtls_cipher_update
    - mbedtls_cipher_reset
    - mbedtls_cipher_get_block_size
    - mbedtls_cipher_set_iv
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_crypt(\n\tmbedtls_cipher_context_t *ctx,\n\tconst
      char *in, char *out, size_t length,\n\tconst char *iv, size_t iv_length,\n\tint
      ecb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_crypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 434
    functionName: crypt_cipher_encrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 1
    functionsReached:
    - crypt_cipher_crypt
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_encrypt(struct crypt_cipher *ctx,\n                         const
      char *in, char *out, size_t length,\n                         const char *iv,
      size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_crypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 441
    functionName: crypt_cipher_decrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 6
    functionsReached:
    - crypt_cipher_crypt
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_decrypt(struct crypt_cipher *ctx,\n                         const
      char *in, char *out, size_t length,\n                         const char *iv,
      size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 446
    functionName: crypt_cipher_kernel_only
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_cipher_kernel_only(struct crypt_cipher *ctx __attribute__((unused)))
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:462,1
    - Dst: crypt_get_hash
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:463,1
    - Dst: mbedtls_pkcs5_pbkdf2_hmac_ext
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:468,1
    - Dst: mbedtls_md_get_type
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:468,1
    - Dst: mbedtls_md_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:476,1
    - Dst: mbedtls_md_setup
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:477,1
    - Dst: mbedtls_pkcs5_pbkdf2_hmac
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:480,1
    - Dst: mbedtls_md_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:485,1
    - Dst: mbedtls_md_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:489,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:493,1
    - Dst: argon2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:494,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 11
    argNames:
    - kdf
    - hash
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - iterations
    - memory
    - parallel
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 499
    functionName: crypt_pbkdf
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 9
    functionsReached:
    - mbedtls_pkcs5_pbkdf2_hmac_ext
    - mbedtls_md_setup
    - mbedtls_md_free
    - mbedtls_pkcs5_pbkdf2_hmac
    - mbedtls_md_get_type
    - argon2
    - strncmp
    - mbedtls_md_init
    - crypt_get_hash
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int crypt_pbkdf(const char *kdf, const char *hash,\n                const
      char *password, size_t password_length,\n                const char *salt, size_t
      salt_length,\n                char *key, size_t key_length,\n                uint32_t
      iterations, uint32_t memory, uint32_t parallel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_ccm_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:516,1
    - Dst: mbedtls_ccm_setkey
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:518,1
    - Dst: mbedtls_ccm_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:519,1
    - Dst: mbedtls_ccm_auth_decrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:523,1
    - Dst: mbedtls_ccm_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:526,1
    - Dst: mbedtls_ccm_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c:530,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 9
    argNames:
    - key
    - key_length
    - in
    - out
    - length
    - iv
    - iv_length
    - tag
    - tag_length
    argTypes:
    - void*
    - size_t
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 532
    functionName: crypt_bitlk_decrypt_key
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    functionUses: 2
    functionsReached:
    - mbedtls_ccm_free
    - mbedtls_ccm_setkey
    - mbedtls_ccm_auth_decrypt
    - mbedtls_ccm_init
    linkageType: ''
    returnType: int
    signature: "int crypt_bitlk_decrypt_key(const void *key, size_t key_length,\n
      \                           const char *in, char *out, size_t length,\n                            const
      char *iv, size_t iv_length,\n                            const char *tag, size_t
      tag_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - x
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: int_log2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int_log2(unsigned int x)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:55,1
    - Dst: crypt_cipher_ivsize
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:57,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:58,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:61,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:62,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:70,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:72,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:74,1
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:76,1
    - Dst: strncasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:78,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:80,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:87,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:94,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:97,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:99,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:103,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:104,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:106,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:110,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:112,1
    - Dst: strncasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:117,1
    - Dst: int_log2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:118,1
    - Dst: strncasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:124,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:125,1
    - Dst: int_log2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:131,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:135,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 72
    argCount: 7
    argNames:
    - ctx
    - cipher_name
    - mode_name
    - iv_name
    - key
    - key_length
    - sector_size
    argTypes:
    - struct crypt_sector_iv*
    - char*
    - char*
    - char*
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 140
    functionName: crypt_sector_iv_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - memset
    - strcasecmp
    - crypt_hash_size
    - crypt_hash_final
    - int_log2
    - crypt_cipher_init
    - crypt_backend_memzero
    - strncasecmp
    - malloc
    - crypt_cipher_ivsize
    - crypt_hash_write
    - crypt_hash_init
    - strcmp
    - strchr
    linkageType: ''
    returnType: int
    signature: "int crypt_sector_iv_init(struct crypt_sector_iv *ctx,\n\t\t\t const
      char *cipher_name, const char *mode_name,\n\t\t\t const char *iv_name, const
      void *key, size_t key_length,\n\t\t\t size_t sector_size)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:151,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:154,1
    - Dst: cpu_to_le32
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:156,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:159,1
    - Dst: cpu_to_le64
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:161,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:164,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:167,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:170,1
    - Dst: cpu_to_le64
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:172,1
    - Dst: crypt_cipher_encrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:173,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:177,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:178,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:179,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:182,1
    - Dst: cpu_to_le64
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:184,1
    - Dst: crypt_cipher_encrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:185,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 2
    argNames:
    - ctx
    - sector
    argTypes:
    - struct crypt_sector_iv*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 193
    functionName: crypt_sector_iv_generate
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_cipher_encrypt
    - memcpy
    - cpu_to_le64
    - cpu_to_le32
    - cpu_to_be64
    linkageType: ''
    returnType: int
    signature: int crypt_sector_iv_generate(struct crypt_sector_iv *ctx, uint64_t
      sector)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:198,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:201,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:202,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_sector_iv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 206
    functionName: crypt_sector_iv_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_cipher_destroy
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_sector_iv_destroy(struct crypt_sector_iv *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: "sector_size < (1 << SECTOR_SHIFT) ||\n\t    sector_size >"
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:222,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:228,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:229,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:232,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:236,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:238,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:243,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:249,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:252,1
    - Dst: crypt_cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:254,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:256,1
    - Dst: crypt_sector_iv_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:260,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:262,1
    - Dst: int_log2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:267,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 7
    argNames:
    - ctx
    - sector_size
    - cipher
    - cipher_mode
    - key
    - key_length
    - large_iv
    argTypes:
    - struct crypt_storage**
    - size_t
    - char*
    - char*
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 271
    functionName: crypt_storage_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    functionUses: 4
    functionsReached:
    - memset
    - snprintf
    - crypt_cipher_init
    - crypt_storage_destroy
    - strncmp
    - malloc
    - strncpy
    - sscanf
    - "sector_size < (1 << SECTOR_SHIFT) ||\n\t    sector_size >"
    - int_log2
    - crypt_sector_iv_init
    - strchr
    linkageType: ''
    returnType: int
    signature: "int crypt_storage_init(struct crypt_storage **ctx,\n\t\t       size_t
      sector_size,\n\t\t       const char *cipher,\n\t\t       const char *cipher_mode,\n\t\t
      \      const void *key, size_t key_length,\n\t\t       bool large_iv)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_sector_iv_generate
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:287,1
    - Dst: crypt_cipher_decrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:290,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - iv_offset
    - length
    - buffer
    argTypes:
    - struct crypt_storage*
    - uint64_t
    - uint64_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 301
    functionName: crypt_storage_decrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    functionUses: 4
    functionsReached:
    - crypt_cipher_decrypt
    - crypt_sector_iv_generate
    linkageType: ''
    returnType: int
    signature: "int crypt_storage_decrypt(struct crypt_storage *ctx,\n\t\t       uint64_t
      iv_offset,\n\t\t       uint64_t length, char *buffer)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_sector_iv_generate
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:317,1
    - Dst: crypt_cipher_encrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:320,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - iv_offset
    - length
    - buffer
    argTypes:
    - struct crypt_storage*
    - uint64_t
    - uint64_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 331
    functionName: crypt_storage_encrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    functionUses: 3
    functionsReached:
    - crypt_sector_iv_generate
    - crypt_cipher_encrypt
    linkageType: ''
    returnType: int
    signature: "int crypt_storage_encrypt(struct crypt_storage *ctx,\n\t\t       uint64_t
      iv_offset,\n\t\t       uint64_t length, char *buffer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_sector_iv_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:338,1
    - Dst: crypt_cipher_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:341,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:343,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 345
    functionName: crypt_storage_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    functionUses: 6
    functionsReached:
    - free
    - crypt_sector_iv_destroy
    - crypt_cipher_destroy
    - memset
    linkageType: ''
    returnType: void
    signature: void crypt_storage_destroy(struct crypt_storage *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_kernel_only
      Src: /src/cryptsetup/lib/crypto_backend/crypto_storage.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: crypt_storage_kernel_only
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    functionUses: 1
    functionsReached:
    - crypt_cipher_kernel_only
    linkageType: ''
    returnType: bool
    signature: bool crypt_storage_kernel_only(struct crypt_storage *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 16
    functionName: CONST_CAST
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2_generic.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONST_CAST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: explicit_bzero
      Src: /src/cryptsetup/lib/crypto_backend/memutils.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 34
    functionName: crypt_backend_memzero
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/memutils.c
    functionUses: 19
    functionsReached:
    - explicit_bzero
    linkageType: ''
    returnType: ATTR_NOINLINE
    signature: ATTR_NOINLINE crypt_backend_memzero(void *s, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - dst
    - src
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 46
    functionName: crypt_backend_memcpy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/memutils.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: ATTR_NOINLINE
    signature: ATTR_NOINLINE *crypt_backend_memcpy(void *dst, const void *src, size_t
      n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - m1
    - m2
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 61
    functionName: crypt_internal_memeq
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/memutils.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ATTR_NOINLINE
    signature: ATTR_NOINLINE crypt_internal_memeq(const void *m1, const void *m2,
      size_t n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:49,1
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:51,1
    - Dst: bind
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:55,1
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:56,1
    - Dst: setsockopt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:60,1
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:61,1
    - Dst: setsockopt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:65,1
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:66,1
    - Dst: accept
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:70,1
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:72,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 5
    argNames:
    - ctx
    - key
    - key_length
    - tag_length
    - sa
    argTypes:
    - struct crypt_cipher_kernel*
    - void*
    - size_t
    - size_t
    - struct sockaddr_alg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 77
    functionName: _crypt_cipher_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 0
    functionsReached:
    - bind
    - accept
    - setsockopt
    - socket
    - crypt_cipher_destroy_kernel
    linkageType: ''
    returnType: int
    signature: "int _crypt_cipher_init(struct crypt_cipher_kernel *ctx,\n\t\t\t      const
      void *key, size_t key_length,\n\t\t\t      size_t tag_length, struct sockaddr_alg
      *sa)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:88,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:91,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:92,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:94,1
    - Dst: _crypt_cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - name
    - mode
    - key
    - key_length
    argTypes:
    - struct crypt_cipher_kernel*
    - char*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 100
    functionName: crypt_cipher_init_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 1
    functionsReached:
    - snprintf
    - _crypt_cipher_init
    - strncmp
    - strncpy
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_init_kernel(struct crypt_cipher_kernel *ctx, const
      char *name,\n\t\t\t     const char *mode, const void *key, size_t key_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_NXTHDR
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:109,1
    - Dst: CMSG_NXTHDR
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - mhdr
    - cmsg
    argTypes:
    - struct msghdr*
    - struct cmsghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 114
    functionName: _CMSG_NXTHDR
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 0
    functionsReached:
    - CMSG_NXTHDR
    linkageType: ''
    returnType: struct cmsghdr
    signature: struct cmsghdr *_CMSG_NXTHDR(struct msghdr* mhdr, struct cmsghdr* cmsg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:133,1
    - Dst: CMSG_SPACE
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:134,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:148,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:151,1
    - Dst: CMSG_LEN
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:157,1
    - Dst: CMSG_DATA
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:158,1
    - Dst: _CMSG_NXTHDR
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:163,1
    - Dst: CMSG_DATA
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:170,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:172,1
    - Dst: sendmsg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:175,1
    - Dst: read
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:179,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:184,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 8
    argNames:
    - ctx
    - in
    - in_length
    - out
    - out_length
    - iv
    - iv_length
    - direction
    argTypes:
    - struct crypt_cipher_kernel*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 186
    functionName: _crypt_cipher_crypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_backend_memcpy
    - sendmsg
    - crypt_backend_memzero
    - CMSG_LEN
    - CMSG_SPACE
    - _CMSG_NXTHDR
    - CMSG_FIRSTHDR
    - read
    - CMSG_DATA
    linkageType: ''
    returnType: int
    signature: "int _crypt_cipher_crypt(struct crypt_cipher_kernel *ctx,\n\t\t\t       const
      char *in, size_t in_length,\n\t\t\t       char *out, size_t out_length,\n\t\t\t
      \      const char *iv, size_t iv_length,\n\t\t\t       uint32_t direction)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_cipher_crypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher_kernel*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 194
    functionName: crypt_cipher_encrypt_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 1
    functionsReached:
    - _crypt_cipher_crypt
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_encrypt_kernel(struct crypt_cipher_kernel *ctx,\n\t\t\t\tconst
      char *in, char *out, size_t length,\n\t\t\t\tconst char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_cipher_crypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher_kernel*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 202
    functionName: crypt_cipher_decrypt_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 1
    functionsReached:
    - _crypt_cipher_crypt
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_decrypt_kernel(struct crypt_cipher_kernel *ctx,\n\t\t\t\tconst
      char *in, char *out, size_t length,\n\t\t\t\tconst char *iv, size_t iv_length)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:207,1
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher_kernel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 213
    functionName: crypt_cipher_destroy_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 2
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void crypt_cipher_destroy_kernel(struct crypt_cipher_kernel *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:227,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:232,1
    - Dst: strchr
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:234,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:242,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:246,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:251,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:252,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:254,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:255,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:256,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:258,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:261,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:263,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:269,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:271,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:276,1
    - Dst: _crypt_cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:279,1
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:280,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:281,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 4
    argNames:
    - name
    - mode
    - integrity
    - key_length
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 284
    functionName: crypt_cipher_check_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 3
    functionsReached:
    - memset
    - snprintf
    - memcpy
    - _crypt_cipher_init
    - free
    - malloc
    - strncpy
    - crypt_cipher_destroy_kernel
    - strcmp
    - strchr
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_check_kernel(const char *name, const char *mode,\n\t\t\t
      \     const char *integrity, size_t key_length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _crypt_cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:306,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:310,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:311,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:314,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:316,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:317,1
    - Dst: _crypt_cipher_crypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:320,1
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:323,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 9
    argNames:
    - key
    - key_length
    - in
    - out
    - length
    - iv
    - iv_length
    - tag
    - tag_length
    argTypes:
    - void*
    - size_t
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 327
    functionName: crypt_bitlk_decrypt_key_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 0
    functionsReached:
    - memset
    - _crypt_cipher_init
    - memcpy
    - crypt_backend_memzero
    - crypt_cipher_destroy_kernel
    - _crypt_cipher_crypt
    linkageType: ''
    returnType: int
    signature: "int crypt_bitlk_decrypt_key_kernel(const void *key, size_t key_length,\n\t\t\t\t
      \  const char *in, char *out, size_t length,\n\t\t\t\t   const char *iv, size_t
      iv_length,\n\t\t\t\t   const char *tag, size_t tag_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ctx
    - name
    - mode
    - key
    - key_length
    argTypes:
    - struct crypt_cipher_kernel*
    - char*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 336
    functionName: crypt_cipher_init_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_init_kernel(struct crypt_cipher_kernel *ctx, const
      char *name,\n\t\t\t     const char *mode, const void *key, size_t key_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher_kernel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: crypt_cipher_destroy_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_cipher_destroy_kernel(struct crypt_cipher_kernel *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher_kernel*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 348
    functionName: crypt_cipher_encrypt_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_encrypt_kernel(struct crypt_cipher_kernel *ctx,\n\t\t\t\tconst
      char *in, char *out, size_t length,\n\t\t\t\tconst char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher_kernel*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 354
    functionName: crypt_cipher_decrypt_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_decrypt_kernel(struct crypt_cipher_kernel *ctx,\n\t\t\t\tconst
      char *in, char *out, size_t length,\n\t\t\t\tconst char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - name
    - mode
    - integrity
    - key_length
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 360
    functionName: crypt_cipher_check_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_check_kernel(const char *name, const char *mode,\n\t\t\t
      \     const char *integrity, size_t key_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - key
    - key_length
    - in
    - out
    - length
    - iv
    - iv_length
    - tag
    - tag_length
    argTypes:
    - void*
    - size_t
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 367
    functionName: crypt_bitlk_decrypt_key_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int crypt_bitlk_decrypt_key_kernel(const void *key, size_t key_length,\n\t\t\t\t
      \  const char *in, char *out, size_t length,\n\t\t\t\t   const char *iv, size_t
      iv_length,\n\t\t\t\t   const char *tag, size_t tag_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: VSTR
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VSTR(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: STR
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 74
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xxx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 55
    functionName: HMAC_FCE
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HMAC_FCE(xxx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: crypt_backend_flags
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_backend_flags(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 201
    functionName: _get_alg
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct hash_alg
    signature: struct hash_alg *_get_alg(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 206
    functionName: crypt_backend_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_backend_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: crypt_backend_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_backend_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: crypt_backend_version
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *crypt_backend_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 224
    functionName: crypt_hash_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 17
    functionsReached:
    - _get_alg
    linkageType: ''
    returnType: int
    signature: int crypt_hash_size(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:230,1
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:234,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:236,1
    - Dst: struct crypt_hash*::hash::init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct crypt_hash**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 244
    functionName: crypt_hash_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 20
    functionsReached:
    - _get_alg
    - struct crypt_hash*::hash::init
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: int crypt_hash_init(struct crypt_hash **ctx, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct crypt_hash*::hash::init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: crypt_hash_restart
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 1
    functionsReached:
    - struct crypt_hash*::hash::init
    linkageType: ''
    returnType: void
    signature: void crypt_hash_restart(struct crypt_hash *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct crypt_hash*::hash::update
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 255
    functionName: crypt_hash_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 17
    functionsReached:
    - struct crypt_hash*::hash::update
    linkageType: ''
    returnType: int
    signature: int crypt_hash_write(struct crypt_hash *ctx, const char *buffer, size_t
      length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct crypt_hash*::hash::digest
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:262,1
    - Dst: crypt_hash_restart
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 265
    functionName: crypt_hash_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 17
    functionsReached:
    - struct crypt_hash*::hash::digest
    - crypt_hash_restart
    linkageType: ''
    returnType: int
    signature: int crypt_hash_final(struct crypt_hash *ctx, char *buffer, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:269,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 271
    functionName: crypt_hash_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 24
    functionsReached:
    - memset
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_hash_destroy(struct crypt_hash *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: crypt_hmac_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 6
    functionsReached:
    - crypt_hash_size
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_size(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:284,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:287,1
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:289,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:291,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:295,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:297,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:301,1
    - Dst: struct crypt_hmac*::hash::init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:304,1
    - Dst: struct crypt_hmac*::hash::hmac_set_key
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - ctx
    - name
    - key
    - key_length
    argTypes:
    - struct crypt_hmac**
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 309
    functionName: crypt_hmac_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 2
    functionsReached:
    - memset
    - crypt_backend_memcpy
    - free
    - struct crypt_hmac*::hash::hmac_set_key
    - malloc
    - _get_alg
    - struct crypt_hmac*::hash::init
    linkageType: ''
    returnType: int
    signature: "int crypt_hmac_init(struct crypt_hmac **ctx, const char *name,\n\t\t
      \   const void *key, size_t key_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct crypt_hmac*::hash::hmac_set_key
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: crypt_hmac_restart
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 1
    functionsReached:
    - struct crypt_hmac*::hash::hmac_set_key
    linkageType: ''
    returnType: void
    signature: void crypt_hmac_restart(struct crypt_hmac *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct crypt_hmac*::hash::hmac_update
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 320
    functionName: crypt_hmac_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 2
    functionsReached:
    - struct crypt_hmac*::hash::hmac_update
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_write(struct crypt_hmac *ctx, const char *buffer, size_t
      length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct crypt_hmac*::hash::hmac_digest
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:327,1
    - Dst: crypt_hmac_restart
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 330
    functionName: crypt_hmac_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 2
    functionsReached:
    - crypt_hmac_restart
    - struct crypt_hmac*::hash::hmac_digest
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:334,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:335,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:336,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 338
    functionName: crypt_hmac_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 2
    functionsReached:
    - memset
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_hmac_destroy(struct crypt_hmac *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - buffer
    - length
    - quality
    - fips
    argTypes:
    - char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 347
    functionName: crypt_backend_rng
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int crypt_backend_rng(char *buffer __attribute__((unused)),\n\t\t
      \     size_t length __attribute__((unused)),\n\t\t      int quality __attribute__((unused)),\n\t\t
      \     int fips __attribute__((unused)))"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:362,1
    - Dst: crypt_hmac_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:363,1
    - Dst: nettle_pbkdf2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:367,1
    - Dst: crypt_hmac_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:371,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:373,1
    - Dst: argon2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 11
    argNames:
    - kdf
    - hash
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - iterations
    - memory
    - parallel
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 379
    functionName: crypt_pbkdf
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 9
    functionsReached:
    - crypt_hmac_init
    - argon2
    - crypt_hmac_destroy
    - strncmp
    - nettle_pbkdf2
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int crypt_pbkdf(const char *kdf, const char *hash,\n\t\tconst char
      *password, size_t password_length,\n\t\tconst char *salt, size_t salt_length,\n\t\tchar
      *key, size_t key_length,\n\t\tuint32_t iterations, uint32_t memory, uint32_t
      parallel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:388,1
    - Dst: crypt_cipher_init_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:392,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - ctx
    - name
    - mode
    - key
    - key_length
    argTypes:
    - struct crypt_cipher**
    - char*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 382
    functionDepth: 3
    functionLinenumber: 382
    functionLinenumberEnd: 400
    functionName: crypt_cipher_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 12
    functionsReached:
    - crypt_cipher_init_kernel
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_init(struct crypt_cipher **ctx, const char *name,\n\t\t
      \   const char *mode, const void *key, size_t key_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:404,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 406
    functionName: crypt_cipher_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 9
    functionsReached:
    - crypt_cipher_destroy_kernel
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_cipher_destroy(struct crypt_cipher *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_encrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 408
    functionDepth: 3
    functionLinenumber: 408
    functionLinenumberEnd: 413
    functionName: crypt_cipher_encrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 3
    functionsReached:
    - crypt_cipher_encrypt_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_encrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_decrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 415
    functionDepth: 3
    functionLinenumber: 415
    functionLinenumberEnd: 420
    functionName: crypt_cipher_decrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 7
    functionsReached:
    - crypt_cipher_decrypt_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_decrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: crypt_cipher_kernel_only
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_cipher_kernel_only(struct crypt_cipher *ctx __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_bitlk_decrypt_key_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - key
    - key_length
    - in
    - out
    - length
    - iv
    - iv_length
    - tag
    - tag_length
    argTypes:
    - void*
    - size_t
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 427
    functionDepth: 3
    functionLinenumber: 427
    functionLinenumberEnd: 434
    functionName: crypt_bitlk_decrypt_key
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 2
    functionsReached:
    - crypt_bitlk_decrypt_key_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_bitlk_decrypt_key(const void *key, size_t key_length,\n\t\t\t
      \   const char *in, char *out, size_t length,\n\t\t\t    const char *iv, size_t
      iv_length,\n\t\t\t    const char *tag, size_t tag_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memeql_sec
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - m1
    - m2
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 440
    functionName: crypt_backend_memeq
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 6
    functionsReached:
    - memeql_sec
    linkageType: ''
    returnType: int
    signature: int crypt_backend_memeq(const void *m1, const void *m2, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 445
    functionName: crypt_fips_mode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_fips_mode(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:80,1
    - Dst: bind
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:84,1
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:85,1
    - Dst: setsockopt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:90,1
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:91,1
    - Dst: accept
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:96,1
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 5
    argNames:
    - sa
    - tfmfd
    - opfd
    - key
    - key_length
    argTypes:
    - struct sockaddr_alg*
    - int*
    - int*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 104
    functionName: crypt_kernel_socket_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 0
    functionsReached:
    - bind
    - accept
    - setsockopt
    - socket
    - close
    linkageType: ''
    returnType: int
    signature: "int crypt_kernel_socket_init(struct sockaddr_alg *sa, int *tfmfd,
      int *opfd,\n\t\t\t\t    const void *key, size_t key_length)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: uname
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:119,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:119,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:122,1
    - Dst: crypt_kernel_socket_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:127,1
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:130,1
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:131,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 135
    functionName: crypt_backend_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 4
    functionsReached:
    - crypt_kernel_socket_init
    - snprintf
    - uname
    - close
    - strcmp
    linkageType: ''
    returnType: int
    signature: int crypt_backend_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: crypt_backend_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_backend_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: crypt_backend_flags
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_backend_flags(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: crypt_backend_version
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *crypt_backend_version(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 162
    functionName: _get_alg
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 5
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct hash_alg
    signature: struct hash_alg *_get_alg(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 170
    functionName: crypt_hash_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 18
    functionsReached:
    - _get_alg
    linkageType: ''
    returnType: int
    signature: int crypt_hash_size(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:181,1
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:185,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:187,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:192,1
    - Dst: crypt_kernel_socket_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:194,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:195,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct crypt_hash**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 201
    functionName: crypt_hash_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 20
    functionsReached:
    - crypt_kernel_socket_init
    - free
    - malloc
    - strncpy
    - _get_alg
    linkageType: ''
    returnType: int
    signature: int crypt_hash_init(struct crypt_hash **ctx, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 212
    functionName: crypt_hash_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 17
    functionsReached:
    - send
    linkageType: ''
    returnType: int
    signature: int crypt_hash_write(struct crypt_hash *ctx, const char *buffer, size_t
      length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 226
    functionName: crypt_hash_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 17
    functionsReached:
    - read
    linkageType: ''
    returnType: int
    signature: int crypt_hash_final(struct crypt_hash *ctx, char *buffer, size_t length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:231,1
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:233,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 235
    functionName: crypt_hash_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 24
    functionsReached:
    - close
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_hash_destroy(struct crypt_hash *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 241
    functionName: crypt_hmac_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 6
    functionsReached:
    - crypt_hash_size
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_size(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:254,1
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:258,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:260,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:265,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:268,1
    - Dst: crypt_kernel_socket_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:272,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - ctx
    - name
    - key
    - key_length
    argTypes:
    - struct crypt_hmac**
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 279
    functionName: crypt_hmac_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 3
    functionsReached:
    - crypt_kernel_socket_init
    - free
    - snprintf
    - malloc
    - _get_alg
    linkageType: ''
    returnType: int
    signature: "int crypt_hmac_init(struct crypt_hmac **ctx, const char *name,\n\t\t
      \   const void *key, size_t key_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 290
    functionName: crypt_hmac_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 2
    functionsReached:
    - send
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_write(struct crypt_hmac *ctx, const char *buffer, size_t
      length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 304
    functionName: crypt_hmac_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 2
    functionsReached:
    - read
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:309,1
    - Dst: close
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:311,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 313
    functionName: crypt_hmac_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 3
    functionsReached:
    - close
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_hmac_destroy(struct crypt_hmac *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - buffer
    - length
    - quality
    - fips
    argTypes:
    - char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 320
    functionName: crypt_backend_rng
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int crypt_backend_rng(char *buffer __attribute__((unused)), size_t
      length __attribute__((unused)),\n\tint quality __attribute__((unused)), int
      fips __attribute__((unused)))"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:334,1
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:335,1
    - Dst: pkcs5_pbkdf2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:339,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:341,1
    - Dst: argon2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:342,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 11
    argNames:
    - kdf
    - hash
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - iterations
    - memory
    - parallel
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 347
    functionName: crypt_pbkdf
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 9
    functionsReached:
    - argon2
    - strncmp
    - _get_alg
    - pkcs5_pbkdf2
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int crypt_pbkdf(const char *kdf, const char *hash,\n\t\tconst char
      *password, size_t password_length,\n\t\tconst char *salt, size_t salt_length,\n\t\tchar
      *key, size_t key_length,\n\t\tuint32_t iterations, uint32_t memory, uint32_t
      parallel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:356,1
    - Dst: crypt_cipher_init_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:360,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - ctx
    - name
    - mode
    - key
    - key_length
    argTypes:
    - struct crypt_cipher**
    - char*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 350
    functionDepth: 3
    functionLinenumber: 350
    functionLinenumberEnd: 368
    functionName: crypt_cipher_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 12
    functionsReached:
    - crypt_cipher_init_kernel
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_init(struct crypt_cipher **ctx, const char *name,\n\t\t
      \   const char *mode, const void *key, size_t key_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:372,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 374
    functionName: crypt_cipher_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 9
    functionsReached:
    - crypt_cipher_destroy_kernel
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_cipher_destroy(struct crypt_cipher *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_encrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 381
    functionName: crypt_cipher_encrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 3
    functionsReached:
    - crypt_cipher_encrypt_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_encrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_decrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 388
    functionName: crypt_cipher_decrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 7
    functionsReached:
    - crypt_cipher_decrypt_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_decrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 393
    functionName: crypt_cipher_kernel_only
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_cipher_kernel_only(struct crypt_cipher *ctx __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_bitlk_decrypt_key_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - key
    - key_length
    - in
    - out
    - length
    - iv
    - iv_length
    - tag
    - tag_length
    argTypes:
    - void*
    - size_t
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 395
    functionDepth: 3
    functionLinenumber: 395
    functionLinenumberEnd: 402
    functionName: crypt_bitlk_decrypt_key
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 2
    functionsReached:
    - crypt_bitlk_decrypt_key_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_bitlk_decrypt_key(const void *key, size_t key_length,\n\t\t\t
      \   const char *in, char *out, size_t length,\n\t\t\t    const char *iv, size_t
      iv_length,\n\t\t\t    const char *tag, size_t tag_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_internal_memeq
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - m1
    - m2
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 407
    functionName: crypt_backend_memeq
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 6
    functionsReached:
    - crypt_internal_memeq
    linkageType: ''
    returnType: int
    signature: int crypt_backend_memeq(const void *m1, const void *m2, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_fips_mode_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: crypt_fips_mode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    functionUses: 7
    functionsReached:
    - crypt_fips_mode_kernel
    linkageType: ''
    returnType: bool
    signature: bool crypt_fips_mode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - start
    - end
    - ms
    argTypes:
    - struct timespec*
    - struct timespec*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 43
    functionName: time_ms
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/cipher_check.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int time_ms(struct timespec *start, struct timespec *end, double *ms)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_encrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:59,1
    - Dst: crypt_cipher_decrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:62,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 6
    argNames:
    - cipher
    - buffer
    - buffer_size
    - iv
    - iv_size
    - enc
    argTypes:
    - struct crypt_cipher_kernel*
    - char*
    - size_t
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 71
    functionName: cipher_perf_one
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/cipher_check.c
    functionUses: 0
    functionsReached:
    - crypt_cipher_decrypt_kernel
    - crypt_cipher_encrypt_kernel
    linkageType: ''
    returnType: int
    signature: "int cipher_perf_one(struct crypt_cipher_kernel *cipher, char *buffer,
      size_t buffer_size,\n\t\t\t   const char *iv, size_t iv_size, int enc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:83,1
    - Dst: cipher_perf_one
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:86,1
    - Dst: clock_gettime
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:90,1
    - Dst: time_ms
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:93,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 7
    argNames:
    - cipher
    - buffer
    - buffer_size
    - iv
    - iv_size
    - encrypt
    - ms
    argTypes:
    - struct crypt_cipher_kernel*
    - char*
    - size_t
    - char*
    - size_t
    - int
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 73
    functionDepth: 4
    functionLinenumber: 73
    functionLinenumberEnd: 101
    functionName: cipher_measure
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/cipher_check.c
    functionUses: 0
    functionsReached:
    - cipher_perf_one
    - clock_gettime
    - time_ms
    linkageType: ''
    returnType: int
    signature: "int cipher_measure(struct crypt_cipher_kernel *cipher, char *buffer,
      size_t buffer_size,\n\t\t\t  const char *iv, size_t iv_size, int encrypt, double
      *ms)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bytes
    - ms
    argTypes:
    - unsigned long
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 108
    functionName: speed_mbs
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/cipher_check.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double speed_mbs(unsigned long bytes, double ms)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_init_kernel
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:118,1
    - Dst: cipher_measure
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:125,1
    - Dst: cipher_measure
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:135,1
    - Dst: speed_mbs
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:142,1
    - Dst: speed_mbs
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:143,1
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/cipher_check.c:147,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 10
    argNames:
    - name
    - mode
    - buffer
    - buffer_size
    - key
    - key_size
    - iv
    - iv_size
    - encryption_mbs
    - decryption_mbs
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 110
    functionDepth: 5
    functionLinenumber: 110
    functionLinenumberEnd: 149
    functionName: crypt_cipher_perf_kernel
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/cipher_check.c
    functionUses: 1
    functionsReached:
    - crypt_cipher_init_kernel
    - speed_mbs
    - crypt_cipher_destroy_kernel
    - cipher_measure
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_perf_kernel(const char *name, const char *mode, char
      *buffer, size_t buffer_size,\n\t\t\t     const char *key, size_t key_size, const
      char *iv, size_t iv_size,\n\t\t\t     double *encryption_mbs, double *decryption_mbs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: utf16_is_surrogate
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool utf16_is_surrogate(char16_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: utf16_is_trailing_surrogate
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool utf16_is_trailing_surrogate(char16_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lead
    - trail
    argTypes:
    - char16_t
    - char16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: utf16_surrogate_pair_to_unichar
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char32_t
    signature: char32_t utf16_surrogate_pair_to_unichar(char16_t lead, char16_t trail)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - out_utf8
    - g
    argTypes:
    - char*
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 80
    functionName: utf8_encode_unichar
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t utf8_encode_unichar(char *out_utf8, char32_t g)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:97,1
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:98,1
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:99,1
    - Dst: utf16_is_surrogate
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:117,1
    - Dst: utf8_encode_unichar
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:118,1
    - Dst: utf16_is_trailing_surrogate
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:122,1
    - Dst: utf16_is_trailing_surrogate
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:131,1
    - Dst: utf8_encode_unichar
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:136,1
    - Dst: utf16_surrogate_pair_to_unichar
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:136,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - out
    - s
    - length
    argTypes:
    - char**
    - char16_t*
    - size_t
    assertStmts:
    - condition: (s)
      pos:
        line_end: 96
        line_start: 96
        source_file: /src/cryptsetup/lib/crypto_backend/utf8.c
    - condition: (out)
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/cryptsetup/lib/crypto_backend/utf8.c
    - condition: (*out)
      pos:
        line_end: 98
        line_start: 98
        source_file: /src/cryptsetup/lib/crypto_backend/utf8.c
    constantsTouched: []
    func_position:
      end: 141
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 141
    functionName: crypt_utf16_to_utf8
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 3
    functionsReached:
    - utf8_encode_unichar
    - utf16_surrogate_pair_to_unichar
    - assert
    - utf16_is_surrogate
    - utf16_is_trailing_surrogate
    linkageType: ''
    returnType: int
    signature: int crypt_utf16_to_utf8(char **out, const char16_t *s, size_t length
      /* bytes! */)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - c
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 160
    functionName: utf8_encoded_expected_len
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t utf8_encoded_expected_len(uint8_t c)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:168,1
    - Dst: utf8_encoded_expected_len
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:170,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 2
    argNames:
    - str
    - ret_unichar
    argTypes:
    - char*
    - char32_t*
    assertStmts:
    - condition: (str)
      pos:
        line_end: 167
        line_start: 167
        source_file: /src/cryptsetup/lib/crypto_backend/utf8.c
    constantsTouched: []
    func_position:
      end: 206
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 206
    functionName: utf8_encoded_to_unichar
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 0
    functionsReached:
    - utf8_encoded_expected_len
    - assert
    linkageType: ''
    returnType: int
    signature: int utf8_encoded_to_unichar(const char *str, char32_t *ret_unichar)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htole16
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:216,1
    - Dst: htole16
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:222,1
    - Dst: htole16
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - out
    - c
    argTypes:
    - char16_t*
    - char32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 229
    functionName: utf16_encode_unichar
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 0
    functionsReached:
    - htole16
    linkageType: ''
    returnType: size_t
    signature: size_t utf16_encode_unichar(char16_t *out, char32_t c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:247,1
    - Dst: utf8_encoded_expected_len
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:255,1
    - Dst: utf8_encoded_to_unichar
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:262,1
    - Dst: utf16_encode_unichar
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:266,1
    - Dst: htole16
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:271,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - out
    - s
    - length
    argTypes:
    - char16_t**
    - char*
    - size_t
    assertStmts:
    - condition: (s)
      pos:
        line_end: 246
        line_start: 246
        source_file: /src/cryptsetup/lib/crypto_backend/utf8.c
    constantsTouched: []
    func_position:
      end: 276
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 276
    functionName: crypt_utf8_to_utf16
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 2
    functionsReached:
    - utf8_encoded_to_unichar
    - htole16
    - assert
    - utf8_encoded_expected_len
    - utf16_encode_unichar
    linkageType: ''
    returnType: int
    signature: int crypt_utf8_to_utf16(char16_t **out, const char *s, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/crypto_backend/utf8.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - char16_t*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 286
        line_start: 286
        source_file: /src/cryptsetup/lib/crypto_backend/utf8.c
    constantsTouched: []
    func_position:
      end: 293
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 293
    functionName: crypt_char16_strlen
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/utf8.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: size_t
    signature: size_t crypt_char16_strlen(const char16_t *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - max_threads
    argTypes:
    - OSSL_LIB_CTX*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: OSSL_set_max_threads
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int OSSL_set_max_threads(OSSL_LIB_CTX *ctx __attribute__((unused)),\n\t\t\t\tuint64_t
      max_threads __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - OSSL_LIB_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: OSSL_get_max_threads
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t OSSL_get_max_threads(OSSL_LIB_CTX *ctx __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: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: CONST_CAST
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONST_CAST(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: UNUSED
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNUSED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fips
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: openssl_backend_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - OpenSSL_add_all_algorithms
    linkageType: ''
    returnType: int
    signature: int openssl_backend_init(bool fips __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: openssl_backend_exit
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void openssl_backend_exit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSLeay_version
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: openssl_backend_version
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - SSLeay_version
    linkageType: ''
    returnType: char
    signature: char *openssl_backend_version(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:103,1
    - Dst: EVP_MD_CTX_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 109
    functionName: EVP_MD_CTX_new
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - EVP_MD_CTX_init
    - malloc
    linkageType: ''
    returnType: EVP_MD_CTX
    signature: EVP_MD_CTX *EVP_MD_CTX_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_cleanup
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:113,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - md
    argTypes:
    - EVP_MD_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: EVP_MD_CTX_free
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - free
    - EVP_MD_CTX_cleanup
    linkageType: ''
    returnType: void
    signature: void EVP_MD_CTX_free(EVP_MD_CTX *md)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:119,1
    - Dst: HMAC_CTX_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 125
    functionName: HMAC_CTX_new
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - HMAC_CTX_init
    - malloc
    linkageType: ''
    returnType: HMAC_CTX
    signature: HMAC_CTX *HMAC_CTX_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HMAC_CTX_cleanup
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:129,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - md
    argTypes:
    - HMAC_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 131
    functionName: HMAC_CTX_free
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - HMAC_CTX_cleanup
    - free
    linkageType: ''
    returnType: void
    signature: void HMAC_CTX_free(HMAC_CTX *md)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OSSL_PROVIDER_unload
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:137,1
    - Dst: OSSL_PROVIDER_unload
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:139,1
    - Dst: OSSL_LIB_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 147
    functionName: openssl_backend_exit
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - OSSL_LIB_CTX_free
    - OSSL_PROVIDER_unload
    linkageType: ''
    returnType: void
    signature: void openssl_backend_exit(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: OSSL_LIB_CTX_new
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:162,1
    - Dst: OSSL_PROVIDER_try_load
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:166,1
    - Dst: OSSL_LIB_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:168,1
    - Dst: OSSL_PROVIDER_try_load
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:173,1
    - Dst: OSSL_set_max_threads
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:176,1
    - Dst: OSSL_get_max_threads
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:177,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:180,1
    - Dst: OpenSSL_version
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:181,1
    - Dst: crypt_backend_flags
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:186,1
    - Dst: openssl_backend_exit
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:189,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:193,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - fips
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 196
    functionName: openssl_backend_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - snprintf
    - crypt_backend_flags
    - OSSL_LIB_CTX_free
    - openssl_backend_exit
    - OSSL_set_max_threads
    - UNUSED
    - OpenSSL_version
    - OSSL_get_max_threads
    - OSSL_LIB_CTX_new
    - OSSL_PROVIDER_try_load
    linkageType: ''
    returnType: int
    signature: int openssl_backend_init(bool fips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OpenSSL_version
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 205
    functionName: openssl_backend_version
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - OpenSSL_version
    linkageType: ''
    returnType: char
    signature: char *openssl_backend_version(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: openssl_backend_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:213,1
    - Dst: crypt_fips_mode
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 218
    functionName: crypt_backend_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 4
    functionsReached:
    - openssl_backend_init
    - crypt_fips_mode
    linkageType: ''
    returnType: int
    signature: int crypt_backend_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: openssl_backend_exit
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 231
    functionName: crypt_backend_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 4
    functionsReached:
    - openssl_backend_exit
    linkageType: ''
    returnType: void
    signature: void crypt_backend_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 243
    functionName: crypt_backend_flags
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_backend_flags(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openssl_backend_version
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: crypt_backend_version
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 3
    functionsReached:
    - openssl_backend_version
    linkageType: ''
    returnType: char
    signature: char *crypt_backend_version(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 272
    functionName: crypt_hash_compat_name
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 4
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: char
    signature: char *crypt_hash_compat_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_fetch
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:277,1
    - Dst: crypt_hash_compat_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:277,1
    - Dst: EVP_get_digestbyname
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:279,1
    - Dst: crypt_hash_compat_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 281
    functionName: hash_id_get
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - EVP_get_digestbyname
    - crypt_hash_compat_name
    - EVP_MD_fetch
    linkageType: ''
    returnType: EVP_MD
    signature: EVP_MD *hash_id_get(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hash_id
    argTypes:
    - EVP_MD*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 290
    functionName: hash_id_free
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void hash_id_free(const EVP_MD *hash_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_fetch
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:295,1
    - Dst: EVP_get_cipherbyname
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 299
    functionName: cipher_type_get
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_fetch
    - EVP_get_cipherbyname
    linkageType: ''
    returnType: EVP_CIPHER
    signature: EVP_CIPHER *cipher_type_get(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cipher_type
    argTypes:
    - EVP_CIPHER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 308
    functionName: cipher_type_free
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void cipher_type_free(const EVP_CIPHER *cipher_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_id_get
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:316,1
    - Dst: EVP_MD_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:320,1
    - Dst: hash_id_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 323
    functionName: crypt_hash_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 19
    functionsReached:
    - hash_id_free
    - EVP_MD_size
    - hash_id_get
    linkageType: ''
    returnType: int
    signature: int crypt_hash_size(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:329,1
    - Dst: EVP_MD_CTX_new
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:333,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:335,1
    - Dst: hash_id_get
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:339,1
    - Dst: EVP_MD_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:341,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:342,1
    - Dst: EVP_DigestInit_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:346,1
    - Dst: hash_id_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:347,1
    - Dst: EVP_MD_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:348,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:349,1
    - Dst: EVP_MD_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:353,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct crypt_hash**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 356
    functionName: crypt_hash_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 20
    functionsReached:
    - EVP_DigestInit_ex
    - EVP_MD_CTX_new
    - free
    - hash_id_free
    - malloc
    - hash_id_get
    - EVP_MD_CTX_free
    - EVP_MD_size
    linkageType: ''
    returnType: int
    signature: int crypt_hash_init(struct crypt_hash **ctx, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestInit_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: crypt_hash_restart
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 2
    functionsReached:
    - EVP_DigestInit_ex
    linkageType: ''
    returnType: int
    signature: int crypt_hash_restart(struct crypt_hash *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestUpdate
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 372
    functionName: crypt_hash_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 17
    functionsReached:
    - EVP_DigestUpdate
    linkageType: ''
    returnType: int
    signature: int crypt_hash_write(struct crypt_hash *ctx, const char *buffer, size_t
      length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestFinal_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:382,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:385,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:386,1
    - Dst: crypt_hash_restart
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:391,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 395
    functionName: crypt_hash_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 17
    functionsReached:
    - crypt_backend_memzero
    - crypt_backend_memcpy
    - crypt_hash_restart
    - EVP_DigestFinal_ex
    linkageType: ''
    returnType: int
    signature: int crypt_hash_final(struct crypt_hash *ctx, char *buffer, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_id_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:399,1
    - Dst: EVP_MD_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:400,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 402
    functionName: crypt_hash_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 24
    functionsReached:
    - EVP_MD_CTX_free
    - hash_id_free
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_hash_destroy(struct crypt_hash *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: crypt_hmac_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 6
    functionsReached:
    - crypt_hash_size
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_size(const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: OSSL_PARAM_utf8_string
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:416,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:416,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:420,1
    - Dst: EVP_MAC_fetch
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:424,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:426,1
    - Dst: EVP_MAC_CTX_new
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:430,1
    - Dst: EVP_MAC_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:432,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:433,1
    - Dst: EVP_MAC_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:437,1
    - Dst: EVP_MAC_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:438,1
    - Dst: EVP_MAC_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:439,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:440,1
    - Dst: EVP_MAC_CTX_get_mac_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:444,1
    - Dst: EVP_MAC_CTX_dup
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:445,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:447,1
    - Dst: HMAC_CTX_new
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:451,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:453,1
    - Dst: hash_id_get
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:457,1
    - Dst: HMAC_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:459,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:460,1
    - Dst: HMAC_Init_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:464,1
    - Dst: EVP_MD_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:466,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 4
    argNames:
    - ctx
    - name
    - key
    - key_length
    argTypes:
    - struct crypt_hmac**
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 470
    functionName: crypt_hmac_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 3
    functionsReached:
    - EVP_MAC_init
    - HMAC_CTX_free
    - free
    - EVP_MAC_CTX_new
    - EVP_MAC_CTX_free
    - HMAC_CTX_new
    - OSSL_PARAM_utf8_string
    - malloc
    - HMAC_Init_ex
    - EVP_MD_size
    - hash_id_get
    - EVP_MAC_fetch
    - CONST_CAST
    - EVP_MAC_free
    - EVP_MAC_CTX_get_mac_size
    - EVP_MAC_CTX_dup
    linkageType: ''
    returnType: int
    signature: "int crypt_hmac_init(struct crypt_hmac **ctx, const char *name,\n\t\t
      \   const void *key, size_t key_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MAC_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:475,1
    - Dst: EVP_MAC_CTX_dup
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:476,1
    - Dst: HMAC_Init_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 483
    functionName: crypt_hmac_restart
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 2
    functionsReached:
    - EVP_MAC_CTX_free
    - EVP_MAC_CTX_dup
    - HMAC_Init_ex
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_restart(struct crypt_hmac *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MAC_update
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:488,1
    - Dst: HMAC_Update
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 493
    functionName: crypt_hmac_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 2
    functionsReached:
    - EVP_MAC_update
    - HMAC_Update
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_write(struct crypt_hmac *ctx, const char *buffer, size_t
      length)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MAC_final
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:504,1
    - Dst: HMAC_Final
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:512,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:514,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:515,1
    - Dst: crypt_hmac_restart
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:520,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 524
    functionName: crypt_hmac_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 2
    functionsReached:
    - crypt_backend_memcpy
    - HMAC_Final
    - crypt_backend_memzero
    - EVP_MAC_final
    - crypt_hmac_restart
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MAC_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:529,1
    - Dst: EVP_MAC_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:530,1
    - Dst: EVP_MAC_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:531,1
    - Dst: hash_id_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:533,1
    - Dst: HMAC_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:534,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 537
    functionName: crypt_hmac_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 3
    functionsReached:
    - HMAC_CTX_free
    - free
    - hash_id_free
    - EVP_MAC_CTX_free
    - EVP_MAC_free
    linkageType: ''
    returnType: void
    signature: void crypt_hmac_destroy(struct crypt_hmac *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - buffer
    - length
    - quality
    - fips
    argTypes:
    - char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 547
    functionName: crypt_backend_rng
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 2
    functionsReached:
    - RAND_bytes
    linkageType: ''
    returnType: int
    signature: "int crypt_backend_rng(char *buffer, size_t length,\n\tint quality
      __attribute__((unused)), int fips __attribute__((unused)))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OSSL_PARAM_octet_string
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:558,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:559,1
    - Dst: OSSL_PARAM_octet_string
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:560,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:561,1
    - Dst: OSSL_PARAM_uint32
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:562,1
    - Dst: OSSL_PARAM_utf8_string
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:563,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:564,1
    - Dst: EVP_KDF_fetch
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:568,1
    - Dst: EVP_KDF_CTX_new
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:572,1
    - Dst: EVP_KDF_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:574,1
    - Dst: EVP_get_digestbyname
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:583,1
    - Dst: crypt_hash_compat_name
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:583,1
    - Dst: PKCS5_PBKDF2_HMAC
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 8
    argNames:
    - password
    - password_length
    - salt
    - salt_length
    - iterations
    - hash
    - key
    - key_length
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 595
    functionName: openssl_pbkdf2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - EVP_KDF_free
    - OSSL_PARAM_utf8_string
    - OSSL_PARAM_octet_string
    - EVP_KDF_CTX_new
    - OSSL_PARAM_uint32
    - PKCS5_PBKDF2_HMAC
    - CONST_CAST
    - EVP_KDF_fetch
    - EVP_get_digestbyname
    - crypt_hash_compat_name
    linkageType: ''
    returnType: int
    signature: "int openssl_pbkdf2(const char *password, size_t password_length,\n\tconst
      char *salt, size_t salt_length, uint32_t iterations,\n\tconst char *hash, char
      *key, size_t key_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OSSL_PARAM_octet_string
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:607,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:608,1
    - Dst: OSSL_PARAM_octet_string
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:609,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:610,1
    - Dst: OSSL_PARAM_uint32
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:611,1
    - Dst: OSSL_PARAM_uint
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:612,1
    - Dst: OSSL_PARAM_uint32
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:613,1
    - Dst: OSSL_PARAM_uint32
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:614,1
    - Dst: OSSL_PARAM_END
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:615,1
    - Dst: OSSL_get_max_threads
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:618,1
    - Dst: EVP_KDF_fetch
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:621,1
    - Dst: EVP_KDF_CTX_new
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:625,1
    - Dst: EVP_KDF_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:627,1
    - Dst: EVP_KDF_derive
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:637,1
    - Dst: EVP_KDF_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:639,1
    - Dst: EVP_KDF_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:640,1
    - Dst: ERR_GET_REASON
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:643,1
    - Dst: ERR_get_error
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:643,1
    - Dst: argon2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:649,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 10
    argNames:
    - type
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - iterations
    - memory
    - parallel
    argTypes:
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 652
    functionName: openssl_argon2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - OSSL_PARAM_END
    - EVP_KDF_CTX_free
    - ERR_get_error
    - EVP_KDF_free
    - EVP_KDF_derive
    - argon2
    - OSSL_PARAM_octet_string
    - EVP_KDF_CTX_new
    - OSSL_PARAM_uint
    - OSSL_PARAM_uint32
    - ERR_GET_REASON
    - OSSL_get_max_threads
    - CONST_CAST
    - EVP_KDF_fetch
    linkageType: ''
    returnType: int
    signature: "int openssl_argon2(const char *type, const char *password, size_t
      password_length,\n\tconst char *salt, size_t salt_length, char *key, size_t
      key_length,\n\tuint32_t iterations, uint32_t memory, uint32_t parallel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:664,1
    - Dst: openssl_pbkdf2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:665,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:667,1
    - Dst: openssl_argon2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:668,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 11
    argNames:
    - kdf
    - hash
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - iterations
    - memory
    - parallel
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 655
    functionDepth: 2
    functionLinenumber: 655
    functionLinenumberEnd: 671
    functionName: crypt_pbkdf
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 9
    functionsReached:
    - openssl_argon2
    - strcmp
    - strncmp
    - openssl_pbkdf2
    linkageType: ''
    returnType: int
    signature: "int crypt_pbkdf(const char *kdf, const char *hash,\n\t\tconst char
      *password, size_t password_length,\n\t\tconst char *salt, size_t salt_length,\n\t\tchar
      *key, size_t key_length,\n\t\tuint32_t iterations, uint32_t memory, uint32_t
      parallel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:676,1
    - Dst: EVP_CIPHER_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:679,1
    - Dst: cipher_type_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - hd_enc
    - hd_dec
    - cipher_type
    argTypes:
    - EVP_CIPHER_CTX**
    - EVP_CIPHER_CTX**
    - EVP_CIPHER**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 684
    functionName: _cipher_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 9
    functionsReached:
    - cipher_type_free
    - EVP_CIPHER_CTX_free
    linkageType: ''
    returnType: void
    signature: void _cipher_destroy(EVP_CIPHER_CTX **hd_enc, EVP_CIPHER_CTX **hd_dec,
      const EVP_CIPHER **cipher_type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:694,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:697,1
    - Dst: cipher_type_get
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:701,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:705,1
    - Dst: cipher_type_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:706,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:710,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:711,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:712,1
    - Dst: cipher_type_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:715,1
    - Dst: EVP_EncryptInit_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:719,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:720,1
    - Dst: _cipher_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:721,1
    - Dst: EVP_CIPHER_CTX_set_padding
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:725,1
    - Dst: EVP_CIPHER_CTX_set_padding
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:726,1
    - Dst: _cipher_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:727,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 8
    argNames:
    - hd_enc
    - hd_dec
    - cipher_type
    - name
    - mode
    - key
    - key_length
    - iv_length
    argTypes:
    - EVP_CIPHER_CTX**
    - EVP_CIPHER_CTX**
    - EVP_CIPHER**
    - char*
    - char*
    - void*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 686
    functionDepth: 2
    functionLinenumber: 686
    functionLinenumberEnd: 734
    functionName: _cipher_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 14
    functionsReached:
    - EVP_DecryptInit_ex
    - snprintf
    - cipher_type_free
    - EVP_CIPHER_CTX_new
    - EVP_CIPHER_CTX_set_padding
    - EVP_CIPHER_iv_length
    - EVP_EncryptInit_ex
    - cipher_type_get
    - EVP_CIPHER_key_length
    - strcmp
    - _cipher_destroy
    linkageType: ''
    returnType: int
    signature: "int _cipher_init(EVP_CIPHER_CTX **hd_enc, EVP_CIPHER_CTX **hd_dec,
      const EVP_CIPHER **cipher_type, const char *name,\n\t\t\tconst char *mode, const
      void *key, size_t key_length, size_t *iv_length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:742,1
    - Dst: _cipher_init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:746,1
    - Dst: crypt_cipher_init_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:753,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:755,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - ctx
    - name
    - mode
    - key
    - key_length
    argTypes:
    - struct crypt_cipher**
    - char*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 736
    functionDepth: 3
    functionLinenumber: 736
    functionLinenumberEnd: 762
    functionName: crypt_cipher_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 12
    functionsReached:
    - crypt_cipher_init_kernel
    - _cipher_init
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_init(struct crypt_cipher **ctx, const char *name,\n\t\t
      \   const char *mode, const void *key, size_t key_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:767,1
    - Dst: _cipher_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:769,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:770,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 764
    functionDepth: 2
    functionLinenumber: 764
    functionLinenumberEnd: 771
    functionName: crypt_cipher_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 9
    functionsReached:
    - crypt_cipher_destroy_kernel
    - free
    - _cipher_destroy
    linkageType: ''
    returnType: void
    signature: void crypt_cipher_destroy(struct crypt_cipher *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_EncryptInit_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:781,1
    - Dst: EVP_EncryptUpdate
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:784,1
    - Dst: EVP_EncryptFinal
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:787,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - unsigned char*
    - unsigned char*
    - int
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 773
    functionDepth: 0
    functionLinenumber: 773
    functionLinenumberEnd: 791
    functionName: _cipher_encrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 4
    functionsReached:
    - EVP_EncryptUpdate
    - EVP_EncryptFinal
    - EVP_EncryptInit_ex
    linkageType: ''
    returnType: int
    signature: "int _cipher_encrypt(struct crypt_cipher *ctx, const unsigned char
      *in, unsigned char *out,\n\t\t\t   int length, const unsigned char *iv, size_t
      iv_length)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DecryptInit_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:801,1
    - Dst: EVP_DecryptUpdate
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:804,1
    - Dst: EVP_DecryptFinal
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:807,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - unsigned char*
    - unsigned char*
    - int
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 793
    functionDepth: 0
    functionLinenumber: 793
    functionLinenumberEnd: 811
    functionName: _cipher_decrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 9
    functionsReached:
    - EVP_DecryptInit_ex
    - EVP_DecryptFinal
    - EVP_DecryptUpdate
    linkageType: ''
    returnType: int
    signature: "int _cipher_decrypt(struct crypt_cipher *ctx, const unsigned char
      *in, unsigned char *out,\n\t\t\t   int length, const unsigned char *iv, size_t
      iv_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_encrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:818,1
    - Dst: _cipher_encrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 813
    functionDepth: 3
    functionLinenumber: 813
    functionLinenumberEnd: 822
    functionName: crypt_cipher_encrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 3
    functionsReached:
    - _cipher_encrypt
    - crypt_cipher_encrypt_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_encrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_decrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:829,1
    - Dst: _cipher_decrypt
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 824
    functionDepth: 3
    functionLinenumber: 824
    functionLinenumberEnd: 833
    functionName: crypt_cipher_decrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 7
    functionsReached:
    - crypt_cipher_decrypt_kernel
    - _cipher_decrypt
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_decrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 838
    functionName: crypt_cipher_kernel_only
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_cipher_kernel_only(struct crypt_cipher *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:849,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:853,1
    - Dst: EVP_aes_256_ccm
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:853,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:856,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:858,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:858,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:861,1
    - Dst: EVP_DecryptUpdate
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:864,1
    - Dst: EVP_CIPHER_CTX_free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:867,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 9
    argNames:
    - key
    - key_length
    - in
    - out
    - length
    - iv
    - iv_length
    - tag
    - tag_length
    argTypes:
    - void*
    - size_t
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 840
    functionDepth: 0
    functionLinenumber: 840
    functionLinenumberEnd: 872
    functionName: crypt_bitlk_decrypt_key
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 2
    functionsReached:
    - EVP_DecryptInit_ex
    - EVP_CIPHER_CTX_new
    - EVP_DecryptUpdate
    - EVP_CIPHER_CTX_free
    - EVP_CIPHER_CTX_ctrl
    - CONST_CAST
    - EVP_aes_256_ccm
    linkageType: ''
    returnType: int
    signature: "int crypt_bitlk_decrypt_key(const void *key, size_t key_length __attribute__((unused)),\n\t\t\t
      \   const char *in, char *out, size_t length,\n\t\t\t    const char *iv, size_t
      iv_length,\n\t\t\t    const char *tag, size_t tag_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_memcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - m1
    - m2
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 877
    functionName: crypt_backend_memeq
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 6
    functionsReached:
    - CRYPTO_memcmp
    linkageType: ''
    returnType: int
    signature: int crypt_backend_memeq(const void *m1, const void *m2, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 880
    functionName: crypt_fips_mode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_fips_mode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_default_properties_is_fips_enabled
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:885,1
    - Dst: FIPS_mode
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 889
    functionName: openssl_fips_mode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 0
    functionsReached:
    - EVP_default_properties_is_fips_enabled
    - FIPS_mode
    linkageType: ''
    returnType: bool
    signature: bool openssl_fips_mode(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: openssl_fips_mode
      Src: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c:898,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 891
    functionDepth: 1
    functionLinenumber: 891
    functionLinenumberEnd: 902
    functionName: crypt_fips_mode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    functionUses: 8
    functionsReached:
    - openssl_fips_mode
    linkageType: ''
    returnType: bool
    signature: bool crypt_fips_mode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 16
    functionName: CONST_CAST
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONST_CAST(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: _get_alg
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 9
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct hash_alg
    signature: struct hash_alg *_get_alg(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NSS_NoDB_Init
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:72,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:76,1
    - Dst: NSS_GetVersion
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:76,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:78,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 85
    functionName: crypt_backend_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 4
    functionsReached:
    - NSS_GetVersion
    - NSS_NoDB_Init
    - snprintf
    linkageType: ''
    returnType: int
    signature: int crypt_backend_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: crypt_backend_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_backend_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: crypt_backend_flags
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_backend_flags(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: crypt_backend_version
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *crypt_backend_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 108
    functionName: crypt_hash_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 20
    functionsReached:
    - _get_alg
    linkageType: ''
    returnType: int
    signature: int crypt_hash_size(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:114,1
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:118,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:120,1
    - Dst: PK11_CreateDigestContext
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:124,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:126,1
    - Dst: PK11_DigestBegin
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:130,1
    - Dst: PK11_DestroyContext
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:131,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:132,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct crypt_hash**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 138
    functionName: crypt_hash_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 20
    functionsReached:
    - PK11_DigestBegin
    - free
    - malloc
    - PK11_DestroyContext
    - _get_alg
    - PK11_CreateDigestContext
    linkageType: ''
    returnType: int
    signature: int crypt_hash_init(struct crypt_hash **ctx, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PK11_DigestBegin
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 146
    functionName: crypt_hash_restart
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 3
    functionsReached:
    - PK11_DigestBegin
    linkageType: ''
    returnType: int
    signature: int crypt_hash_restart(struct crypt_hash *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PK11_DigestOp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:150,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: crypt_hash_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 17
    functionsReached:
    - CONST_CAST
    - PK11_DigestOp
    linkageType: ''
    returnType: int
    signature: int crypt_hash_write(struct crypt_hash *ctx, const char *buffer, size_t
      length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PK11_DigestFinal
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:164,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:167,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:168,1
    - Dst: crypt_hash_restart
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hash*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 177
    functionName: crypt_hash_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 17
    functionsReached:
    - crypt_backend_memzero
    - crypt_backend_memcpy
    - crypt_hash_restart
    - PK11_DigestFinal
    linkageType: ''
    returnType: int
    signature: int crypt_hash_final(struct crypt_hash *ctx, char *buffer, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PK11_DestroyContext
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:181,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:182,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 184
    functionName: crypt_hash_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 24
    functionsReached:
    - memset
    - free
    - PK11_DestroyContext
    linkageType: ''
    returnType: void
    signature: void crypt_hash_destroy(struct crypt_hash *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: crypt_hmac_size
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 6
    functionsReached:
    - crypt_hash_size
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_size(const char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:200,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:207,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:210,1
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:212,1
    - Dst: PK11_GetInternalKeySlot
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:216,1
    - Dst: PK11_ImportSymKey
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:220,1
    - Dst: PK11_CreateContextBySymKey
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:225,1
    - Dst: PK11_DigestBegin
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:230,1
    - Dst: crypt_hmac_destroy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:236,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 4
    argNames:
    - ctx
    - name
    - key
    - key_length
    argTypes:
    - struct crypt_hmac**
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 238
    functionName: crypt_hmac_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 3
    functionsReached:
    - memset
    - PK11_DigestBegin
    - PK11_CreateContextBySymKey
    - crypt_hmac_destroy
    - malloc
    - PK11_GetInternalKeySlot
    - _get_alg
    - PK11_ImportSymKey
    - CONST_CAST
    linkageType: ''
    returnType: int
    signature: "int crypt_hmac_init(struct crypt_hmac **ctx, const char *name,\n\t\t
      \   const void *key, size_t key_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PK11_DigestBegin
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 246
    functionName: crypt_hmac_restart
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 3
    functionsReached:
    - PK11_DigestBegin
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_restart(struct crypt_hmac *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PK11_DigestOp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:250,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 254
    functionName: crypt_hmac_write
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 2
    functionsReached:
    - CONST_CAST
    - PK11_DigestOp
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_write(struct crypt_hmac *ctx, const char *buffer, size_t
      length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PK11_DigestFinal
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:264,1
    - Dst: crypt_backend_memcpy
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:267,1
    - Dst: crypt_backend_memzero
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:268,1
    - Dst: crypt_hmac_restart
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:273,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - buffer
    - length
    argTypes:
    - struct crypt_hmac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 277
    functionName: crypt_hmac_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 2
    functionsReached:
    - crypt_hmac_restart
    - crypt_backend_memzero
    - crypt_backend_memcpy
    - PK11_DigestFinal
    linkageType: ''
    returnType: int
    signature: int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PK11_FreeSymKey
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:282,1
    - Dst: PK11_FreeSlot
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:284,1
    - Dst: PK11_DestroyContext
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:286,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:287,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:288,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 289
    functionName: crypt_hmac_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 4
    functionsReached:
    - memset
    - free
    - PK11_DestroyContext
    - PK11_FreeSymKey
    - PK11_FreeSlot
    linkageType: ''
    returnType: void
    signature: void crypt_hmac_destroy(struct crypt_hmac *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PK11_GenerateRandom
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - buffer
    - length
    - quality
    - fips
    argTypes:
    - char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 301
    functionName: crypt_backend_rng
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 2
    functionsReached:
    - PK11_GenerateRandom
    linkageType: ''
    returnType: int
    signature: int crypt_backend_rng(char *buffer, size_t length, int quality __attribute__((unused)),
      int fips)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:315,1
    - Dst: _get_alg
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:316,1
    - Dst: pkcs5_pbkdf2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:320,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:322,1
    - Dst: argon2
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 11
    argNames:
    - kdf
    - hash
    - password
    - password_length
    - salt
    - salt_length
    - key
    - key_length
    - iterations
    - memory
    - parallel
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 328
    functionName: crypt_pbkdf
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 9
    functionsReached:
    - argon2
    - strncmp
    - _get_alg
    - pkcs5_pbkdf2
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int crypt_pbkdf(const char *kdf, const char *hash,\n\t\tconst char
      *password, size_t password_length,\n\t\tconst char *salt, size_t salt_length,\n\t\tchar
      *key, size_t key_length,\n\t\tuint32_t iterations, uint32_t memory, uint32_t
      parallel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:337,1
    - Dst: crypt_cipher_init_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:341,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:343,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - ctx
    - name
    - mode
    - key
    - key_length
    argTypes:
    - struct crypt_cipher**
    - char*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 349
    functionName: crypt_cipher_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 12
    functionsReached:
    - crypt_cipher_init_kernel
    - free
    - malloc
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_init(struct crypt_cipher **ctx, const char *name,\n\t\t
      \   const char *mode, const void *key, size_t key_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_destroy_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:353,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 355
    functionName: crypt_cipher_destroy
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 9
    functionsReached:
    - crypt_cipher_destroy_kernel
    - free
    linkageType: ''
    returnType: void
    signature: void crypt_cipher_destroy(struct crypt_cipher *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_encrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 357
    functionDepth: 3
    functionLinenumber: 357
    functionLinenumberEnd: 362
    functionName: crypt_cipher_encrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 3
    functionsReached:
    - crypt_cipher_encrypt_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_encrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_cipher_decrypt_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - in
    - out
    - length
    - iv
    - iv_length
    argTypes:
    - struct crypt_cipher*
    - char*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 364
    functionDepth: 3
    functionLinenumber: 364
    functionLinenumberEnd: 369
    functionName: crypt_cipher_decrypt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 7
    functionsReached:
    - crypt_cipher_decrypt_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_cipher_decrypt(struct crypt_cipher *ctx,\n\t\t\t const char
      *in, char *out, size_t length,\n\t\t\t const char *iv, size_t iv_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct crypt_cipher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 374
    functionName: crypt_cipher_kernel_only
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_cipher_kernel_only(struct crypt_cipher *ctx __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_bitlk_decrypt_key_kernel
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - key
    - key_length
    - in
    - out
    - length
    - iv
    - iv_length
    - tag
    - tag_length
    argTypes:
    - void*
    - size_t
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 383
    functionName: crypt_bitlk_decrypt_key
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 2
    functionsReached:
    - crypt_bitlk_decrypt_key_kernel
    linkageType: ''
    returnType: int
    signature: "int crypt_bitlk_decrypt_key(const void *key, size_t key_length,\n\t\t\t
      \   const char *in, char *out, size_t length,\n\t\t\t    const char *iv, size_t
      iv_length,\n\t\t\t    const char *tag, size_t tag_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSS_SecureMemcmp
      Src: /src/cryptsetup/lib/crypto_backend/crypto_nss.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - m1
    - m2
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 388
    functionName: crypt_backend_memeq
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 6
    functionsReached:
    - NSS_SecureMemcmp
    linkageType: ''
    returnType: int
    signature: int crypt_backend_memeq(const void *m1, const void *m2, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 393
    functionName: crypt_fips_mode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool crypt_fips_mode(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: copy_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:44,1
    - Dst: xor_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:45,1
    - Dst: copy_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:46,1
    - Dst: xor_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:50,1
    - Dst: BLAKE2_ROUND_NOMSG
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:58,1
    - Dst: BLAKE2_ROUND_NOMSG
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:70,1
    - Dst: copy_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:79,1
    - Dst: xor_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - prev_block
    - ref_block
    - next_block
    - with_xor
    argTypes:
    - block*
    - block*
    - block*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 81
    functionName: fill_block
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/ref.c
    functionUses: 0
    functionsReached:
    - xor_block
    - BLAKE2_ROUND_NOMSG
    - copy_block
    linkageType: ''
    returnType: void
    signature: "void fill_block(const block *prev_block, const block *ref_block,\n
      \                      block *next_block, int with_xor)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:86,1
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - address_block
    - input_block
    - zero_block
    argTypes:
    - block*
    - block*
    - block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: next_addresses
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/ref.c
    functionUses: 0
    functionsReached:
    - fill_block
    linkageType: ''
    returnType: void
    signature: "void next_addresses(block *address_block, block *input_block,\n                           const
      block *zero_block)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: init_block_value
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:110,1
    - Dst: init_block_value
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:111,1
    - Dst: next_addresses
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:128,1
    - Dst: next_addresses
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:155,1
    - Dst: index_alpha
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:174,1
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:183,1
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:186,1
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/ref.c:189,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 2
    argNames:
    - instance
    - position
    argTypes:
    - argon2_instance_t*
    - argon2_position_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 194
    functionName: fill_segment
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/ref.c
    functionUses: 0
    functionsReached:
    - fill_block
    - next_addresses
    - index_alpha
    - init_block_value
    linkageType: ''
    returnType: void
    signature: "void fill_segment(const argon2_instance_t *instance,\n                  argon2_position_t
      position)"
  - 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: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: EQ
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EQ(x, y)
  - 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: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: GT
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GT(x, y)
  - 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: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: GE
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GE(x, y)
  - 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: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: LT
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LT(x, y)
  - 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: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: LE
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LE(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LT
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:84,1
    - Dst: GE
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:85,1
    - Dst: LT
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:85,1
    - Dst: GE
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:86,1
    - Dst: LT
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:86,1
    - Dst: EQ
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:86,1
    - Dst: EQ
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: b64_byte_to_char
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached:
    - EQ
    - GE
    - LT
    linkageType: ''
    returnType: int
    signature: int b64_byte_to_char(unsigned x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GE
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:97,1
    - Dst: LE
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:97,1
    - Dst: GE
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:98,1
    - Dst: LE
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:98,1
    - Dst: GE
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:99,1
    - Dst: LE
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:99,1
    - Dst: EQ
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:99,1
    - Dst: EQ
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:100,1
    - Dst: EQ
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:101,1
    - Dst: EQ
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - c
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: b64_char_to_byte
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached:
    - EQ
    - GE
    - LE
    linkageType: ''
    returnType: unsigned
    signature: unsigned b64_char_to_byte(int c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: b64_byte_to_char
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:138,1
    - Dst: b64_byte_to_char
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:142,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 4
    argNames:
    - dst
    - dst_len
    - src
    - src_len
    argTypes:
    - char*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 146
    functionName: to_base64
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached:
    - b64_byte_to_char
    linkageType: ''
    returnType: size_t
    signature: "size_t to_base64(char *dst, size_t dst_len, const void *src,\n                        size_t
      src_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: b64_char_to_byte
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 3
    argNames:
    - dst
    - dst_len
    - src
    argTypes:
    - void*
    - size_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 200
    functionName: from_base64
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached:
    - b64_char_to_byte
    linkageType: ''
    returnType: char
    signature: char *from_base64(void *dst, size_t *dst_len, const char *src)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - str
    - v
    argTypes:
    - char*
    - unsigned long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 236
    functionName: decode_decimal
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *decode_decimal(const char *str, unsigned long *v)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: argon2_type2string
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:321,1
    - Dst: CC
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:326,1
    - Dst: CC
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:327,1
    - Dst: CC_opt
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:331,1
    - Dst: DECIMAL_U32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:331,1
    - Dst: CC
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:333,1
    - Dst: DECIMAL_U32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:334,1
    - Dst: CC
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:335,1
    - Dst: DECIMAL_U32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:336,1
    - Dst: CC
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:337,1
    - Dst: DECIMAL_U32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:338,1
    - Dst: CC
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:341,1
    - Dst: BIN
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:342,1
    - Dst: CC
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:343,1
    - Dst: BIN
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:344,1
    - Dst: validate_inputs
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 3
    argNames:
    - ctx
    - str
    - type
    argTypes:
    - argon2_context*
    - char*
    - argon2_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 371
    functionName: decode_string
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached:
    - validate_inputs
    - CC
    - argon2_type2string
    - CC_opt
    - BIN
    - DECIMAL_U32
    linkageType: ''
    returnType: int
    signature: int decode_string(argon2_context *ctx, const char *str, argon2_type
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 269
    functionName: CC
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CC(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - prefix
    - ','
    - code
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 279
    functionName: CC_opt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CC_opt(prefix, code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 290
    functionName: DECIMAL
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECIMAL(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 302
    functionName: DECIMAL_U32
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECIMAL_U32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - buf
    - ','
    - max_len
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 314
    functionName: BIN
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BIN(buf, max_len, len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: argon2_type2string
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:403,1
    - Dst: validate_inputs
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:404,1
    - Dst: SS
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:415,1
    - Dst: SS
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:416,1
    - Dst: SS
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:418,1
    - Dst: SX
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:419,1
    - Dst: SS
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:421,1
    - Dst: SX
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:422,1
    - Dst: SS
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:423,1
    - Dst: SX
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:424,1
    - Dst: SS
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:425,1
    - Dst: SX
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:426,1
    - Dst: SS
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:428,1
    - Dst: SB
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:429,1
    - Dst: SS
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:431,1
    - Dst: SB
      Src: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 4
    argNames:
    - dst
    - dst_len
    - ctx
    - type
    argTypes:
    - char*
    - size_t
    - argon2_context*
    - argon2_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 438
    functionName: encode_string
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached:
    - validate_inputs
    - SB
    - argon2_type2string
    - SS
    - SX
    linkageType: ''
    returnType: int
    signature: "int encode_string(char *dst, size_t dst_len, argon2_context *ctx,\n
      \                 argon2_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 385
    functionName: SS
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SS(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 392
    functionName: SX
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SX(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - buf
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 402
    functionName: SB
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SB(buf, len)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 453
    functionName: b64len
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t b64len(uint32_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 462
    functionName: numlen
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t numlen(uint32_t num)
  - 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: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: ARGON2_MIN
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARGON2_MIN(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: CONST_CAST
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONST_CAST(x)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - type
    - uppercase
    argTypes:
    - argon2_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 40
    functionName: argon2_type2string
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *argon2_type2string(argon2_type type, int uppercase)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: validate_inputs
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:44,1
    - Dst: initialize
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:85,1
    - Dst: fill_memory_blocks
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:92,1
    - Dst: finalize
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:98,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 2
    argNames:
    - context
    - type
    argTypes:
    - argon2_context*
    - argon2_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 101
    functionName: argon2_ctx
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - initialize
    - finalize
    - fill_memory_blocks
    - validate_inputs
    linkageType: ''
    returnType: int
    signature: int argon2_ctx(argon2_context *context, argon2_type type)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:130,1
    - Dst: argon2_ctx
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:154,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:157,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:158,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:164,1
    - Dst: encode_string
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:169,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:170,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:171,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:172,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:176,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:177,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 55
    argCount: 13
    argNames:
    - t_cost
    - m_cost
    - parallelism
    - pwd
    - pwdlen
    - salt
    - saltlen
    - hash
    - hashlen
    - encoded
    - encodedlen
    - type
    - version
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - void*
    - size_t
    - void*
    - size_t
    - void*
    - size_t
    - char*
    - size_t
    - argon2_type
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 180
    functionName: argon2_hash
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - free
    - memcpy
    - clear_internal_memory
    - encode_string
    - malloc
    - argon2_ctx
    linkageType: ''
    returnType: int
    signature: "int argon2_hash(const uint32_t t_cost, const uint32_t m_cost,\n                const
      uint32_t parallelism, const void *pwd,\n                const size_t pwdlen,
      const void *salt, const size_t saltlen,\n                void *hash, const size_t
      hashlen, char *encoded,\n                const size_t encodedlen, argon2_type
      type,\n                const uint32_t version)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_hash
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 10
    argNames:
    - t_cost
    - m_cost
    - parallelism
    - pwd
    - pwdlen
    - salt
    - saltlen
    - hashlen
    - encoded
    - encodedlen
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - void*
    - size_t
    - void*
    - size_t
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 182
    functionDepth: 3
    functionLinenumber: 182
    functionLinenumberEnd: 191
    functionName: argon2i_hash_encoded
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_hash
    linkageType: ''
    returnType: int
    signature: "int argon2i_hash_encoded(const uint32_t t_cost, const uint32_t m_cost,\n
      \                        const uint32_t parallelism, const void *pwd,\n                         const
      size_t pwdlen, const void *salt,\n                         const size_t saltlen,
      const size_t hashlen,\n                         char *encoded, const size_t
      encodedlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_hash
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - t_cost
    - m_cost
    - parallelism
    - pwd
    - pwdlen
    - salt
    - saltlen
    - hash
    - hashlen
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - void*
    - size_t
    - void*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 200
    functionName: argon2i_hash_raw
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_hash
    linkageType: ''
    returnType: int
    signature: "int argon2i_hash_raw(const uint32_t t_cost, const uint32_t m_cost,\n
      \                    const uint32_t parallelism, const void *pwd,\n                     const
      size_t pwdlen, const void *salt,\n                     const size_t saltlen,
      void *hash, const size_t hashlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_hash
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 10
    argNames:
    - t_cost
    - m_cost
    - parallelism
    - pwd
    - pwdlen
    - salt
    - saltlen
    - hashlen
    - encoded
    - encodedlen
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - void*
    - size_t
    - void*
    - size_t
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: argon2d_hash_encoded
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_hash
    linkageType: ''
    returnType: int
    signature: "int argon2d_hash_encoded(const uint32_t t_cost, const uint32_t m_cost,\n
      \                        const uint32_t parallelism, const void *pwd,\n                         const
      size_t pwdlen, const void *salt,\n                         const size_t saltlen,
      const size_t hashlen,\n                         char *encoded, const size_t
      encodedlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_hash
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - t_cost
    - m_cost
    - parallelism
    - pwd
    - pwdlen
    - salt
    - saltlen
    - hash
    - hashlen
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - void*
    - size_t
    - void*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 213
    functionDepth: 3
    functionLinenumber: 213
    functionLinenumberEnd: 220
    functionName: argon2d_hash_raw
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_hash
    linkageType: ''
    returnType: int
    signature: "int argon2d_hash_raw(const uint32_t t_cost, const uint32_t m_cost,\n
      \                    const uint32_t parallelism, const void *pwd,\n                     const
      size_t pwdlen, const void *salt,\n                     const size_t saltlen,
      void *hash, const size_t hashlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_hash
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 10
    argNames:
    - t_cost
    - m_cost
    - parallelism
    - pwd
    - pwdlen
    - salt
    - saltlen
    - hashlen
    - encoded
    - encodedlen
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - void*
    - size_t
    - void*
    - size_t
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 231
    functionName: argon2id_hash_encoded
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_hash
    linkageType: ''
    returnType: int
    signature: "int argon2id_hash_encoded(const uint32_t t_cost, const uint32_t m_cost,\n
      \                         const uint32_t parallelism, const void *pwd,\n                          const
      size_t pwdlen, const void *salt,\n                          const size_t saltlen,
      const size_t hashlen,\n                          char *encoded, const size_t
      encodedlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_hash
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - t_cost
    - m_cost
    - parallelism
    - pwd
    - pwdlen
    - salt
    - saltlen
    - hash
    - hashlen
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - void*
    - size_t
    - void*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 240
    functionName: argon2id_hash_raw
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_hash
    linkageType: ''
    returnType: int
    signature: "int argon2id_hash_raw(const uint32_t t_cost, const uint32_t m_cost,\n
      \                     const uint32_t parallelism, const void *pwd,\n                      const
      size_t pwdlen, const void *salt,\n                      const size_t saltlen,
      void *hash, const size_t hashlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - b1
    - b2
    - len
    argTypes:
    - uint8_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 250
    functionName: argon2_compare
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int argon2_compare(const uint8_t *b1, const uint8_t *b2, size_t len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:271,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:283,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:284,1
    - Dst: decode_string
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:293,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:300,1
    - Dst: argon2_verify_ctx
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:306,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:312,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:313,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:314,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 4
    argNames:
    - encoded
    - pwd
    - pwdlen
    - type
    argTypes:
    - char*
    - void*
    - size_t
    - argon2_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 317
    functionName: argon2_verify
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - free
    - decode_string
    - malloc
    - argon2_verify_ctx
    - strlen
    linkageType: ''
    returnType: int
    signature: "int argon2_verify(const char *encoded, const void *pwd, const size_t
      pwdlen,\n                  argon2_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_verify
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - encoded
    - pwd
    - pwdlen
    argTypes:
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: argon2i_verify
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_verify
    linkageType: ''
    returnType: int
    signature: int argon2i_verify(const char *encoded, const void *pwd, const size_t
      pwdlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_verify
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - encoded
    - pwd
    - pwdlen
    argTypes:
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 324
    functionDepth: 3
    functionLinenumber: 324
    functionLinenumberEnd: 327
    functionName: argon2d_verify
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_verify
    linkageType: ''
    returnType: int
    signature: int argon2d_verify(const char *encoded, const void *pwd, const size_t
      pwdlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_verify
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - encoded
    - pwd
    - pwdlen
    argTypes:
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 329
    functionDepth: 3
    functionLinenumber: 329
    functionLinenumberEnd: 332
    functionName: argon2id_verify
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_verify
    linkageType: ''
    returnType: int
    signature: int argon2id_verify(const char *encoded, const void *pwd, const size_t
      pwdlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_ctx
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - argon2_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 336
    functionName: argon2d_ctx
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_ctx
    linkageType: ''
    returnType: int
    signature: int argon2d_ctx(argon2_context *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_ctx
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - argon2_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 338
    functionDepth: 2
    functionLinenumber: 338
    functionLinenumberEnd: 340
    functionName: argon2i_ctx
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_ctx
    linkageType: ''
    returnType: int
    signature: int argon2i_ctx(argon2_context *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: argon2_ctx
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - argon2_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 344
    functionName: argon2id_ctx
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 0
    functionsReached:
    - argon2_ctx
    linkageType: ''
    returnType: int
    signature: int argon2id_ctx(argon2_context *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: argon2_ctx
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:348,1
    - Dst: argon2_verify_ctx
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:361,1
    - Dst: argon2_verify_ctx
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:365,1
    - Dst: argon2_verify_ctx
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:369,1
    - Dst: switch
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:373,1
    - Dst: argon2_type2string
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:453,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:455,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:455,1
    - Dst: argon2_type2string
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:455,1
    - Dst: numlen
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:456,1
    - Dst: numlen
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:456,1
    - Dst: numlen
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:456,1
    - Dst: b64len
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:457,1
    - Dst: b64len
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:457,1
    - Dst: numlen
      Src: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c:457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - context
    - hash
    - type
    argTypes:
    - argon2_context*
    - char*
    - argon2_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 458
    functionName: argon2_verify_ctx
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
    functionUses: 2
    functionsReached:
    - numlen
    - switch
    - b64len
    - argon2_type2string
    - argon2_verify_ctx
    - strlen
    - argon2_ctx
    linkageType: ''
    returnType: int
    signature: "int argon2_verify_ctx(argon2_context *context, const char *hash,\n
      \                     argon2_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _mm512_xor_si512
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:45,1
    - Dst: _mm512_loadu_si512
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:46,1
    - Dst: _mm512_xor_si512
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:47,1
    - Dst: _mm512_loadu_si512
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:48,1
    - Dst: _mm512_xor_si512
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:52,1
    - Dst: _mm512_loadu_si512
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:53,1
    - Dst: BLAKE2_ROUND_1
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:58,1
    - Dst: BLAKE2_ROUND_2
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:64,1
    - Dst: _mm512_xor_si512
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:70,1
    - Dst: _mm512_storeu_si512
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:71,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - state
    - ref_block
    - next_block
    - with_xor
    argTypes:
    - __m512i*
    - block*
    - block*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 73
    functionName: fill_block
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/opt.c
    functionUses: 2
    functionsReached:
    - BLAKE2_ROUND_1
    - _mm512_xor_si512
    - BLAKE2_ROUND_2
    - _mm512_loadu_si512
    - _mm512_storeu_si512
    linkageType: ''
    returnType: void
    signature: "void fill_block(__m512i *state, const block *ref_block,\n                       block
      *next_block, int with_xor)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _mm256_xor_si256
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:82,1
    - Dst: _mm256_loadu_si256
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:83,1
    - Dst: _mm256_xor_si256
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:84,1
    - Dst: _mm256_loadu_si256
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:85,1
    - Dst: _mm256_xor_si256
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:89,1
    - Dst: _mm256_loadu_si256
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:90,1
    - Dst: BLAKE2_ROUND_1
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:95,1
    - Dst: BLAKE2_ROUND_2
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:100,1
    - Dst: _mm256_xor_si256
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:105,1
    - Dst: _mm256_storeu_si256
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:106,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - state
    - ref_block
    - next_block
    - with_xor
    argTypes:
    - __m256i*
    - block*
    - block*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 108
    functionName: fill_block
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/opt.c
    functionUses: 2
    functionsReached:
    - _mm256_loadu_si256
    - BLAKE2_ROUND_1
    - _mm256_xor_si256
    - BLAKE2_ROUND_2
    - _mm256_storeu_si256
    linkageType: ''
    returnType: void
    signature: "void fill_block(__m256i *state, const block *ref_block,\n                       block
      *next_block, int with_xor)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _mm_xor_si128
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:117,1
    - Dst: _mm_loadu_si128
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:118,1
    - Dst: _mm_xor_si128
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:119,1
    - Dst: _mm_loadu_si128
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:120,1
    - Dst: _mm_xor_si128
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:124,1
    - Dst: _mm_loadu_si128
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:125,1
    - Dst: BLAKE2_ROUND
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:130,1
    - Dst: BLAKE2_ROUND
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:136,1
    - Dst: _mm_xor_si128
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:142,1
    - Dst: _mm_storeu_si128
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:143,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - state
    - ref_block
    - next_block
    - with_xor
    argTypes:
    - __m128i*
    - block*
    - block*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 145
    functionName: fill_block
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/opt.c
    functionUses: 2
    functionsReached:
    - BLAKE2_ROUND
    - _mm_xor_si128
    - _mm_loadu_si128
    - _mm_storeu_si128
    linkageType: ''
    returnType: void
    signature: "void fill_block(__m128i *state, const block *ref_block,\n                       block
      *next_block, int with_xor)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:161,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:162,1
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:168,1
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - address_block
    - input_block
    argTypes:
    - block*
    - block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 172
    functionName: next_addresses
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/opt.c
    functionUses: 1
    functionsReached:
    - fill_block
    - memset
    linkageType: ''
    returnType: void
    signature: void next_addresses(block *address_block, block *input_block)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: init_block_value
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:200,1
    - Dst: next_addresses
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:217,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:233,1
    - Dst: next_addresses
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:246,1
    - Dst: index_alpha
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:265,1
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:274,1
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:277,1
    - Dst: fill_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/opt.c:279,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 2
    argNames:
    - instance
    - position
    argTypes:
    - argon2_instance_t*
    - argon2_position_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 283
    functionName: fill_segment
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/opt.c
    functionUses: 0
    functionsReached:
    - fill_block
    - memcpy
    - index_alpha
    - next_addresses
    - init_block_value
    linkageType: ''
    returnType: void
    signature: "void fill_segment(const argon2_instance_t *instance,\n                  argon2_position_t
      position)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: CONST_CAST
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONST_CAST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - version
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: VC_GE_2005
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VC_GE_2005(version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - in
    argTypes:
    - block*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 57
    functionName: init_block_value
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void init_block_value(block *b, uint8_t in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - block*
    - block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: copy_block
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void copy_block(block *dst, const block *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - block*
    - block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 68
    functionName: xor_block
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void xor_block(block *dst, const block *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dst
    - input
    argTypes:
    - block*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: load_block
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - load64
    linkageType: ''
    returnType: void
    signature: void load_block(block *dst, const void *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - output
    - src
    argTypes:
    - void*
    - block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: store_block
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - store64
    linkageType: ''
    returnType: void
    signature: void store_block(void *output, const block *src)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:102,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - context
    - memory
    - num
    - size
    argTypes:
    - argon2_context*
    - uint8_t**
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 110
    functionName: allocate_memory
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: int
    signature: "int allocate_memory(const argon2_context *context, uint8_t **memory,\n
      \                   size_t num, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:115,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - context
    - memory
    - num
    - size
    argTypes:
    - argon2_context*
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: free_memory
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - free
    - clear_internal_memory
    linkageType: ''
    returnType: void
    signature: "void free_memory(const argon2_context *context, uint8_t *memory,\n
      \                size_t num, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SecureZeroMemory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - v
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: secure_wipe_memory
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - SecureZeroMemory
    linkageType: ''
    returnType: void
    signature: void secure_wipe_memory(void *v, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset_s
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - v
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: secure_wipe_memory
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - memset_s
    linkageType: ''
    returnType: void
    signature: void secure_wipe_memory(void *v, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: explicit_bzero
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - v
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 134
    functionName: secure_wipe_memory
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void secure_wipe_memory(void *v, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset_sec
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - v
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: NOT_OPTIMIZED::secure_wipe_memory
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - memset_sec
    linkageType: ''
    returnType: void
    signature: void NOT_OPTIMIZED secure_wipe_memory(void *v, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: secure_wipe_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - v
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 148
    functionName: clear_internal_memory
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 2
    functionsReached:
    - secure_wipe_memory
    linkageType: ''
    returnType: void
    signature: void clear_internal_memory(void *v, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: copy_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:155,1
    - Dst: xor_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:161,1
    - Dst: store_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:167,1
    - Dst: blake2b_long
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:168,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:171,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:172,1
    - Dst: print_tag
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:176,1
    - Dst: free_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - context
    - instance
    argTypes:
    - argon2_context*
    - argon2_instance_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 182
    functionName: finalize
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 1
    functionsReached:
    - blake2b_long
    - print_tag
    - clear_internal_memory
    - xor_block
    - free_memory
    - store_block
    - copy_block
    linkageType: ''
    returnType: void
    signature: void finalize(const argon2_context *context, argon2_instance_t *instance)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 4
    argNames:
    - instance
    - position
    - pseudo_rand
    - same_lane
    argTypes:
    - argon2_instance_t*
    - argon2_position_t*
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 252
    functionName: index_alpha
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t index_alpha(const argon2_instance_t *instance,\n                     const
      argon2_position_t *position, uint32_t pseudo_rand,\n                     int
      same_lane)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fill_segment
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:262,1
    - Dst: internal_kat
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:266,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - instance
    argTypes:
    - argon2_instance_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 270
    functionName: fill_memory_blocks_st
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - fill_segment
    - internal_kat
    linkageType: ''
    returnType: int
    signature: int fill_memory_blocks_st(argon2_instance_t *instance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fill_segment
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 283
    functionName: fill_segment_thr
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - fill_segment
    linkageType: ''
    returnType: void
    signature: void *fill_segment_thr(void *thread_data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:293,1
    - Dst: calloc
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:299,1
    - Dst: argon2_thread_join
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:315,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:328,1
    - Dst: argon2_thread_create
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:330,1
    - Dst: argon2_thread_join
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:334,1
    - Dst: argon2_thread_join
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:346,1
    - Dst: internal_kat
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:354,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:359,1
    - Dst: free
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:360,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 1
    argNames:
    - instance
    argTypes:
    - argon2_instance_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 363
    functionName: fill_memory_blocks_mt
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - free
    - memcpy
    - internal_kat
    - calloc
    - argon2_thread_create
    - argon2_thread_join
    linkageType: ''
    returnType: int
    signature: int fill_memory_blocks_mt(argon2_instance_t *instance)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fill_memory_blocks_st
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:372,1
    - Dst: fill_memory_blocks_st
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:375,1
    - Dst: fill_memory_blocks_mt
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - instance
    argTypes:
    - argon2_instance_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 377
    functionName: fill_memory_blocks
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 1
    functionsReached:
    - fill_memory_blocks_mt
    - fill_memory_blocks_st
    linkageType: ''
    returnType: int
    signature: int fill_memory_blocks(argon2_instance_t *instance)
  - BBCount: 32
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 93
    argCount: 1
    argNames:
    - context
    argTypes:
    - argon2_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 508
    functionName: validate_inputs
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int validate_inputs(const argon2_context *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:517,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:518,1
    - Dst: blake2b_long
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:519,1
    - Dst: load_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:521,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:524,1
    - Dst: blake2b_long
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:525,1
    - Dst: load_block
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:527,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - blockhash
    - instance
    argTypes:
    - uint8_t*
    - argon2_instance_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 531
    functionName: fill_first_blocks
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - store32
    - blake2b_long
    - load_block
    - clear_internal_memory
    linkageType: ''
    returnType: void
    signature: void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t
      *instance)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: blake2b_init
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:542,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:544,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:545,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:547,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:548,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:550,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:551,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:553,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:554,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:556,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:557,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:559,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:560,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:562,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:563,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:566,1
    - Dst: secure_wipe_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:570,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:575,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:576,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:579,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:583,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:584,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:587,1
    - Dst: secure_wipe_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:591,1
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:596,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:597,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:600,1
    - Dst: blake2b_final
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:604,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 3
    argNames:
    - blockhash
    - context
    - type
    argTypes:
    - uint8_t*
    - argon2_context*
    - argon2_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 605
    functionName: initial_hash
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 0
    functionsReached:
    - secure_wipe_memory
    - blake2b_final
    - blake2b_update
    - blake2b_init
    - store32
    linkageType: ''
    returnType: void
    signature: "void initial_hash(uint8_t *blockhash, argon2_context *context,\n                  argon2_type
      type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: allocate_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:616,1
    - Dst: initial_hash
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:626,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:628,1
    - Dst: initial_kat
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:633,1
    - Dst: fill_first_blocks
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:638,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/core.c:640,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - instance
    - context
    argTypes:
    - argon2_instance_t*
    - argon2_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 607
    functionDepth: 3
    functionLinenumber: 607
    functionLinenumberEnd: 643
    functionName: initialize
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/core.c
    functionUses: 1
    functionsReached:
    - initial_kat
    - clear_internal_memory
    - allocate_memory
    - fill_first_blocks
    - initial_hash
    linkageType: ''
    returnType: int
    signature: int initialize(argon2_instance_t *instance, argon2_context *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _beginthreadex
      Src: /src/cryptsetup/lib/crypto_backend/argon2/thread.c:31,1
    - Dst: pthread_create
      Src: /src/cryptsetup/lib/crypto_backend/argon2/thread.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - handle
    - func
    - args
    argTypes:
    - argon2_thread_handle_t*
    - argon2_thread_func_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 36
    functionName: argon2_thread_create
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/thread.c
    functionUses: 1
    functionsReached:
    - pthread_create
    - _beginthreadex
    linkageType: ''
    returnType: int
    signature: "int argon2_thread_create(argon2_thread_handle_t *handle,\n                         argon2_thread_func_t
      func, void *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WaitForSingleObject
      Src: /src/cryptsetup/lib/crypto_backend/argon2/thread.c:40,1
    - Dst: CloseHandle
      Src: /src/cryptsetup/lib/crypto_backend/argon2/thread.c:41,1
    - Dst: pthread_join
      Src: /src/cryptsetup/lib/crypto_backend/argon2/thread.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - handle
    argTypes:
    - argon2_thread_handle_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: argon2_thread_join
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/thread.c
    functionUses: 1
    functionsReached:
    - CloseHandle
    - pthread_join
    - WaitForSingleObject
    linkageType: ''
    returnType: int
    signature: int argon2_thread_join(argon2_thread_handle_t handle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - src
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: load32
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE load32(const void *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - src
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 80
    functionName: load64
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE load64(const void *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - dst
    - w
    argTypes:
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 95
    functionName: store32
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
    functionUses: 2
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE store32(void *dst, uint32_t w)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 2
    argNames:
    - dst
    - w
    argTypes:
    - void*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 118
    functionName: store64
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE store64(void *dst, uint64_t w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - src
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 129
    functionName: load48
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE load48(const void *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - dst
    - w
    argTypes:
    - void*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 144
    functionName: store48
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE store48(void *dst, uint64_t w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - w
    - c
    argTypes:
    - uint32_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 148
    functionName: rotr32
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE rotr32(const uint32_t w, const unsigned c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - w
    - c
    argTypes:
    - uint64_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 152
    functionName: rotr64
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE rotr64(const uint64_t w, const unsigned c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - S
    argTypes:
    - blake2b_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: blake2b_set_lastnode
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE blake2b_set_lastnode(blake2b_state *S)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: blake2b_set_lastnode
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - S
    argTypes:
    - blake2b_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: blake2b_set_lastblock
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 0
    functionsReached:
    - blake2b_set_lastnode
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE blake2b_set_lastblock(blake2b_state *S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - S
    - inc
    argTypes:
    - blake2b_state*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: blake2b_increment_counter
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: "BLAKE2_INLINE blake2b_increment_counter(blake2b_state *S,\n                                                    uint64_t
      inc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:66,1
    - Dst: blake2b_set_lastblock
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - S
    argTypes:
    - blake2b_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: blake2b_invalidate_state
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 0
    functionsReached:
    - blake2b_set_lastblock
    - clear_internal_memory
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE blake2b_invalidate_state(blake2b_state *S)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:71,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - S
    argTypes:
    - blake2b_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: blake2b_init0
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE blake2b_init0(blake2b_state *S)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: blake2b_init0
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:83,1
    - Dst: load64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - S
    - P
    argTypes:
    - blake2b_state*
    - blake2b_param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 90
    functionName: blake2b_init_param
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 0
    functionsReached:
    - load64
    - blake2b_init0
    linkageType: ''
    returnType: int
    signature: int blake2b_init_param(blake2b_state *S, const blake2b_param *P)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: blake2b_invalidate_state
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:101,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:114,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:115,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:116,1
    - Dst: blake2b_init_param
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - S
    - outlen
    argTypes:
    - blake2b_state*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 93
    functionDepth: 3
    functionLinenumber: 93
    functionLinenumberEnd: 119
    functionName: blake2b_init
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 1
    functionsReached:
    - memset
    - blake2b_init_param
    - blake2b_invalidate_state
    linkageType: ''
    returnType: int
    signature: int blake2b_init(blake2b_state *S, size_t outlen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: blake2b_invalidate_state
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:130,1
    - Dst: blake2b_invalidate_state
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:135,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:148,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:149,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:150,1
    - Dst: blake2b_init_param
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:152,1
    - Dst: blake2b_invalidate_state
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:153,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:159,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:160,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:161,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:163,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 4
    argNames:
    - S
    - outlen
    - key
    - keylen
    argTypes:
    - blake2b_state*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 166
    functionName: blake2b_init_key
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 0
    functionsReached:
    - memset
    - blake2b_init_param
    - memcpy
    - clear_internal_memory
    - blake2b_update
    - blake2b_invalidate_state
    linkageType: ''
    returnType: int
    signature: "int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key,\n
      \                    size_t keylen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:174,1
    - Dst: ROUND
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - S
    - block
    argTypes:
    - blake2b_state*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 224
    functionName: blake2b_compress
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 0
    functionsReached:
    - load64
    - ROUND
    linkageType: ''
    returnType: void
    signature: void blake2b_compress(blake2b_state *S, const uint8_t *block)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - r
    - ','
    - i
    - ','
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: G
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G(r, i, a, b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 213
    functionName: ROUND
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND(r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:247,1
    - Dst: blake2b_increment_counter
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:248,1
    - Dst: blake2b_compress
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:249,1
    - Dst: blake2b_increment_counter
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:255,1
    - Dst: blake2b_compress
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:256,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:261,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - S
    - in
    - inlen
    argTypes:
    - blake2b_state*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 264
    functionName: blake2b_update
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 2
    functionsReached:
    - blake2b_compress
    - blake2b_increment_counter
    - memcpy
    linkageType: ''
    returnType: int
    signature: int blake2b_update(blake2b_state *S, const void *in, size_t inlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: blake2b_increment_counter
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:280,1
    - Dst: blake2b_set_lastblock
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:281,1
    - Dst: memset
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:282,1
    - Dst: blake2b_compress
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:283,1
    - Dst: store64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:286,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:289,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:290,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:291,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:292,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - S
    - out
    - outlen
    argTypes:
    - blake2b_state*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 294
    functionName: blake2b_final
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 1
    functionsReached:
    - memset
    - blake2b_set_lastblock
    - memcpy
    - clear_internal_memory
    - blake2b_compress
    - blake2b_increment_counter
    - store64
    linkageType: ''
    returnType: int
    signature: int blake2b_final(blake2b_state *S, void *out, size_t outlen)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: blake2b_init_key
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:315,1
    - Dst: blake2b_init
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:319,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:324,1
    - Dst: blake2b_final
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:327,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:330,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 33
    argCount: 6
    argNames:
    - out
    - outlen
    - in
    - inlen
    - key
    - keylen
    argTypes:
    - void*
    - size_t
    - void*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 296
    functionDepth: 4
    functionLinenumber: 296
    functionLinenumberEnd: 332
    functionName: blake2b
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 0
    functionsReached:
    - blake2b_init_key
    - clear_internal_memory
    - blake2b_final
    - blake2b_update
    - blake2b_init
    linkageType: ''
    returnType: int
    signature: "int blake2b(void *out, size_t outlen, const void *in, size_t inlen,\n
      \           const void *key, size_t keylen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: store32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:346,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:357,1
    - Dst: blake2b_init
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:357,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:358,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:358,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:359,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:359,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:360,1
    - Dst: blake2b_final
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:360,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:365,1
    - Dst: blake2b_init
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:365,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:366,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:366,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:367,1
    - Dst: blake2b_update
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:367,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:368,1
    - Dst: blake2b_final
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:368,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:369,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:374,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:375,1
    - Dst: blake2b
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:375,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:377,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:382,1
    - Dst: TRY
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:383,1
    - Dst: blake2b
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:383,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:385,1
    - Dst: clear_internal_memory
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c:388,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 4
    argNames:
    - pout
    - outlen
    - in
    - inlen
    argTypes:
    - void*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 335
    functionDepth: 5
    functionLinenumber: 335
    functionLinenumberEnd: 391
    functionName: blake2b_long
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 2
    functionsReached:
    - TRY
    - memcpy
    - clear_internal_memory
    - blake2b_final
    - blake2b
    - blake2b_update
    - blake2b_init
    - store32
    linkageType: ''
    returnType: int
    signature: int blake2b_long(void *pout, size_t outlen, const void *in, size_t
      inlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - statement
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 355
    functionName: TRY
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRY(statement)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64_C
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-ref.h:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 29
    functionName: fBlaMka
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-ref.h
    functionUses: 0
    functionsReached:
    - UINT64_C
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE fBlaMka(uint64_t x, uint64_t y)
  - 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: 42
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 42
    functionName: G
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-ref.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G(a, b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 33
    argNames:
    - (
    - v0
    - ','
    - v1
    - ','
    - v2
    - ','
    - v3
    - ','
    - v4
    - ','
    - v5
    - ','
    - v6
    - ','
    - v7
    - ','
    - v8
    - ','
    - v9
    - ','
    - v10
    - ','
    - v11
    - ','
    - v12
    - ','
    - v13
    - ','
    - v14
    - ','
    - v15
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 55
    functionName: BLAKE2_ROUND_NOMSG
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-ref.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "BLAKE2_ROUND_NOMSG(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
      \  \\\n                           v12, v13, v14, v15)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 52
    functionName: _mm_roti_epi64
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _mm_roti_epi64(x, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - r
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: _mm_roti_epi64
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _mm_roti_epi64(r, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_mul_epu32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h:60,1
    - Dst: _mm_add_epi64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h:61,1
    - Dst: _mm_add_epi64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h:61,1
    - Dst: _mm_add_epi64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: fBlaMka
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached:
    - _mm_add_epi64
    - _mm_mul_epu32
    linkageType: ''
    returnType: BLAKE2_INLINE
    signature: BLAKE2_INLINE fBlaMka(__m128i x, __m128i y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 84
    functionName: G1
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G1(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 105
    functionName: G2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G2(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 123
    functionName: DIAGONALIZE
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 140
    functionName: UNDIAGONALIZE
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 153
    functionName: DIAGONALIZE
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 167
    functionName: UNDIAGONALIZE
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - A1
    - ','
    - B0
    - ','
    - B1
    - ','
    - C0
    - ','
    - C1
    - ','
    - D0
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 181
    functionName: BLAKE2_ROUND
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BLAKE2_ROUND(A0, A1, B0, B1, C0, C1, D0, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    functionName: rotr32
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rotr32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    functionName: rotr24
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rotr24(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    functionName: rotr16
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rotr16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    functionName: rotr63
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rotr63(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - A1
    - ','
    - B0
    - ','
    - B1
    - ','
    - C0
    - ','
    - C1
    - ','
    - D0
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 218
    functionName: G1_AVX2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - A1
    - ','
    - B0
    - ','
    - B1
    - ','
    - C0
    - ','
    - C1
    - ','
    - D0
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 245
    functionName: G2_AVX2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 256
    functionName: DIAGONALIZE_1
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - A1
    - ','
    - B0
    - ','
    - B1
    - ','
    - C0
    - ','
    - C1
    - ','
    - D0
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 273
    functionName: DIAGONALIZE_2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 284
    functionName: UNDIAGONALIZE_1
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNDIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - A1
    - ','
    - B0
    - ','
    - B1
    - ','
    - C0
    - ','
    - C1
    - ','
    - D0
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 301
    functionName: UNDIAGONALIZE_2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNDIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - A1
    - ','
    - B0
    - ','
    - B1
    - ','
    - C0
    - ','
    - C1
    - ','
    - D0
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 314
    functionName: BLAKE2_ROUND_1
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BLAKE2_ROUND_1(A0, A1, B0, B1, C0, C1, D0, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - A1
    - ','
    - B0
    - ','
    - B1
    - ','
    - C0
    - ','
    - C1
    - ','
    - D0
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 327
    functionName: BLAKE2_ROUND_2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BLAKE2_ROUND_2(A0, A1, B0, B1, C0, C1, D0, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 335
    functionName: ror64
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ror64(x, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm512_mul_epu32
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h:338,1
    - Dst: _mm512_add_epi64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h:339,1
    - Dst: _mm512_add_epi64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h:339,1
    - Dst: _mm512_add_epi64
      Src: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - __m512i
    - __m512i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 340
    functionName: muladd
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached:
    - _mm512_mul_epu32
    - _mm512_add_epi64
    linkageType: ''
    returnType: __m512i
    signature: __m512i muladd(__m512i x, __m512i y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 362
    functionName: G1
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G1(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 383
    functionName: G2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G2(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 395
    functionName: DIAGONALIZE
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 407
    functionName: UNDIAGONALIZE
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - B0
    - ','
    - C0
    - ','
    - D0
    - ','
    - A1
    - ','
    - B1
    - ','
    - C1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 420
    functionName: BLAKE2_ROUND
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A0
    - ','
    - A1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 429
    functionName: SWAP_HALVES
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SWAP_HALVES(A0, A1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A0
    - ','
    - A1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 436
    functionName: SWAP_QUARTERS
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SWAP_QUARTERS(A0, A1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A0
    - ','
    - A1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 443
    functionName: UNSWAP_QUARTERS
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSWAP_QUARTERS(A0, A1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - C0
    - ','
    - B0
    - ','
    - D0
    - ','
    - A1
    - ','
    - C1
    - ','
    - B1
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 456
    functionName: BLAKE2_ROUND_1
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BLAKE2_ROUND_1(A0, C0, B0, D0, A1, C1, B1, D1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - A0
    - ','
    - A1
    - ','
    - B0
    - ','
    - B1
    - ','
    - C0
    - ','
    - C1
    - ','
    - D0
    - ','
    - D1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 469
    functionName: BLAKE2_ROUND_2
    functionSourceFile: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BLAKE2_ROUND_2(A0, A1, B0, B1, C0, C1, D0, D1)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_type
      Src: /src/cryptsetup/lib/integrity/integrity.c:20,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:22,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:23,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:25,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 26
    functionName: INTEGRITY_metadata_device
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 0
    functionsReached:
    - strcmp
    - crypt_metadata_device
    - crypt_get_type
    - crypt_data_device
    linkageType: ''
    returnType: struct device
    signature: struct device *INTEGRITY_metadata_device(struct crypt_device *cd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/integrity/integrity.c:34,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/integrity/integrity.c:34,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/integrity/integrity.c:36,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/integrity/integrity.c:40,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/integrity/integrity.c:40,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/integrity/integrity.c:41,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/integrity/integrity.c:42,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/integrity/integrity.c:42,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:46,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/integrity/integrity.c:47,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/integrity/integrity.c:47,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/integrity/integrity.c:50,1
    - Dst: _
      Src: /src/cryptsetup/lib/integrity/integrity.c:50,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/integrity/integrity.c:51,1
    - Dst: le16toh
      Src: /src/cryptsetup/lib/integrity/integrity.c:54,1
    - Dst: le32toh
      Src: /src/cryptsetup/lib/integrity/integrity.c:55,1
    - Dst: le64toh
      Src: /src/cryptsetup/lib/integrity/integrity.c:56,1
    - Dst: le64toh
      Src: /src/cryptsetup/lib/integrity/integrity.c:57,1
    - Dst: le32toh
      Src: /src/cryptsetup/lib/integrity/integrity.c:58,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - cd
    - device
    - offset
    - sb
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint64_t
    - struct superblock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 28
    functionDepth: 4
    functionLinenumber: 28
    functionLinenumberEnd: 63
    functionName: INTEGRITY_read_superblock
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 0
    functionsReached:
    - le16toh
    - device_open
    - memcmp
    - _
    - le32toh
    - log_dbg
    - device_path
    - read_lseek_blockwise
    - log_err
    - le64toh
    - device_alignment
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int INTEGRITY_read_superblock(struct crypt_device *cd,\n\t\t\t\t     struct
      device *device,\n\t\t\t\t     uint64_t offset, struct superblock *sb)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INTEGRITY_read_superblock
      Src: /src/cryptsetup/lib/integrity/integrity.c:72,1
    - Dst: INTEGRITY_metadata_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:72,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - cd
    - params
    - flags
    argTypes:
    - struct crypt_device*
    - struct crypt_params_integrity*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 65
    functionDepth: 5
    functionLinenumber: 65
    functionLinenumberEnd: 85
    functionName: INTEGRITY_read_sb
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 1
    functionsReached:
    - INTEGRITY_read_superblock
    - INTEGRITY_metadata_device
    linkageType: ''
    returnType: int
    signature: "int INTEGRITY_read_sb(struct crypt_device *cd,\n\t\t      struct crypt_params_integrity
      *params,\n\t\t      uint32_t *flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INTEGRITY_read_superblock
      Src: /src/cryptsetup/lib/integrity/integrity.c:93,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:98,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/integrity/integrity.c:98,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:99,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:100,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:101,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:102,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:105,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:106,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:107,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:108,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/integrity/integrity.c:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - cd
    - device
    - offset
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 87
    functionDepth: 5
    functionLinenumber: 87
    functionLinenumberEnd: 118
    functionName: INTEGRITY_dump
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 1
    functionsReached:
    - device_path
    - INTEGRITY_read_superblock
    - log_std
    linkageType: ''
    returnType: int
    signature: int INTEGRITY_dump(struct crypt_device *cd, struct device *device,
      uint64_t offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INTEGRITY_read_superblock
      Src: /src/cryptsetup/lib/integrity/integrity.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - cd
    - device
    - offset
    - data_sectors
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 120
    functionDepth: 5
    functionLinenumber: 120
    functionLinenumberEnd: 133
    functionName: INTEGRITY_data_sectors
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 2
    functionsReached:
    - INTEGRITY_read_superblock
    linkageType: ''
    returnType: int
    signature: "int INTEGRITY_data_sectors(struct crypt_device *cd,\n\t\t\t   struct
      device *device, uint64_t offset,\n\t\t\t   uint64_t *data_sectors)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:146,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:148,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:150,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:152,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:154,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:156,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:158,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:160,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:162,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 2
    argNames:
    - integrity
    - required_key_size
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 171
    functionName: INTEGRITY_key_size
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int INTEGRITY_key_size(const char *integrity, int required_key_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:182,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:182,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:185,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/integrity/integrity.c:188,1
    - Dst: sscanf
      Src: /src/cryptsetup/lib/integrity/integrity.c:190,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/integrity/integrity.c:192,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/integrity/integrity.c:194,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - integrity
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 197
    functionName: INTEGRITY_hash_tag_size
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 1
    functionsReached:
    - strcmp
    - sscanf
    - crypt_hash_size
    linkageType: ''
    returnType: int
    signature: int INTEGRITY_hash_tag_size(const char *integrity)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:207,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:209,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:211,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:213,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:215,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:215,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:217,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:221,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:223,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:225,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:227,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:229,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:231,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:233,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:235,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:237,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/integrity/integrity.c:239,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 39
    argCount: 3
    argNames:
    - integrity
    - cipher
    - cipher_mode
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 246
    functionName: INTEGRITY_tag_size
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 4
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int INTEGRITY_tag_size(const char *integrity,\n\t\t       const char
      *cipher,\n\t\t       const char *cipher_mode)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INTEGRITY_data_sectors
      Src: /src/cryptsetup/lib/integrity/integrity.c:272,1
    - Dst: INTEGRITY_metadata_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:272,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/integrity/integrity.c:273,1
    - Dst: dm_integrity_target_set
      Src: /src/cryptsetup/lib/integrity/integrity.c:277,1
    - Dst: INTEGRITY_metadata_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:278,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:278,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/integrity/integrity.c:279,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/integrity/integrity.c:279,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/integrity/integrity.c:280,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 8
    argNames:
    - cd
    - params
    - vk
    - journal_crypt_key
    - journal_mac_key
    - dmd
    - flags
    - sb_flags
    argTypes:
    - struct crypt_device*
    - struct crypt_params_integrity*
    - struct volume_key*
    - struct volume_key*
    - struct volume_key*
    - struct crypt_dm_active_device*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 248
    functionDepth: 6
    functionLinenumber: 248
    functionLinenumberEnd: 282
    functionName: INTEGRITY_create_dmd_device
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 0
    functionsReached:
    - INTEGRITY_metadata_device
    - INTEGRITY_data_sectors
    - dm_integrity_target_set
    - crypt_get_integrity_tag_size
    - crypt_get_data_offset
    - crypt_get_sector_size
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int INTEGRITY_create_dmd_device(struct crypt_device *cd,\n\t\t       const
      struct crypt_params_integrity *params,\n\t\t       struct volume_key *vk,\n\t\t
      \      struct volume_key *journal_crypt_key,\n\t\t       struct volume_key *journal_mac_key,\n\t\t
      \      struct crypt_dm_active_device *dmd,\n\t\t       uint32_t flags, uint32_t
      sb_flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: single_segment
      Src: /src/cryptsetup/lib/integrity/integrity.c:294,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/integrity/integrity.c:297,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/integrity/integrity.c:298,1
    - Dst: create_or_reload_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:301,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/integrity/integrity.c:303,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/integrity/integrity.c:304,1
    - Dst: _
      Src: /src/cryptsetup/lib/integrity/integrity.c:304,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/integrity/integrity.c:308,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/integrity/integrity.c:310,1
    - Dst: _
      Src: /src/cryptsetup/lib/integrity/integrity.c:310,1
    - Dst: crypt_get_compatibility
      Src: /src/cryptsetup/lib/integrity/integrity.c:315,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/integrity/integrity.c:319,1
    - Dst: _
      Src: /src/cryptsetup/lib/integrity/integrity.c:319,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/integrity/integrity.c:323,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/integrity/integrity.c:325,1
    - Dst: _
      Src: /src/cryptsetup/lib/integrity/integrity.c:325,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 22
    argCount: 5
    argNames:
    - cd
    - name
    - type
    - dmd
    - sb_flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - struct crypt_dm_active_device*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 284
    functionDepth: 6
    functionLinenumber: 284
    functionLinenumberEnd: 330
    functionName: INTEGRITY_activate_dmd_device
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 1
    functionsReached:
    - _
    - crypt_get_compatibility
    - dm_flags
    - log_dbg
    - device_path
    - log_err
    - create_or_reload_device
    - single_segment
    linkageType: ''
    returnType: int
    signature: "int INTEGRITY_activate_dmd_device(struct crypt_device *cd,\n\t\t       const
      char *name,\n\t\t       const char *type,\n\t\t       struct crypt_dm_active_device
      *dmd,\n\t\t       uint32_t sb_flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:344,1
    - Dst: INTEGRITY_create_dmd_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:352,1
    - Dst: INTEGRITY_create_dmd_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:360,1
    - Dst: INTEGRITY_activate_dmd_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:364,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/integrity/integrity.c:366,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/integrity/integrity.c:367,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 8
    argNames:
    - cd
    - name
    - params
    - vk
    - journal_crypt_key
    - journal_mac_key
    - flags
    - sb_flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_params_integrity*
    - struct volume_key*
    - struct volume_key*
    - struct volume_key*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 332
    functionDepth: 8
    functionLinenumber: 332
    functionLinenumberEnd: 369
    functionName: INTEGRITY_activate
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 1
    functionsReached:
    - INTEGRITY_create_dmd_device
    - dm_query_device
    - INTEGRITY_activate_dmd_device
    - dm_targets_free
    linkageType: ''
    returnType: int
    signature: "int INTEGRITY_activate(struct crypt_device *cd,\n\t\t       const
      char *name,\n\t\t       const struct crypt_params_integrity *params,\n\t\t       struct
      volume_key *vk,\n\t\t       struct volume_key *journal_crypt_key,\n\t\t       struct
      volume_key *journal_mac_key,\n\t\t       uint32_t flags, uint32_t sb_flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/integrity/integrity.c:385,1
    - Dst: assert
      Src: /src/cryptsetup/lib/integrity/integrity.c:386,1
    - Dst: assert
      Src: /src/cryptsetup/lib/integrity/integrity.c:387,1
    - Dst: assert
      Src: /src/cryptsetup/lib/integrity/integrity.c:388,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/integrity/integrity.c:390,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/integrity/integrity.c:390,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/integrity/integrity.c:394,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:394,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/integrity/integrity.c:395,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/integrity/integrity.c:399,1
    - Dst: dm_linear_target_set
      Src: /src/cryptsetup/lib/integrity/integrity.c:401,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:401,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/integrity/integrity.c:401,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:403,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/integrity/integrity.c:404,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/integrity/integrity.c:408,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:414,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - cd
    - name
    - device_size_sectors
    - ret_device
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    - struct device**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 384
        line_start: 384
        source_file: /src/cryptsetup/lib/integrity/integrity.c
    - condition: (name)
      pos:
        line_end: 385
        line_start: 385
        source_file: /src/cryptsetup/lib/integrity/integrity.c
    - condition: (device_size_sectors)
      pos:
        line_end: 386
        line_start: 386
        source_file: /src/cryptsetup/lib/integrity/integrity.c
    - condition: (ret_device)
      pos:
        line_end: 387
        line_start: 387
        source_file: /src/cryptsetup/lib/integrity/integrity.c
    constantsTouched: []
    func_position:
      end: 417
      start: 371
    functionDepth: 7
    functionLinenumber: 371
    functionLinenumberEnd: 417
    functionName: _create_reduced_device
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 0
    functionsReached:
    - dm_create_device
    - snprintf
    - dm_get_dir
    - dm_targets_free
    - dm_remove_device
    - assert
    - device_block_adjust
    - log_dbg
    - dm_linear_target_set
    - crypt_get_data_offset
    - device_alloc
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int _create_reduced_device(struct crypt_device *cd,\n\t\t\t\t  const
      char *name,\n\t\t\t\t  uint64_t device_size_sectors,\n\t\t\t\t  struct device
      **ret_device)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: uuid_generate
      Src: /src/cryptsetup/lib/integrity/integrity.c:440,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/integrity/integrity.c:441,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/integrity/integrity.c:443,1
    - Dst: INTEGRITY_metadata_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:447,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/integrity/integrity.c:450,1
    - Dst: _create_reduced_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:459,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:466,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/integrity/integrity.c:469,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:470,1
    - Dst: dm_integrity_target_set
      Src: /src/cryptsetup/lib/integrity/integrity.c:476,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/integrity/integrity.c:477,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/integrity/integrity.c:478,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/integrity/integrity.c:483,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/integrity/integrity.c:484,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/integrity/integrity.c:486,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/integrity/integrity.c:487,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/integrity/integrity.c:488,1
    - Dst: _
      Src: /src/cryptsetup/lib/integrity/integrity.c:488,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/integrity/integrity.c:495,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:500,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:504,1
    - Dst: INTEGRITY_read_sb
      Src: /src/cryptsetup/lib/integrity/integrity.c:510,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/integrity/integrity.c:512,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/integrity/integrity.c:514,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/integrity/integrity.c:515,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 61
    argCount: 8
    argNames:
    - cd
    - params
    - integrity_key
    - journal_crypt_key
    - journal_mac_key
    - backing_device_sectors
    - sb_flags
    - integrity_inline
    argTypes:
    - struct crypt_device*
    - struct crypt_params_integrity*
    - struct volume_key*
    - struct volume_key*
    - struct volume_key*
    - uint64_t
    - uint32_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 419
    functionDepth: 8
    functionLinenumber: 419
    functionLinenumberEnd: 518
    functionName: INTEGRITY_format
    functionSourceFile: /src/cryptsetup/lib/integrity/integrity.c
    functionUses: 3
    functionsReached:
    - device_free
    - dm_remove_device
    - uuid_unparse
    - dm_flags
    - log_dbg
    - crypt_get_integrity_tag_size
    - device_block_adjust
    - crypt_get_sector_size
    - INTEGRITY_metadata_device
    - dm_create_device
    - dm_integrity_target_set
    - dm_targets_free
    - log_err
    - INTEGRITY_read_sb
    - crypt_get_data_offset
    - _create_reduced_device
    - crypt_data_device
    - _
    - snprintf
    - uuid_generate
    - device_path
    linkageType: ''
    returnType: int
    signature: "int INTEGRITY_format(struct crypt_device *cd,\n\t\t     const struct
      crypt_params_integrity *params,\n\t\t     struct volume_key *integrity_key,\n\t\t
      \    struct volume_key *journal_crypt_key,\n\t\t     struct volume_key *journal_mac_key,\n\t\t
      \    uint64_t backing_device_sectors,\n\t\t     uint32_t *sb_flags,\n\t\t     bool
      integrity_inline)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:20,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:22,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:25,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - jobj_segments
    - blockwise
    argTypes:
    - json_object*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 35
    functionName: json_segments_get_minimal_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_segment_get_offset
    - UNUSED
    - json_segment_is_backup
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t json_segments_get_minimal_offset(json_object *jobj_segments,
      unsigned blockwise)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:20,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:22,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:25,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 32
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_segment_get_offset
    - UNUSED
    - json_segment_is_backup
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_segments, key, val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:42,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:45,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - jobj_segment
    - blockwise
    argTypes:
    - json_object*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 46
    functionName: json_segment_get_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 2
    functionsReached:
    - crypt_jobj_get_uint64
    - json_object_object_get_ex
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t json_segment_get_offset(json_object *jobj_segment, unsigned
      blockwise)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:53,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - jobj_segment
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 57
    functionName: json_segment_type
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_get_string
    - json_object_object_get_ex
    linkageType: ''
    returnType: char
    signature: char *json_segment_type(json_object *jobj_segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:64,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - jobj_segment
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 68
    functionName: json_segment_get_iv_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_get_uint64
    - json_object_object_get_ex
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t json_segment_get_iv_offset(json_object *jobj_segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:75,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:78,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - jobj_segment
    - blockwise
    argTypes:
    - json_object*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 79
    functionName: json_segment_get_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_get_uint64
    - json_object_object_get_ex
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t json_segment_get_size(json_object *jobj_segment, unsigned
      blockwise)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:86,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:89,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - jobj_segment
    - blockwise
    argTypes:
    - json_object*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 90
    functionName: json_segment_get_opal_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_get_uint64
    - json_object_object_get_ex
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t json_segment_get_opal_size(json_object *jobj_segment, unsigned
      blockwise)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:99,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:99,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - jobj_segment
    - size_bytes
    argTypes:
    - json_object*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 106
    functionName: json_segment_set_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_new_string
    - crypt_jobj_new_uint64
    - json_object_object_add
    linkageType: ''
    returnType: bool
    signature: bool json_segment_set_size(json_object *jobj_segment, const uint64_t
      *size_bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:114,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - jobj_segment
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 118
    functionName: json_segment_get_cipher
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_get_string
    - json_object_object_get_ex
    linkageType: ''
    returnType: char
    signature: char *json_segment_get_cipher(json_object *jobj_segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:126,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - jobj_segment
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 131
    functionName: json_segment_get_sector_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_get_int
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t json_segment_get_sector_size(json_object *jobj_segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:137,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:139,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - jobj_segment
    - ret_opal_segment_id
    argTypes:
    - json_object*
    - uint32_t*
    assertStmts:
    - condition: (ret_opal_segment_id)
      pos:
        line_end: 136
        line_start: 136
        source_file: /src/cryptsetup/lib/luks2/luks2_segment.c
    constantsTouched: []
    func_position:
      end: 145
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 145
    functionName: json_segment_get_opal_segment_id
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_get_int
    - assert
    linkageType: ''
    returnType: int
    signature: int json_segment_get_opal_segment_id(json_object *jobj_segment, uint32_t
      *ret_opal_segment_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:151,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:156,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - jobj_segment
    - ret_key_size
    argTypes:
    - json_object*
    - size_t*
    assertStmts:
    - condition: (ret_key_size)
      pos:
        line_end: 150
        line_start: 150
        source_file: /src/cryptsetup/lib/luks2/luks2_segment.c
    constantsTouched: []
    func_position:
      end: 162
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 162
    functionName: json_segment_get_opal_key_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_get_int
    - assert
    linkageType: ''
    returnType: int
    signature: int json_segment_get_opal_key_size(json_object *jobj_segment, size_t
      *ret_key_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - jobj_segment
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 171
    functionName: json_segment_get_flags
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    linkageType: ''
    returnType: json_object
    signature: json_object *json_segment_get_flags(json_object *jobj_segment)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_flags
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:176,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:181,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:182,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:184,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:184,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:186,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - jobj_segment
    - flag_str
    - len
    argTypes:
    - json_object*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 192
    functionName: json_segment_contains_flag
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_array_length
    - json_object_array_get_idx
    - json_segment_get_flags
    - strncmp
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: bool
    signature: bool json_segment_contains_flag(json_object *jobj_segment, const char
      *flag_str, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_contains_flag
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jobj_segment
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: json_segment_is_backup
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 2
    functionsReached:
    - json_segment_contains_flag
    linkageType: ''
    returnType: bool
    signature: bool json_segment_is_backup(json_object *jobj_segment)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:204,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jobj_segments
    - segment
    argTypes:
    - json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 211
    functionName: json_segments_get_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - snprintf
    linkageType: ''
    returnType: json_object
    signature: json_object *json_segments_get_segment(json_object *jobj_segments,
      int segment)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:221,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - jobj_segments
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 213
    functionDepth: 3
    functionLinenumber: 213
    functionLinenumberEnd: 227
    functionName: json_segments_count
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - UNUSED
    - json_segment_is_backup
    linkageType: ''
    returnType: unsigned
    signature: unsigned json_segments_count(json_object *jobj_segments)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:221,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 3
    functionLinenumber: 220
    functionLinenumberEnd: 224
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - UNUSED
    - json_segment_is_backup
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_segments, slot, val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_flags
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:236,1
    - Dst: LUKS2_array_remove
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:240,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:244,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:245,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:246,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:248,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - jobj_segment
    - flag
    argTypes:
    - json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 249
    functionName: json_segment_remove_flag
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_add
    - json_object_object_del
    - json_object_array_length
    - json_segment_get_flags
    - json_object_put
    - LUKS2_array_remove
    linkageType: ''
    returnType: void
    signature: void json_segment_remove_flag(json_object *jobj_segment, const char
      *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:253,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:257,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:257,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:258,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:258,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:259,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:259,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - type
    - offset
    - length
    argTypes:
    - char*
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 262
    functionName: _segment_create_generic
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_new_string
    - crypt_jobj_new_uint64
    - json_object_new_object
    - json_object_object_add
    linkageType: ''
    returnType: json_object
    signature: json_object *_segment_create_generic(const char *type, uint64_t offset,
      const uint64_t *length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _segment_create_generic
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:266,1
    - Dst: LUKS2_segment_set_flag
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - offset
    - length
    - reencryption
    argTypes:
    - uint64_t
    - uint64_t*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 270
    functionName: json_segment_create_linear
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - _segment_create_generic
    - LUKS2_segment_set_flag
    linkageType: ''
    returnType: json_object
    signature: json_object *json_segment_create_linear(uint64_t offset, const uint64_t
      *length, unsigned reencryption)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:278,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:280,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:280,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:281,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:281,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:282,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:282,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:285,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:289,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:289,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:290,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:290,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:291,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:291,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:293,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:293,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:294,1
    - Dst: LUKS2_segment_set_flag
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:298,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 7
    argNames:
    - jobj_segment
    - iv_offset
    - cipher
    - integrity
    - integrity_key_size
    - sector_size
    - reencryption
    argTypes:
    - json_object*
    - uint64_t
    - char*
    - char*
    - uint32_t
    - uint32_t
    - unsigned
    assertStmts:
    - condition: (cipher)
      pos:
        line_end: 277
        line_start: 277
        source_file: /src/cryptsetup/lib/luks2/luks2_segment.c
    constantsTouched: []
    func_position:
      end: 301
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 301
    functionName: json_add_crypt_fields
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_new_uint64
    - json_object_object_add
    - json_object_new_string
    - json_object_new_object
    - LUKS2_segment_set_flag
    - json_object_new_int
    - assert
    linkageType: ''
    returnType: bool
    signature: "bool json_add_crypt_fields(json_object *jobj_segment, uint64_t iv_offset,\n\t\t\t\t
      \ const char *cipher, const char *integrity, uint32_t integrity_key_size,\n\t\t\t\t
      \ uint32_t sector_size, unsigned reencryption)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _segment_create_generic
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:308,1
    - Dst: json_add_crypt_fields
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:313,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 8
    argNames:
    - offset
    - iv_offset
    - length
    - cipher
    - integrity
    - integrity_key_size
    - sector_size
    - reencryption
    argTypes:
    - uint64_t
    - uint64_t
    - uint64_t*
    - char*
    - char*
    - uint32_t
    - uint32_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 318
    functionName: json_segment_create_crypt
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - _segment_create_generic
    - json_add_crypt_fields
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: "json_object *json_segment_create_crypt(uint64_t offset,\n\t\t\t\t
      \ uint64_t iv_offset, const uint64_t *length,\n\t\t\t\t  const char *cipher,
      const char *integrity, uint32_t integrity_key_size,\n\t\t\t\t  uint32_t sector_size,
      unsigned reencryption)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:323,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:324,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:326,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:326,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:327,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:327,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:328,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - jobj_segment
    - length
    - segment_number
    - key_size
    argTypes:
    - json_object*
    - uint64_t*
    - uint32_t
    - uint32_t
    assertStmts:
    - condition: (jobj_segment)
      pos:
        line_end: 322
        line_start: 322
        source_file: /src/cryptsetup/lib/luks2/luks2_segment.c
    - condition: (length)
      pos:
        line_end: 323
        line_start: 323
        source_file: /src/cryptsetup/lib/luks2/luks2_segment.c
    constantsTouched: []
    func_position:
      end: 329
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 329
    functionName: json_add_opal_fields
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_new_int
    - json_object_object_add
    - crypt_jobj_new_uint64
    - assert
    linkageType: ''
    returnType: void
    signature: "void json_add_opal_fields(json_object *jobj_segment, const uint64_t
      *length,\n\t\t\t\t uint32_t segment_number, uint32_t key_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _segment_create_generic
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:334,1
    - Dst: json_add_opal_fields
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - offset
    - length
    - segment_number
    - key_size
    argTypes:
    - uint64_t
    - uint64_t*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 331
    functionDepth: 2
    functionLinenumber: 331
    functionLinenumberEnd: 341
    functionName: json_segment_create_opal
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - _segment_create_generic
    - json_add_opal_fields
    linkageType: ''
    returnType: json_object
    signature: "json_object *json_segment_create_opal(uint64_t offset, const uint64_t
      *length,\n\t\t\t\t      uint32_t segment_number, uint32_t key_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _segment_create_generic
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:349,1
    - Dst: json_add_opal_fields
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:353,1
    - Dst: json_add_crypt_fields
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:355,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 9
    argNames:
    - offset
    - length
    - segment_number
    - key_size
    - iv_offset
    - cipher
    - integrity
    - sector_size
    - reencryption
    argTypes:
    - uint64_t
    - uint64_t*
    - uint32_t
    - uint32_t
    - uint64_t
    - char*
    - char*
    - uint32_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 360
    functionName: json_segment_create_opal_crypt
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - _segment_create_generic
    - json_add_opal_fields
    - json_add_crypt_fields
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: "json_object *json_segment_create_opal_crypt(uint64_t offset, const
      uint64_t *length,\n\t\t\t\t\t    uint32_t segment_number, uint32_t key_size,\n\t\t\t\t\t
      \   uint64_t iv_offset, const char *cipher,\n\t\t\t\t\t    const char *integrity,
      uint32_t sector_size,\n\t\t\t\t\t    unsigned reencryption)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:364,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hdr
    - segment
    - blockwise
    argTypes:
    - struct luks2_hdr*
    - int
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 365
    functionName: LUKS2_segment_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_segment_get_offset
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_segment_offset(struct luks2_hdr *hdr, int segment, unsigned
      blockwise)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:372,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:373,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:376,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - jobj_segments
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 380
    functionName: json_segments_segment_in_reencrypt
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - atoi
    - LUKS2_array_jobj
    - json_object_object_get_ex
    linkageType: ''
    returnType: int
    signature: int json_segments_segment_in_reencrypt(json_object *jobj_segments)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:372,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:373,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:376,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 377
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - atoi
    - LUKS2_array_jobj
    - json_object_object_get_ex
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_segments, slot, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:384,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hdr
    - segment
    - blockwise
    argTypes:
    - struct luks2_hdr*
    - int
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 385
    functionName: LUKS2_segment_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_segment_get_size
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_segment_size(struct luks2_hdr *hdr, int segment, unsigned
      blockwise)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_opal_size
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:389,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hdr
    - segment
    - blockwise
    argTypes:
    - struct luks2_hdr*
    - int
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 390
    functionName: LUKS2_opal_segment_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_segment_get_opal_size
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_opal_segment_size(struct luks2_hdr *hdr, int segment,
      unsigned blockwise)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_set_size
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:394,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hdr
    - segment
    - segment_size_bytes
    argTypes:
    - struct luks2_hdr*
    - int
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 395
    functionName: LUKS2_segment_set_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 1
    functionsReached:
    - json_segment_set_size
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: bool
    signature: bool LUKS2_segment_set_size(struct luks2_hdr *hdr, int segment, const
      uint64_t *segment_size_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:399,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:399,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hdr
    - segment
    - type
    argTypes:
    - struct luks2_hdr*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: LUKS2_segment_is_type
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_segment_type
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: int
    signature: int LUKS2_segment_is_type(struct luks2_hdr *hdr, int segment, const
      char *type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:404,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:409,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - jobj_segment
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 410
    functionName: json_segment_is_hw_opal_only
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_segment_type
    linkageType: ''
    returnType: bool
    signature: bool json_segment_is_hw_opal_only(json_object *jobj_segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:414,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - jobj_segment
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 420
    functionName: json_segment_is_hw_opal_crypt
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_segment_type
    linkageType: ''
    returnType: bool
    signature: bool json_segment_is_hw_opal_crypt(json_object *jobj_segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_is_hw_opal_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:424,1
    - Dst: json_segment_is_hw_opal_only
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - jobj_segment
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 426
    functionName: json_segment_is_hw_opal
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_segment_is_hw_opal_crypt
    - json_segment_is_hw_opal_only
    linkageType: ''
    returnType: bool
    signature: bool json_segment_is_hw_opal(json_object *jobj_segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_is_hw_opal_only
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:430,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 428
    functionDepth: 2
    functionLinenumber: 428
    functionLinenumberEnd: 431
    functionName: LUKS2_segment_is_hw_opal_only
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 1
    functionsReached:
    - json_segment_is_hw_opal_only
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: bool
    signature: bool LUKS2_segment_is_hw_opal_only(struct luks2_hdr *hdr, int segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_is_hw_opal_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:435,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 433
    functionDepth: 2
    functionLinenumber: 433
    functionLinenumberEnd: 436
    functionName: LUKS2_segment_is_hw_opal_crypt
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 1
    functionsReached:
    - json_segment_is_hw_opal_crypt
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: bool
    signature: bool LUKS2_segment_is_hw_opal_crypt(struct luks2_hdr *hdr, int segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_is_hw_opal
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:440,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 438
    functionDepth: 3
    functionLinenumber: 438
    functionLinenumberEnd: 441
    functionName: LUKS2_segment_is_hw_opal
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 3
    functionsReached:
    - json_segment_is_hw_opal
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: bool
    signature: bool LUKS2_segment_is_hw_opal(struct luks2_hdr *hdr, int segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:445,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:447,1
    - Dst: json_segment_is_hw_opal
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:449,1
    - Dst: json_segment_get_opal_segment_id
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - segment
    - ret_opal_segment_number
    argTypes:
    - struct luks2_hdr*
    - int
    - uint32_t*
    assertStmts:
    - condition: (ret_opal_segment_number)
      pos:
        line_end: 446
        line_start: 446
        source_file: /src/cryptsetup/lib/luks2/luks2_segment.c
    constantsTouched: []
    func_position:
      end: 453
      start: 443
    functionDepth: 3
    functionLinenumber: 443
    functionLinenumberEnd: 453
    functionName: LUKS2_get_opal_segment_number
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 3
    functionsReached:
    - json_segment_get_opal_segment_id
    - json_segment_is_hw_opal
    - LUKS2_get_segment_jobj
    - assert
    linkageType: ''
    returnType: int
    signature: int LUKS2_get_opal_segment_number(struct luks2_hdr *hdr, int segment,
      uint32_t *ret_opal_segment_number)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:458,1
    - Dst: json_segment_get_opal_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 464
    functionName: LUKS2_get_opal_key_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 1
    functionsReached:
    - LUKS2_get_segment_jobj
    - json_segment_get_opal_key_size
    linkageType: ''
    returnType: int
    signature: int LUKS2_get_opal_key_size(struct luks2_hdr *hdr, int segment)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:474,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:478,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:480,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:480,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:483,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:484,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - hdr
    - type
    argTypes:
    - struct luks2_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 466
    functionDepth: 3
    functionLinenumber: 466
    functionLinenumberEnd: 488
    functionName: LUKS2_last_segment_by_type
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_segment_type
    - json_segment_is_backup
    - strcmp
    - atoi
    linkageType: ''
    returnType: int
    signature: int LUKS2_last_segment_by_type(struct luks2_hdr *hdr, const char *type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:478,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:480,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:480,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:483,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:484,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 477
    functionDepth: 3
    functionLinenumber: 477
    functionLinenumberEnd: 485
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - atoi
    - strcmp
    - json_segment_type
    - json_segment_is_backup
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_segments, slot, val)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:498,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:502,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:504,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:504,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:508,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:509,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:510,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - hdr
    - type
    argTypes:
    - struct luks2_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 490
    functionDepth: 3
    functionLinenumber: 490
    functionLinenumberEnd: 514
    functionName: LUKS2_segment_by_type
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_segment_type
    - json_segment_is_backup
    - strcmp
    - atoi
    linkageType: ''
    returnType: int
    signature: int LUKS2_segment_by_type(struct luks2_hdr *hdr, const char *type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:502,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:504,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:504,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:508,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:509,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:510,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 501
    functionDepth: 3
    functionLinenumber: 501
    functionLinenumberEnd: 511
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - atoi
    - strcmp
    - json_segment_type
    - json_segment_is_backup
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_segments, slot, val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:520,1
    - Dst: json_object_object_length
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 524
    functionName: LUKS2_segment_first_unused_id
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_length
    - json_object_object_get_ex
    linkageType: ''
    returnType: int
    signature: int LUKS2_segment_first_unused_id(struct luks2_hdr *hdr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:533,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:534,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:537,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:540,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:543,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:543,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - jobj_segment
    - flag
    argTypes:
    - json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 546
    functionName: LUKS2_segment_set_flag
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 2
    functionsReached:
    - json_object_new_array
    - json_object_object_get_ex
    - json_object_array_add
    - json_object_object_add
    - json_object_new_string
    - LUKS2_array_jobj
    linkageType: ''
    returnType: int
    signature: int LUKS2_segment_set_flag(json_object *jobj_segment, const char *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:551,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - cd
    - hdr
    - jobj_segments
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 554
    functionName: LUKS2_segments_set
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - LUKS2_hdr_write
    - json_object_object_add
    linkageType: ''
    returnType: int
    signature: "int LUKS2_segments_set(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\t
      \      json_object *jobj_segments, int commit)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:558,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:564,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:566,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:567,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - hdr
    - flag
    argTypes:
    - struct luks2_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 571
    functionName: LUKS2_get_segment_id_by_flag
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - atoi
    - LUKS2_get_segments_jobj
    - LUKS2_array_jobj
    - json_object_object_get_ex
    linkageType: ''
    returnType: int
    signature: int LUKS2_get_segment_id_by_flag(struct luks2_hdr *hdr, const char
      *flag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:564,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:566,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:567,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 568
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - atoi
    - LUKS2_array_jobj
    - json_object_object_get_ex
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_segments, key, value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:575,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:581,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:582,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:584,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - hdr
    - flag
    argTypes:
    - struct luks2_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 589
    functionName: LUKS2_get_segment_by_flag
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_segments_jobj
    - UNUSED
    - json_object_object_get_ex
    - LUKS2_array_jobj
    linkageType: ''
    returnType: json_object
    signature: json_object *LUKS2_get_segment_by_flag(struct luks2_hdr *hdr, const
      char *flag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:581,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:582,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:584,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 586
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - UNUSED
    - json_object_object_get_ex
    - LUKS2_array_jobj
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_segments, key, value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:594,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:595,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:600,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:603,1
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:604,1
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:604,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:605,1
    - Dst: json_segment_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:605,1
    - Dst: json_segment_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:606,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - jobj_segment_1
    - jobj_segment_2
    argTypes:
    - json_object*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 609
    functionName: json_segment_cmp
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_segment_get_cipher
    - json_segment_type
    - json_segment_get_sector_size
    linkageType: ''
    returnType: bool
    signature: bool json_segment_cmp(json_object *jobj_segment_1, json_object *jobj_segment_2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:615,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:617,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:622,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:624,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:627,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:628,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:628,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 614
        line_start: 614
        source_file: /src/cryptsetup/lib/luks2/luks2_segment.c
    constantsTouched: []
    func_position:
      end: 633
      start: 611
    functionDepth: 3
    functionLinenumber: 611
    functionLinenumberEnd: 633
    functionName: LUKS2_segments_dynamic_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 1
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_segments_jobj
    - assert
    - json_segment_is_backup
    - strcmp
    - json_object_get_string
    - UNUSED
    linkageType: ''
    returnType: bool
    signature: bool LUKS2_segments_dynamic_size(struct luks2_hdr *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:622,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:624,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:627,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:628,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_segment.c:628,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 621
    functionDepth: 3
    functionLinenumber: 621
    functionLinenumberEnd: 630
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_segment.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_segment_is_backup
    - strcmp
    - json_object_get_string
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_segments, key, val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:21,1
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:24,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:28,1
    - Dst: crypt_keyring_get_user_key
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:30,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:30,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - cd
    - token
    - buffer
    - buffer_len
    - usrptr
    argTypes:
    - struct crypt_device*
    - int
    - char**
    - size_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 11
    functionDepth: 2
    functionLinenumber: 11
    functionLinenumberEnd: 37
    functionName: keyring_open
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token_keyring.c
    functionUses: 0
    functionsReached:
    - crypt_keyring_get_user_key
    - crypt_get_hdr
    - json_object_object_get_ex
    - LUKS2_get_token_jobj
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int keyring_open(struct crypt_device *cd,\n\t\t\t\tint token,\n\t\t\t\tchar
      **buffer,\n\t\t\t\tsize_t *buffer_len,\n\t\t\t\tvoid *usrptr __attribute__((unused)))"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:46,1
    - Dst: json_tokener_parse_verbose
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:48,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:50,1
    - Dst: json_object_object_length
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:54,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:55,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:59,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:60,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:64,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:65,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:71,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:71,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:73,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - cd
    - json
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 75
    functionName: keyring_validate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token_keyring.c
    functionUses: 0
    functionsReached:
    - json_object_object_length
    - json_object_object_get_ex
    - strlen
    - log_dbg
    - json_object_is_type
    - json_object_get_string
    - json_object_put
    - json_tokener_parse_verbose
    linkageType: ''
    returnType: int
    signature: "int keyring_validate(struct crypt_device *cd __attribute__((unused)),\n\t\t\t\t
      \   const char *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_tokener_parse_verbose
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:82,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:86,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:87,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:91,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:91,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - json
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 94
    functionName: keyring_dump
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token_keyring.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - log_std
    - json_object_get_string
    - json_object_put
    - json_tokener_parse_verbose
    linkageType: ''
    returnType: void
    signature: void keyring_dump(struct crypt_device *cd, const char *json)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - buffer_size
    - keyring_params
    argTypes:
    - char*
    - size_t
    - struct crypt_token_params_luks2_keyring*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 107
    functionName: LUKS2_token_keyring_json
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token_keyring.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int LUKS2_token_keyring_json(char *buffer, size_t buffer_size,\n\tconst
      struct crypt_token_params_luks2_keyring *keyring_params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:114,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:115,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:116,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:116,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:116,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:118,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - hdr
    - token
    - keyring_params
    argTypes:
    - struct luks2_hdr*
    - int
    - struct crypt_token_params_luks2_keyring*
    assertStmts:
    - condition: (!strcmp(json_object_get_string(jobj), LUKS2_TOKEN_KEYRING))
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/cryptsetup/lib/luks2/luks2_token_keyring.c
    constantsTouched: []
    func_position:
      end: 123
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 123
    functionName: LUKS2_token_keyring_get
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token_keyring.c
    functionUses: 1
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_token_jobj
    - assert
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int LUKS2_token_keyring_get(struct luks2_hdr *hdr,\n\tint token, struct
      crypt_token_params_luks2_keyring *keyring_params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/luks2_token_keyring.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - buffer_len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: keyring_buffer_free
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token_keyring.c
    functionUses: 0
    functionsReached:
    - crypt_safe_free
    linkageType: ''
    returnType: void
    signature: void keyring_buffer_free(void *buffer, size_t buffer_len __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - cd
    - keyslot
    - password
    - password_len
    - volume_key
    - volume_key_len
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 19
    functionName: reenc_keyslot_open
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_open(struct crypt_device *cd __attribute__((unused)),\n\tint
      keyslot __attribute__((unused)),\n\tconst char *password __attribute__((unused)),\n\tsize_t
      password_len __attribute__((unused)),\n\tchar *volume_key __attribute__((unused)),\n\tsize_t
      volume_key_len __attribute__((unused)))"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:27,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:32,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:32,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:33,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:33,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:34,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:34,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:36,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:37,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:38,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:38,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:39,1
    - Dst: json_object_new_int64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:39,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:40,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:41,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:42,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:43,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:44,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:45,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:46,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:47,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:48,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:49,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:50,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:50,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:51,1
    - Dst: json_object_new_int64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:51,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:52,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:53,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:54,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:55,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:56,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:57,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:59,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 5
    argNames:
    - cd
    - params
    - alignment
    - area_offset
    - area_length
    argTypes:
    - struct crypt_device*
    - struct crypt_params_reencrypt*
    - size_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 64
    functionName: reencrypt_keyslot_area_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_new_uint64
    - json_object_object_add
    - json_object_new_string
    - json_object_new_object
    - log_dbg
    - json_object_new_int64
    - strcmp
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_keyslot_area_jobj(struct crypt_device *cd,\n\t\tconst
      struct crypt_params_reencrypt *params,\n\t\tsize_t alignment,\n\t\tuint64_t
      area_offset,\n\t\tuint64_t area_length)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:72,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:73,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:73,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:74,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:74,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:77,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:80,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:82,1
    - Dst: json_object_new_int64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:82,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - cd
    - jobj_area
    - alignment
    argTypes:
    - struct crypt_device*
    - json_object*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 85
    functionName: reencrypt_keyslot_area_jobj_update_block_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_object_add
    - json_object_copy
    - log_dbg
    - json_object_new_int64
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_keyslot_area_jobj_update_block_size(struct
      crypt_device *cd,\n\t\tjson_object *jobj_area, size_t alignment)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:97,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:105,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:109,1
    - Dst: LUKS2_find_area_gap
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:110,1
    - Dst: LUKS2_find_area_max_gap
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:112,1
    - Dst: reencrypt_keyslot_area_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:116,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:120,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:122,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:125,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:127,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:127,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:128,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:128,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:129,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:129,1
    - Dst: crypt_reencrypt_mode_to_str
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:129,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:131,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:131,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:133,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:133,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:135,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:137,1
    - Dst: LUKS2_check_json_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:141,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:142,1
    - Dst: json_object_object_del_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:143,1
    - Dst: JSON_DBG
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:147,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot
    - params
    - alignment
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - struct crypt_params_reencrypt*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 150
    functionName: reenc_keyslot_alloc
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - LUKS2_find_area_max_gap
    - LUKS2_find_area_gap
    - json_object_object_get_ex
    - json_object_object_add_by_uint
    - json_object_object_add
    - LUKS2_check_json_size
    - JSON_DBG
    - json_object_new_string
    - json_object_new_object
    - crypt_reencrypt_mode_to_str
    - json_object_new_int
    - log_dbg
    - json_object_object_del_by_uint
    - reencrypt_keyslot_area_jobj
    - strcmp
    - json_object_put
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_alloc(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tint keyslot,\n\tconst struct crypt_params_reencrypt *params,\n\tsize_t
      alignment)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:159,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:161,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:162,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:163,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:166,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:167,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:172,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:174,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:174,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:175,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:175,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:184,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:184,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 4
    argNames:
    - cd
    - jobj_keyslot
    - buffer
    - buffer_len
    argTypes:
    - struct crypt_device*
    - json_object*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 152
    functionDepth: 4
    functionLinenumber: 152
    functionLinenumberEnd: 187
    functionName: reenc_keyslot_store_data
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - _
    - json_object_object_get_ex
    - crypt_metadata_device
    - device_block_size
    - log_err
    - crypt_jobj_get_uint64
    - device_open_locked
    - device_alignment
    - CONST_CAST
    - write_lseek_blockwise
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_store_data(struct crypt_device *cd,\n\tjson_object
      *jobj_keyslot,\n\tconst void *buffer, size_t buffer_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:203,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:206,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:208,1
    - Dst: LUKS2_device_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:212,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:212,1
    - Dst: reenc_keyslot_store_data
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:216,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:218,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:218,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:222,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:224,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:224,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 6
    argNames:
    - cd
    - keyslot
    - password
    - password_len
    - buffer
    - buffer_len
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 189
    functionDepth: 5
    functionLinenumber: 189
    functionLinenumberEnd: 227
    functionName: reenc_keyslot_store
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - LUKS2_hdr_write
    - crypt_get_hdr
    - LUKS2_device_write_lock
    - crypt_metadata_device
    - log_dbg
    - reenc_keyslot_store_data
    - device_write_unlock
    - LUKS2_get_keyslot_jobj
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_store(struct crypt_device *cd,\n\tint keyslot,\n\tconst
      char *password __attribute__((unused)),\n\tsize_t password_len __attribute__((unused)),\n\tconst
      char *buffer,\n\tsize_t buffer_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:234,1
    - Dst: LUKS2_digest_assign
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 241
    functionName: reenc_keyslot_wipe
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - LUKS2_digest_assign
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_wipe(struct crypt_device *cd,\n\tint keyslot)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:248,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:248,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:252,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:253,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:254,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:255,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:258,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:258,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:259,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:259,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:260,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:260,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:262,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:262,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:263,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:264,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:264,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:265,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:266,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:266,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:267,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:267,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:268,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:269,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:269,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:272,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:273,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:273,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:275,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:276,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:276,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 279
    functionName: reenc_keyslot_dump
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - json_object_object_get_ex
    - log_std
    - LUKS2_get_keyslot_jobj
    - crypt_jobj_get_uint64
    - json_object_get_int
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int reenc_keyslot_dump(struct crypt_device *cd, int keyslot)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:300,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:301,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:304,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:305,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:306,1
    - Dst: validate_json_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:311,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:311,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:312,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:316,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:317,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:318,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:320,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:320,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:321,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:322,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:326,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:326,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:327,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:331,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:331,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:332,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:334,1
    - Dst: validate_json_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:338,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:340,1
    - Dst: NOTPOW2
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:341,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:342,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:346,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:347,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:348,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:349,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:353,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:357,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:358,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 48
    argCount: 2
    argNames:
    - cd
    - jobj_keyslot
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 364
    functionName: reenc_keyslot_validate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - json_object_object_get_ex
    - crypt_jobj_get_uint32
    - json_contains
    - log_dbg
    - MISALIGNED_512
    - crypt_jobj_get_uint64
    - validate_json_uint32
    - strcmp
    - json_object_get_string
    - NOTPOW2
    linkageType: ''
    returnType: int
    signature: int reenc_keyslot_validate(struct crypt_device *cd, json_object *jobj_keyslot)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:373,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:374,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:375,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:384,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:384,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:385,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:385,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:386,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:387,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:391,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:394,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:395,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:398,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:399,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:399,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:400,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:401,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:405,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:406,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:408,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 23
    argCount: 3
    argNames:
    - jobj_keyslot
    - params
    - alignment
    argTypes:
    - json_object*
    - struct crypt_params_reencrypt*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 414
    functionName: reenc_keyslot_update_needed
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - crypt_jobj_get_uint32
    - strncmp
    - crypt_jobj_get_uint64
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_update_needed(json_object *jobj_keyslot,\n\tconst
      struct crypt_params_reencrypt *params,\n\tsize_t alignment)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:425,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:426,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:429,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:429,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:433,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:434,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:434,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:438,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:440,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:442,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:447,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - cd
    - jobj_area
    - area_length
    - rp
    argTypes:
    - struct crypt_device*
    - json_object*
    - uint64_t
    - struct reenc_protection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 452
    functionName: load_checksum_protection
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - _
    - snprintf
    - json_object_object_get_ex
    - crypt_hash_size
    - crypt_jobj_get_uint32
    - log_err
    - log_dbg
    - crypt_hash_init
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int load_checksum_protection(struct crypt_device *cd,\n\tjson_object
      *jobj_area,\n\tuint64_t area_length,\n\tstruct reenc_protection *rp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:462,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:463,1
    - Dst: load_checksum_protection
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:464,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:465,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:466,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:468,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:469,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:471,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:472,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:473,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:474,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:475,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:478,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 5
    argNames:
    - cd
    - type
    - jobj_area
    - area_length
    - rp
    argTypes:
    - struct crypt_device*
    - char*
    - json_object*
    - uint64_t
    - struct reenc_protection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 483
    functionName: reenc_keyslot_load_resilience_primary
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - log_dbg
    - crypt_jobj_get_uint64
    - strcmp
    - load_checksum_protection
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_load_resilience_primary(struct crypt_device *cd,\n\tconst
      char *type,\n\tjson_object *jobj_area,\n\tuint64_t area_length,\n\tstruct reenc_protection
      *rp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:491,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:492,1
    - Dst: load_checksum_protection
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:493,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:494,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:495,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - cd
    - type
    - jobj_area
    - area_length
    - rp
    argTypes:
    - struct crypt_device*
    - char*
    - json_object*
    - uint64_t
    - struct reenc_protection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 501
    functionName: reenc_keyslot_load_resilience_secondary
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - strcmp
    - load_checksum_protection
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_load_resilience_secondary(struct crypt_device *cd,\n\tconst
      char *type,\n\tjson_object *jobj_area,\n\tuint64_t area_length,\n\tstruct reenc_protection
      *rp)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:513,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:514,1
    - Dst: LUKS2_keyslot_jobj_area
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:517,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:521,1
    - Dst: reenc_keyslot_load_resilience_primary
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:526,1
    - Dst: reenc_keyslot_load_resilience_secondary
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:528,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 4
    argNames:
    - cd
    - jobj_keyslot
    - rp
    - primary
    argTypes:
    - struct crypt_device*
    - json_object*
    - struct reenc_protection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 503
    functionDepth: 3
    functionLinenumber: 503
    functionLinenumberEnd: 529
    functionName: reenc_keyslot_load_resilience
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - reenc_keyslot_load_resilience_primary
    - json_object_object_get_ex
    - reenc_keyslot_load_resilience_secondary
    - LUKS2_keyslot_jobj_area
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_load_resilience(struct crypt_device *cd,\n\tjson_object
      *jobj_keyslot,\n\tstruct reenc_protection *rp,\n\tbool primary)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:537,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:538,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:542,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:542,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:543,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:543,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:547,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:548,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:549,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:550,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:554,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:555,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:557,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 13
    argCount: 2
    argNames:
    - jobj_area
    - params
    argTypes:
    - json_object*
    - struct crypt_params_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 561
    functionName: reenc_keyslot_update_is_valid
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - strncmp
    - crypt_jobj_get_uint64
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: bool
    signature: "bool reenc_keyslot_update_is_valid(json_object *jobj_area,\n\tconst
      struct crypt_params_reencrypt *params)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:572,1
    - Dst: LUKS2_keyslot_jobj_area
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:575,1
    - Dst: reencrypt_keyslot_area_jobj_update_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:580,1
    - Dst: reenc_keyslot_update_is_valid
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:582,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:583,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:583,1
    - Dst: reencrypt_keyslot_area_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:587,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:595,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:597,1
    - Dst: reenc_keyslot_validate
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:599,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:602,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:607,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 4
    argNames:
    - cd
    - jobj_keyslot
    - params
    - alignment
    argTypes:
    - struct crypt_device*
    - json_object*
    - struct crypt_params_reencrypt*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 563
    functionDepth: 2
    functionLinenumber: 563
    functionLinenumberEnd: 610
    functionName: reenc_keyslot_update
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - _
    - json_object_object_get_ex
    - json_object_object_add
    - reenc_keyslot_validate
    - reencrypt_keyslot_area_jobj_update_block_size
    - log_err
    - json_object_get
    - reencrypt_keyslot_area_jobj
    - LUKS2_keyslot_jobj_area
    - json_object_put
    - reenc_keyslot_update_is_valid
    linkageType: ''
    returnType: int
    signature: "int reenc_keyslot_update(struct crypt_device *cd,\n\tjson_object *jobj_keyslot,\n\tconst
      struct crypt_params_reencrypt *params,\n\tsize_t alignment)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reenc_keyslot_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:623,1
    - Dst: LUKS2_keyslot_priority_set
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:627,1
    - Dst: reenc_keyslot_validate
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:631,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:631,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot
    - params
    - alignment
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - struct crypt_params_reencrypt*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 612
    functionDepth: 3
    functionLinenumber: 612
    functionLinenumberEnd: 638
    functionName: LUKS2_keyslot_reencrypt_allocate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - LUKS2_keyslot_priority_set
    - reenc_keyslot_validate
    - reenc_keyslot_alloc
    - log_dbg
    - LUKS2_get_keyslot_jobj
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_reencrypt_allocate(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint keyslot,\n\tconst struct crypt_params_reencrypt *params,\n\tsize_t
      alignment)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:647,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:650,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:651,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:651,1
    - Dst: reenc_keyslot_update_needed
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:654,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:656,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot
    - params
    - alignment
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - struct crypt_params_reencrypt*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 659
    functionName: LUKS2_keyslot_reencrypt_update_needed
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - log_dbg
    - reenc_keyslot_update_needed
    - LUKS2_get_keyslot_jobj
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_reencrypt_update_needed(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint keyslot,\n\tconst struct crypt_params_reencrypt *params,\n\tsize_t
      alignment)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:671,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:675,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:676,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:676,1
    - Dst: LUKS2_config_get_reencrypt_version
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:679,1
    - Dst: LUKS2_reencrypt_digest_verify
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:683,1
    - Dst: reenc_keyslot_update
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:687,1
    - Dst: reenc_keyslot_load_resilience
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:691,1
    - Dst: LUKS2_reencrypt_max_hotzone_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:696,1
    - Dst: LUKS2_reencrypt_protection_erase
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:697,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:700,1
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:700,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:704,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:704,1
    - Dst: LUKS2_keyslot_reencrypt_digest_create
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:712,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:714,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:714,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:716,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 6
    argNames:
    - cd
    - hdr
    - keyslot
    - params
    - alignment
    - vks
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - struct crypt_params_reencrypt*
    - size_t
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 661
    functionDepth: 4
    functionLinenumber: 661
    functionLinenumberEnd: 717
    functionName: LUKS2_keyslot_reencrypt_update
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - LUKS2_hdr_write
    - _
    - json_object_object_get_ex
    - LUKS2_reencrypt_max_hotzone_size
    - LUKS2_get_segment_by_flag
    - LUKS2_reencrypt_digest_verify
    - LUKS2_keyslot_reencrypt_digest_create
    - json_segment_get_size
    - LUKS2_reencrypt_protection_erase
    - log_err
    - reenc_keyslot_load_resilience
    - LUKS2_get_keyslot_jobj
    - LUKS2_config_get_reencrypt_version
    - reenc_keyslot_update
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_reencrypt_update(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint keyslot,\n\tconst struct crypt_params_reencrypt *params,\n\tsize_t
      alignment,\n\tstruct volume_key *vks)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:725,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:728,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:729,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:729,1
    - Dst: reenc_keyslot_load_resilience
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c:732,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot
    - rp
    - primary
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - struct reenc_protection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 719
    functionDepth: 4
    functionLinenumber: 719
    functionLinenumberEnd: 733
    functionName: LUKS2_keyslot_reencrypt_load
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - reenc_keyslot_load_resilience
    - LUKS2_get_keyslot_jobj
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_reencrypt_load(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint keyslot,\n\tstruct reenc_protection *rp,\n\tbool primary)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - keylength
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 21
    functionName: get_area_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 0
    functionsReached:
    - size_round_up
    linkageType: ''
    returnType: size_t
    signature: size_t get_area_size(size_t keylength)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: get_min_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t get_min_offset(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_hdr_and_areas_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: get_max_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 0
    functionsReached:
    - LUKS2_hdr_and_areas_size
    linkageType: ''
    returnType: size_t
    signature: size_t get_max_offset(struct luks2_hdr *hdr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_keyslot_area
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:42,1
    - Dst: get_max_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:51,1
    - Dst: get_max_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:69,1
    - Dst: get_min_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:74,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:91,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:91,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:92,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:92,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:95,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:99,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 4
    argNames:
    - cd
    - hdr
    - area_offset
    - area_length
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint64_t*
    - uint64_t*
    assertStmts:
    - condition: (length == size_round_up(length, 4096))
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
    - condition: (valid_offset == size_round_up(valid_offset, 4096))
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
    constantsTouched: []
    func_position:
      end: 105
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 105
    functionName: LUKS2_find_area_max_gap
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 1
    functionsReached:
    - get_max_offset
    - size_round_up
    - assert
    - log_dbg
    - get_min_offset
    - LUKS2_keyslot_area
    linkageType: ''
    returnType: int
    signature: "int LUKS2_find_area_max_gap(struct crypt_device *cd, struct luks2_hdr
      *hdr,\n\t\t\tuint64_t *area_offset, uint64_t *area_length)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_keyslot_area
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:116,1
    - Dst: get_max_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:125,1
    - Dst: get_min_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:144,1
    - Dst: get_area_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:145,1
    - Dst: get_max_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:159,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:160,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:164,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 43
    argCount: 5
    argNames:
    - cd
    - hdr
    - keylength
    - area_offset
    - area_length
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - size_t
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 172
    functionName: LUKS2_find_area_gap
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 1
    functionsReached:
    - get_max_offset
    - log_dbg
    - get_min_offset
    - LUKS2_keyslot_area
    - get_area_size
    linkageType: ''
    returnType: int
    signature: "int LUKS2_find_area_gap(struct crypt_device *cd, struct luks2_hdr
      *hdr,\n\t\t\tsize_t keylength, uint64_t *area_offset, uint64_t *area_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 2
    argCount: 1
    argNames:
    - metadata_size
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 182
    functionName: LUKS2_check_metadata_area_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int LUKS2_check_metadata_area_size(uint64_t metadata_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MISALIGNED_4K
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - keyslots_size
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: LUKS2_check_keyslots_area_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 1
    functionsReached:
    - MISALIGNED_4K
    linkageType: ''
    returnType: int
    signature: int LUKS2_check_keyslots_area_size(uint64_t keyslots_size)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:210,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:214,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:219,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:219,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:225,1
    - Dst: strcpy
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:226,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:227,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:228,1
    - Dst: uuid_parse
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:230,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:231,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:231,1
    - Dst: uuid_generate
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:235,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:237,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:239,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:245,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:251,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:252,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:252,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:253,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:259,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:260,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:260,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:261,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:267,1
    - Dst: LUKS2_digest_create
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:269,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:275,1
    - Dst: json_segment_create_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:281,1
    - Dst: json_segment_create_opal_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:286,1
    - Dst: json_segment_create_opal
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:291,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:299,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:300,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:305,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:305,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:306,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:306,1
    - Dst: JSON_DBG
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:308,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:311,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 84
    argCount: 14
    argNames:
    - cd
    - hdr
    - vk
    - cipher_spec
    - integrity
    - integrity_key_size
    - uuid
    - sector_size
    - data_offset
    - metadata_size_bytes
    - keyslots_size_bytes
    - device_size_bytes
    - opal_segment_number
    - opal_key_size
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct volume_key*
    - char*
    - char*
    - uint32_t
    - char*
    - unsigned int
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t
    - uint32_t
    - uint32_t
    assertStmts:
    - condition: (cipher_spec || (opal_key_size > 0 && device_size_bytes))
      pos:
        line_end: 209
        line_start: 209
        source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
    constantsTouched: []
    func_position:
      end: 314
      start: 190
    functionDepth: 4
    functionLinenumber: 190
    functionLinenumberEnd: 314
    functionName: LUKS2_generate_hdr
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 2
    functionsReached:
    - memset
    - json_segment_create_opal_crypt
    - uuid_parse
    - json_object_object_add_by_uint
    - uuid_unparse
    - log_dbg
    - json_segment_create_crypt
    - json_object_put
    - json_segment_create_opal
    - JSON_DBG
    - log_std
    - LUKS2_digest_segment_assign
    - json_object_new_object
    - log_err
    - _
    - crypt_jobj_new_uint64
    - json_object_object_add
    - uuid_generate
    - assert
    - crypt_random_get
    - strcpy
    - LUKS2_digest_create
    linkageType: ''
    returnType: int
    signature: "int LUKS2_generate_hdr(\n\tstruct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tconst struct volume_key *vk,\n\tconst char *cipher_spec,\n\tconst char
      *integrity,\n\tuint32_t integrity_key_size, /* in bytes, only if separate (HMAC)
      */\n\tconst char *uuid,\n\tunsigned int sector_size,  /* in bytes */\n\tuint64_t
      data_offset,      /* in bytes */\n\tuint64_t metadata_size_bytes,\n\tuint64_t
      keyslots_size_bytes,\n\tuint64_t device_size_bytes,\n\tuint32_t opal_segment_number,\n\tuint32_t
      opal_key_size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_hdr_validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:323,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:326,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:326,1
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:331,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:339,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:342,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:342,1
    - Dst: device_check_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:348,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:348,1
    - Dst: LUKS2_hdr_and_areas_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:349,1
    - Dst: get_min_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:354,1
    - Dst: LUKS2_keyslots_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:355,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:365,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:368,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:368,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 316
    functionDepth: 7
    functionLinenumber: 316
    functionLinenumberEnd: 370
    functionName: LUKS2_wipe_header_areas
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 3
    functionsReached:
    - LUKS2_get_data_offset
    - LUKS2_hdr_and_areas_size
    - LUKS2_keyslots_size
    - device_size
    - LUKS2_hdr_validate
    - crypt_metadata_device
    - log_dbg
    - get_min_offset
    - crypt_wipe_device
    - device_check_size
    linkageType: ''
    returnType: int
    signature: "int LUKS2_wipe_header_areas(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_min_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:377,1
    - Dst: get_min_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:380,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:389,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:392,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:392,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - hdr
    - data_offset
    argTypes:
    - struct luks2_hdr*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 394
    functionName: LUKS2_set_keyslots_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_new_uint64
    - json_object_object_get_ex
    - get_min_offset
    - json_object_object_add
    linkageType: ''
    returnType: int
    signature: int LUKS2_set_keyslots_size(struct luks2_hdr *hdr, uint64_t data_offset)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:405,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:406,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:407,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:408,1
    - Dst: crypt_get_metadata_size_bytes
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:410,1
    - Dst: crypt_get_keyslots_size_bytes
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:411,1
    - Dst: crypt_get_data_offset_sectors
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:412,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:418,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:418,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:433,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:436,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:436,1
    - Dst: device_fallocate
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:438,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:438,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:446,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:453,1
    - Dst: crypt_get_metadata_size_bytes
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:458,1
    - Dst: crypt_get_metadata_size_bytes
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:458,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:459,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:459,1
    - Dst: crypt_get_keyslots_size_bytes
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:462,1
    - Dst: crypt_get_keyslots_size_bytes
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:462,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:463,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_format.c:463,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 6
    argNames:
    - cd
    - alignment_offset_bytes
    - alignment_bytes
    - ret_metadata_size_bytes
    - ret_keyslots_size_bytes
    - ret_data_offset_bytes
    argTypes:
    - struct crypt_device*
    - uint64_t
    - uint64_t
    - uint64_t*
    - uint64_t*
    - uint64_t*
    assertStmts:
    - condition: (LUKS2_DEFAULT_HDR_SIZE > 2 * LUKS2_HDR_OFFSET_MAX)
      pos:
        line_end: 432
        line_start: 432
        source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
    - condition: (ret_data_offset_bytes)
      pos:
        line_end: 407
        line_start: 407
        source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
    - condition: (ret_metadata_size_bytes)
      pos:
        line_end: 405
        line_start: 405
        source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
    - condition: (cd)
      pos:
        line_end: 404
        line_start: 404
        source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
    - condition: (ret_keyslots_size_bytes)
      pos:
        line_end: 406
        line_start: 406
        source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
    constantsTouched: []
    func_position:
      end: 471
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 471
    functionName: LUKS2_hdr_get_storage_params
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_format.c
    functionUses: 2
    functionsReached:
    - crypt_get_data_offset_sectors
    - _
    - log_std
    - crypt_get_metadata_size_bytes
    - device_size
    - crypt_metadata_device
    - device_fallocate
    - assert
    - log_err
    - log_dbg
    - size_round_up
    - crypt_get_keyslots_size_bytes
    linkageType: ''
    returnType: int
    signature: "int LUKS2_hdr_get_storage_params(struct crypt_device *cd,\n\t\t\t
      \   uint64_t alignment_offset_bytes,\n\t\t\t    uint64_t alignment_bytes,\n\t\t\t
      \   uint64_t *ret_metadata_size_bytes,\n\t\t\t    uint64_t *ret_keyslots_size_bytes,\n\t\t\t
      \   uint64_t *ret_data_offset_bytes)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:29,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:29,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:33,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:35,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:37,1
    - Dst: json_object_get_int64
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:39,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:41,1
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:43,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:43,1
    - Dst: json_object_get_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:44,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:50,1
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:52,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:52,1
    - Dst: json_object_get_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:53,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:58,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:62,1
    - Dst: crypt_backend_memeq
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:68,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:72,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:73,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 4
    argNames:
    - cd
    - digest
    - volume_key
    - volume_key_len
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 75
    functionName: PBKDF2_digest_verify
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - json_object_object_get_ex
    - crypt_hash_size
    - free
    - crypt_base64_decode
    - json_object_get_string_len
    - crypt_backend_memeq
    - crypt_pbkdf
    - json_object_get_int64
    - json_object_get_string
    - LUKS2_get_digest_jobj
    linkageType: ''
    returnType: int
    signature: "int PBKDF2_digest_verify(struct crypt_device *cd,\n\tint digest,\n\tconst
      char *volume_key,\n\tsize_t volume_key_len)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:95,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:101,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:103,1
    - Dst: crypt_pbkdf_get_limits
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:107,1
    - Dst: crypt_get_pbkdf
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:111,1
    - Dst: crypt_benchmark_pbkdf_internal
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:114,1
    - Dst: crypt_hmac_size
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:119,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:123,1
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:129,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:129,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:132,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:133,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:134,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:140,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:140,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:141,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:141,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:142,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:142,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:143,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:143,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:144,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:144,1
    - Dst: crypt_base64_encode
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:146,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:148,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:151,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:151,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:152,1
    - Dst: crypt_base64_encode
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:154,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:156,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:159,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:159,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:160,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:163,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:165,1
    - Dst: JSON_DBG
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:170,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 62
    argCount: 4
    argNames:
    - cd
    - digest
    - volume_key
    - volume_key_len
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 77
    functionDepth: 5
    functionLinenumber: 77
    functionLinenumberEnd: 172
    functionName: PBKDF2_digest_store
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c
    functionUses: 0
    functionsReached:
    - json_object_new_string
    - json_object_object_add_by_uint
    - LUKS2_get_digest_jobj
    - free
    - crypt_benchmark_pbkdf_internal
    - log_dbg
    - crypt_pbkdf
    - crypt_get_pbkdf
    - json_object_put
    - crypt_hmac_size
    - crypt_get_hdr
    - JSON_DBG
    - json_object_new_object
    - crypt_get_pbkdf_type
    - crypt_base64_encode
    - json_object_new_array
    - json_object_object_get_ex
    - json_object_object_add
    - crypt_random_get
    - json_object_new_int
    - crypt_pbkdf_get_limits
    linkageType: ''
    returnType: int
    signature: "int PBKDF2_digest_store(struct crypt_device *cd,\n\tint digest,\n\tconst
      char *volume_key,\n\tsize_t volume_key_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:179,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:179,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:183,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:184,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:184,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:186,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:187,1
    - Dst: json_object_get_int64
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:187,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:189,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:190,1
    - Dst: hexprint_base64
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:191,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:193,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:194,1
    - Dst: hexprint_base64
      Src: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - cd
    - digest
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 198
    functionName: PBKDF2_digest_dump
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - json_object_object_get_ex
    - log_std
    - json_object_get_int64
    - hexprint_base64
    - json_object_get_string
    - LUKS2_get_digest_jobj
    linkageType: ''
    returnType: int
    signature: int PBKDF2_digest_dump(struct crypt_device *cd, int digest)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS_encrypt_to_storage
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:28,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:32,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:35,1
    - Dst: crypt_storage_init
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:39,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:40,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:40,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:42,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:42,1
    - Dst: crypt_storage_encrypt
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:46,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:47,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:49,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:49,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:53,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:55,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:55,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:56,1
    - Dst: device_sync
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:62,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:67,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:67,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 7
    argNames:
    - src
    - srcLength
    - cipher
    - cipher_mode
    - vk
    - sector
    - cd
    argTypes:
    - char*
    - size_t
    - char*
    - char*
    - struct volume_key*
    - unsigned int
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 22
    functionDepth: 9
    functionLinenumber: 22
    functionLinenumberEnd: 71
    functionName: luks2_encrypt_to_storage
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - _
    - device_sync
    - crypt_storage_encrypt
    - LUKS_encrypt_to_storage
    - crypt_metadata_device
    - crypt_volume_key_get_key
    - crypt_storage_destroy
    - crypt_storage_init
    - log_err
    - device_block_size
    - MISALIGNED_512
    - device_open_locked
    - device_alignment
    - write_lseek_blockwise
    linkageType: ''
    returnType: int
    signature: "int luks2_encrypt_to_storage(char *src, size_t srcLength,\n\tconst
      char *cipher, const char *cipher_mode,\n\tstruct volume_key *vk, unsigned int
      sector,\n\tstruct crypt_device *cd)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:77,1
    - Dst: device_read_lock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:79,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:81,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:81,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:81,1
    - Dst: LUKS_decrypt_from_storage
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:84,1
    - Dst: device_read_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:85,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:85,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:92,1
    - Dst: crypt_storage_init
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:95,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:96,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:97,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:99,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:99,1
    - Dst: device_read_lock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:103,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:105,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:105,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:106,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:107,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:111,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:113,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:113,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:114,1
    - Dst: device_read_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:122,1
    - Dst: crypt_storage_decrypt
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:126,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:128,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:128,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:130,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 7
    argNames:
    - dst
    - dstLength
    - cipher
    - cipher_mode
    - vk
    - sector
    - cd
    argTypes:
    - char*
    - size_t
    - char*
    - char*
    - struct volume_key*
    - unsigned int
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 73
    functionDepth: 9
    functionLinenumber: 73
    functionLinenumberEnd: 133
    functionName: luks2_decrypt_from_storage
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - device_read_unlock
    - crypt_volume_key_length
    - _
    - crypt_metadata_device
    - crypt_volume_key_get_key
    - device_read_lock
    - crypt_storage_destroy
    - log_err
    - device_path
    - crypt_storage_init
    - MISALIGNED_512
    - LUKS_decrypt_from_storage
    - read_lseek_blockwise
    - crypt_storage_decrypt
    - device_open_locked
    - device_alignment
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int luks2_decrypt_from_storage(char *dst, size_t dstLength,\n\tconst
      char *cipher, const char *cipher_mode, struct volume_key *vk,\n\tunsigned int
      sector, struct crypt_device *cd)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:145,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:147,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:150,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:152,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:153,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:154,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:156,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:157,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:159,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:163,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:165,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:166,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:168,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:169,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:171,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:174,1
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:177,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:177,1
    - Dst: json_object_get_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:178,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:183,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 3
    argNames:
    - jobj_keyslot
    - pbkdf
    - salt
    argTypes:
    - json_object*
    - struct crypt_pbkdf_type*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 188
    functionName: luks2_keyslot_get_pbkdf_params
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - memset
    - json_object_object_get_ex
    - free
    - crypt_base64_decode
    - json_object_get_string_len
    - json_object_get_int
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_get_pbkdf_params(json_object *jobj_keyslot,\n\t\t
      \               struct crypt_pbkdf_type *pbkdf, char **salt)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:206,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:207,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:208,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:212,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:214,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:217,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:219,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:221,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:223,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:223,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:227,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:229,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:231,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:233,1
    - Dst: luks2_keyslot_get_pbkdf_params
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:235,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:242,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:244,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:250,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:251,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:256,1
    - Dst: crypt_backend_flags
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:258,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:260,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:260,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:262,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:262,1
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:267,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:268,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:274,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:276,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:276,1
    - Dst: AF_split
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:278,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:283,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:289,1
    - Dst: luks2_encrypt_to_storage
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:291,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:294,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:295,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:296,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 70
    argCount: 6
    argNames:
    - cd
    - jobj_keyslot
    - password
    - passwordLen
    - volume_key
    - volume_key_len
    argTypes:
    - struct crypt_device*
    - json_object*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 190
    functionDepth: 10
    functionLinenumber: 190
    functionLinenumberEnd: 301
    functionName: luks2_keyslot_set_key
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_hash_size
    - crypt_backend_flags
    - free
    - log_dbg
    - crypt_pbkdf
    - AF_split
    - luks2_encrypt_to_storage
    - crypt_parse_name_and_mode
    - crypt_free_volume_key
    - luks2_keyslot_get_pbkdf_params
    - crypt_safe_free
    - log_err
    - crypt_jobj_get_uint64
    - AF_split_sectors
    - crypt_alloc_volume_key_by_safe_alloc
    - _
    - json_object_object_get_ex
    - json_object_get_int
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_set_key(struct crypt_device *cd,\n\tjson_object
      *jobj_keyslot,\n\tconst char *password, size_t passwordLen,\n\tconst char *volume_key,
      size_t volume_key_len)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:321,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:322,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:325,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:327,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:329,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:331,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:333,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:335,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:335,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:340,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:343,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:345,1
    - Dst: luks2_keyslot_get_pbkdf_params
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:347,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:354,1
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:360,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:361,1
    - Dst: crypt_serialize_lock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:372,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:378,1
    - Dst: crypt_pbkdf
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:379,1
    - Dst: crypt_serialize_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:386,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:391,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:397,1
    - Dst: luks2_decrypt_from_storage
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:399,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:403,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:405,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:405,1
    - Dst: AF_merge
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:407,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:410,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:411,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:412,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:413,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 68
    argCount: 6
    argNames:
    - cd
    - jobj_keyslot
    - password
    - passwordLen
    - volume_key
    - volume_key_len
    argTypes:
    - struct crypt_device*
    - json_object*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 303
    functionDepth: 10
    functionLinenumber: 303
    functionLinenumberEnd: 416
    functionName: luks2_keyslot_get_key
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_hash_size
    - luks2_decrypt_from_storage
    - crypt_serialize_lock
    - crypt_serialize_unlock
    - AF_merge
    - free
    - log_dbg
    - crypt_pbkdf
    - crypt_parse_name_and_mode
    - crypt_free_volume_key
    - luks2_keyslot_get_pbkdf_params
    - crypt_safe_free
    - log_err
    - crypt_jobj_get_uint64
    - AF_split_sectors
    - crypt_is_cipher_null
    - crypt_alloc_volume_key_by_safe_alloc
    - _
    - json_object_object_get_ex
    - json_object_get_int
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_get_key(struct crypt_device *cd,\n\tjson_object
      *jobj_keyslot,\n\tconst char *password, size_t passwordLen,\n\tchar *volume_key,
      size_t volume_key_len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:435,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:436,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:440,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:440,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:441,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:441,1
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:443,1
    - Dst: crypt_benchmark_pbkdf_internal
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:447,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:447,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:452,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:455,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:455,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:456,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:457,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:457,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:458,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:458,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:460,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:460,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:461,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:461,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:462,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:462,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:464,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:469,1
    - Dst: crypt_base64_encode
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:472,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:475,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:475,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:476,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:479,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:479,1
    - Dst: JSON_DBG
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:481,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 3
    argNames:
    - cd
    - jobj_keyslot
    - params
    argTypes:
    - struct crypt_device*
    - json_object*
    - struct luks2_keyslot_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 424
    functionDepth: 5
    functionLinenumber: 424
    functionLinenumberEnd: 483
    functionName: luks2_keyslot_update_json
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - strcmp
    - JSON_DBG
    - json_object_object_get_ex
    - free
    - json_object_object_add
    - json_object_new_string
    - crypt_benchmark_pbkdf_internal
    - json_object_new_object
    - json_object_new_int
    - crypt_random_get
    - crypt_get_pbkdf_type
    - CONST_CAST
    - crypt_base64_encode
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_update_json(struct crypt_device *cd,\n\tjson_object
      *jobj_keyslot,\n\tconst struct luks2_keyslot_params *params)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:495,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:499,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:503,1
    - Dst: LUKS2_keyslot_find_empty
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:507,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:512,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:513,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:517,1
    - Dst: LUKS2_find_area_gap
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:520,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:522,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:522,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:526,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:532,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:532,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:533,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:533,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:536,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:542,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:542,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:543,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:543,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:544,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:547,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:553,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:553,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:554,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:554,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:555,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:555,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:556,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:558,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:560,1
    - Dst: luks2_keyslot_update_json
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:564,1
    - Dst: LUKS2_check_json_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:566,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:567,1
    - Dst: json_object_object_del_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:572,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:576,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 67
    argCount: 4
    argNames:
    - cd
    - keyslot
    - volume_key_len
    - params
    argTypes:
    - struct crypt_device*
    - int
    - size_t
    - struct luks2_keyslot_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 485
    functionDepth: 6
    functionLinenumber: 485
    functionLinenumberEnd: 578
    functionName: luks2_keyslot_alloc
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - json_object_object_get_ex
    - LUKS2_find_area_gap
    - _
    - json_object_object_add
    - crypt_jobj_new_uint64
    - LUKS2_check_json_size
    - json_object_new_string
    - LUKS2_keyslot_find_empty
    - json_object_new_object
    - json_object_object_del_by_uint
    - json_object_new_int
    - log_dbg
    - log_err
    - LUKS2_get_keyslot_jobj
    - json_object_object_add_by_uint
    - json_object_put
    - luks2_keyslot_update_json
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_alloc(struct crypt_device *cd,\n\tint keyslot,\n\tsize_t
      volume_key_len,\n\tconst struct luks2_keyslot_params *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:590,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:592,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:595,1
    - Dst: luks2_keyslot_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 6
    argNames:
    - cd
    - keyslot
    - password
    - password_len
    - volume_key
    - volume_key_len
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 580
    functionDepth: 11
    functionLinenumber: 580
    functionLinenumberEnd: 602
    functionName: luks2_keyslot_open
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - LUKS2_get_keyslot_jobj
    - crypt_get_hdr
    - luks2_keyslot_get_key
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_open(struct crypt_device *cd,\n\tint keyslot,\n\tconst
      char *password,\n\tsize_t password_len,\n\tchar *volume_key,\n\tsize_t volume_key_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:619,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:621,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:624,1
    - Dst: LUKS2_device_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:628,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:628,1
    - Dst: luks2_keyslot_set_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:632,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:636,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:638,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:638,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - cd
    - keyslot
    - password
    - password_len
    - volume_key
    - volume_key_len
    argTypes:
    - struct crypt_device*
    - int
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 608
    functionDepth: 11
    functionLinenumber: 608
    functionLinenumberEnd: 641
    functionName: luks2_keyslot_store
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - LUKS2_hdr_write
    - crypt_get_hdr
    - LUKS2_device_write_lock
    - crypt_metadata_device
    - luks2_keyslot_set_key
    - log_dbg
    - device_write_unlock
    - LUKS2_get_keyslot_jobj
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_store(struct crypt_device *cd,\n\tint keyslot,\n\tconst
      char *password,\n\tsize_t password_len,\n\tconst char *volume_key,\n\tsize_t
      volume_key_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:647,1
    - Dst: LUKS2_digest_assign
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:651,1
    - Dst: LUKS2_token_assign
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:652,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 643
    functionDepth: 2
    functionLinenumber: 643
    functionLinenumberEnd: 655
    functionName: luks2_keyslot_wipe
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - LUKS2_digest_assign
    - LUKS2_token_assign
    linkageType: ''
    returnType: int
    signature: int luks2_keyslot_wipe(struct crypt_device *cd, int keyslot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:661,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:661,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:665,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:666,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:667,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:670,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:671,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:671,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:673,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:674,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:674,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:676,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:677,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:677,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:679,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:679,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:680,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:681,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:681,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:683,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:684,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:684,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:686,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:687,1
    - Dst: json_object_get_int64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:687,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:689,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:690,1
    - Dst: json_object_get_int64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:690,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:692,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:693,1
    - Dst: json_object_get_int64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:693,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:695,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:696,1
    - Dst: hexprint_base64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:697,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:700,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:701,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:701,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:703,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:704,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:704,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:706,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:707,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:707,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:709,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:710,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:710,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 657
    functionDepth: 2
    functionLinenumber: 657
    functionLinenumberEnd: 713
    functionName: luks2_keyslot_dump
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - json_object_object_get_ex
    - log_std
    - crypt_jobj_get_uint32
    - LUKS2_get_keyslot_jobj
    - crypt_jobj_get_uint64
    - json_object_get_int
    - json_object_get_int64
    - hexprint_base64
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int luks2_keyslot_dump(struct crypt_device *cd, int keyslot)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:724,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:725,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:726,1
    - Dst: json_object_object_length
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:729,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:731,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:734,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:736,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:738,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:739,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:740,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:742,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:742,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:744,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:745,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:746,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:747,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:751,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:754,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:756,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:757,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:758,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:764,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:767,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:769,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:770,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:771,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:772,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:773,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 37
    argCount: 2
    argNames:
    - cd
    - jobj_keyslot
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 779
    functionName: luks2_keyslot_validate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - json_object_object_length
    - json_contains
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int luks2_keyslot_validate(struct crypt_device *cd, json_object *jobj_keyslot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:789,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:791,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:794,1
    - Dst: luks2_keyslot_update_json
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:798,1
    - Dst: LUKS2_check_json_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:800,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:801,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - cd
    - keyslot
    - params
    argTypes:
    - struct crypt_device*
    - int
    - struct luks2_keyslot_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 781
    functionDepth: 6
    functionLinenumber: 781
    functionLinenumberEnd: 806
    functionName: luks2_keyslot_update
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - LUKS2_check_json_size
    - log_dbg
    - LUKS2_get_keyslot_jobj
    - luks2_keyslot_update_json
    linkageType: ''
    returnType: int
    signature: "int luks2_keyslot_update(struct crypt_device *cd,\n\tint keyslot,\n\tconst
      struct luks2_keyslot_params *params)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:813,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:814,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:817,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:818,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:821,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:823,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:826,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:827,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:827,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:828,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:828,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:830,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:832,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:832,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:835,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:836,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:836,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:837,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:837,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:838,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:840,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 20
    argCount: 1
    argNames:
    - jobj_keyslot
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 808
    functionDepth: 0
    functionLinenumber: 808
    functionLinenumberEnd: 843
    functionName: luks2_keyslot_repair
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_object_del
    - json_object_is_type
    - strcmp
    - json_object_get_string
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void luks2_keyslot_repair(json_object *jobj_keyslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:826,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:827,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:827,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:828,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:828,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:830,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 831
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - json_object_object_del
    - strcmp
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_kdf, key, val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:835,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:836,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:836,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:837,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:837,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:838,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c:840,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 834
    functionDepth: 0
    functionLinenumber: 834
    functionLinenumberEnd: 841
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
    functionUses: 0
    functionsReached:
    - json_object_object_del
    - strcmp
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_kdf, key, val)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:27,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:30,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:35,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:37,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:37,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:41,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:41,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:44,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:48,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:48,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:49,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:53,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:55,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:55,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:56,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:58,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:58,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:61,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:61,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:63,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:67,1
    - Dst: cpu_to_be32
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:71,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:71,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:72,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 2
    argNames:
    - j
    - ptr
    argTypes:
    - struct jtype*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 80
    functionName: sr
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 0
    functionsReached:
    - cpu_to_be32
    - json_object_object_get_ex
    - memcpy
    - strlen
    - crypt_jobj_get_uint32
    - cpu_to_be64
    - crypt_jobj_get_uint64
    - json_object_is_type
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: size_t
    signature: size_t sr(struct jtype *j, uint8_t *ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sr
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - j
    - ptr
    argTypes:
    - struct jtype[]
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 96
    functionName: srs
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 0
    functionsReached:
    - sr
    linkageType: ''
    returnType: size_t
    signature: size_t srs(struct jtype j[], uint8_t *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srs
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jobj_segment
    - buffer
    argTypes:
    - json_object*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 98
    functionDepth: 3
    functionLinenumber: 98
    functionLinenumberEnd: 107
    functionName: segment_linear_serialize
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 0
    functionsReached:
    - srs
    linkageType: ''
    returnType: size_t
    signature: size_t segment_linear_serialize(json_object *jobj_segment, uint8_t
      *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srs
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jobj_segment
    - buffer
    argTypes:
    - json_object*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 121
    functionName: segment_crypt_serialize
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 0
    functionsReached:
    - srs
    linkageType: ''
    returnType: size_t
    signature: size_t segment_crypt_serialize(json_object *jobj_segment, uint8_t *buffer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:128,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:131,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:134,1
    - Dst: segment_crypt_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:135,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:136,1
    - Dst: segment_linear_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - jobj_segment
    - buffer
    argTypes:
    - json_object*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 123
    functionDepth: 4
    functionLinenumber: 123
    functionLinenumberEnd: 140
    functionName: segment_serialize
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - segment_crypt_serialize
    - segment_linear_serialize
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: size_t
    signature: size_t segment_serialize(json_object *jobj_segment, uint8_t *buffer)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:147,1
    - Dst: segment_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:148,1
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:154,1
    - Dst: segment_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:155,1
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:161,1
    - Dst: segment_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:163,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - hdr
    - buffer
    argTypes:
    - struct luks2_hdr*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 142
    functionDepth: 5
    functionLinenumber: 142
    functionLinenumberEnd: 169
    functionName: backup_segments_serialize
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 0
    functionsReached:
    - segment_serialize
    - LUKS2_get_segment_by_flag
    linkageType: ''
    returnType: size_t
    signature: size_t backup_segments_serialize(struct luks2_hdr *hdr, uint8_t *buffer)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:177,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:181,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:184,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:187,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:190,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:232,1
    - Dst: srs
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:233,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:234,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:235,1
    - Dst: srs
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:236,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:237,1
    - Dst: srs
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:238,1
    - Dst: srs
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:240,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - hdr
    - buffer
    argTypes:
    - struct luks2_hdr*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 241
    functionName: reenc_keyslot_serialize
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_find_keyslot
    - srs
    - LUKS2_get_keyslot_jobj
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: size_t
    signature: size_t reenc_keyslot_serialize(struct luks2_hdr *hdr, uint8_t *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - blob
    - length
    - buffer
    argTypes:
    - void*
    - size_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 249
    functionName: blob_serialize
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 0
    functionsReached:
    - crypt_safe_memcpy
    linkageType: ''
    returnType: size_t
    signature: size_t blob_serialize(const void *blob, size_t length, uint8_t *buffer)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:266,1
    - Dst: LUKS2_reencrypt_digest_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:269,1
    - Dst: LUKS2_reencrypt_digest_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:270,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:273,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:275,1
    - Dst: blob_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:278,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:278,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:278,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:282,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:284,1
    - Dst: blob_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:287,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:287,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:287,1
    - Dst: reenc_keyslot_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:294,1
    - Dst: backup_segments_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:298,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:303,1
    - Dst: blob_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:313,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:313,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:314,1
    - Dst: blob_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:317,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:317,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:318,1
    - Dst: reenc_keyslot_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:320,1
    - Dst: backup_segments_serialize
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:324,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:328,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:330,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:339,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:340,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 60
    argCount: 5
    argNames:
    - cd
    - hdr
    - vks
    - version
    - r_verification_data
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct volume_key*
    - uint8_t
    - struct volume_key**
    assertStmts:
    - condition: ((size_t)(ptr - (uint8_t*)data) == data_len)
      pos:
        line_end: 327
        line_start: 327
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    - condition: (version < (UINT8_MAX - 0x2F))
      pos:
        line_end: 265
        line_start: 265
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    constantsTouched: []
    func_position:
      end: 342
      start: 251
    functionDepth: 6
    functionLinenumber: 251
    functionLinenumberEnd: 342
    functionName: reencrypt_assembly_verification_data
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 0
    functionsReached:
    - backup_segments_serialize
    - reenc_keyslot_serialize
    - crypt_alloc_volume_key_by_safe_alloc
    - crypt_volume_key_length
    - crypt_safe_alloc
    - LUKS2_reencrypt_digest_old
    - crypt_free_volume_key
    - crypt_volume_key_get_key
    - LUKS2_reencrypt_digest_new
    - crypt_volume_key_by_id
    - log_dbg
    - assert
    - crypt_safe_free
    - blob_serialize
    linkageType: ''
    returnType: int
    signature: "int reencrypt_assembly_verification_data(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tstruct volume_key *vks,\n\tuint8_t version,\n\tstruct volume_key
      **r_verification_data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:352,1
    - Dst: reencrypt_assembly_verification_data
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:356,1
    - Dst: LUKS2_digest_create
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:360,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:361,1
    - Dst: LUKS2_digest_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:367,1
    - Dst: LUKS2_digest_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:371,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - cd
    - hdr
    - version
    - vks
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint8_t
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 344
    functionDepth: 7
    functionLinenumber: 344
    functionLinenumberEnd: 372
    functionName: LUKS2_keyslot_reencrypt_digest_create
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 1
    functionsReached:
    - LUKS2_digest_assign
    - LUKS2_find_keyslot
    - crypt_free_volume_key
    - reencrypt_assembly_verification_data
    - LUKS2_digest_create
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_reencrypt_digest_create(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tuint8_t version,\n\tstruct volume_key *vks)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:382,1
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:384,1
    - Dst: LUKS2_config_get_reencrypt_version
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:388,1
    - Dst: reencrypt_assembly_verification_data
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:391,1
    - Dst: LUKS2_digest_verify
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:395,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:396,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:400,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:401,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:401,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c:403,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - cd
    - hdr
    - vks
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 374
    functionDepth: 7
    functionLinenumber: 374
    functionLinenumberEnd: 406
    functionName: LUKS2_reencrypt_digest_verify
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    functionUses: 3
    functionsReached:
    - _
    - LUKS2_find_keyslot
    - crypt_free_volume_key
    - reencrypt_assembly_verification_data
    - log_dbg
    - log_err
    - LUKS2_digest_verify
    - LUKS2_config_get_reencrypt_version
    linkageType: ''
    returnType: int
    signature: "int LUKS2_reencrypt_digest_verify(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tstruct volume_key *vks)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rp
    argTypes:
    - struct reenc_protection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: data_shift_value
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t data_shift_value(struct reenc_protection *rp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hdr
    - new
    argTypes:
    - struct luks2_hdr*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: reencrypt_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_segment_by_flag
    linkageType: ''
    returnType: json_object
    signature: json_object *reencrypt_segment(struct luks2_hdr *hdr, unsigned new)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: reencrypt_segment_new
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_segment
    linkageType: ''
    returnType: json_object
    signature: json_object *reencrypt_segment_new(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: reencrypt_segment_old
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_segment
    linkageType: ''
    returnType: json_object
    signature: json_object *reencrypt_segment_old(struct luks2_hdr *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:86,1
    - Dst: reencrypt_segment_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:86,1
    - Dst: json_segment_remove_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:89,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:91,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:93,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:97,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:98,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 104
    functionName: reencrypt_segments_old
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_segment_old
    - json_object_copy
    - json_object_new_object
    - json_segment_remove_flag
    - json_object_object_add_by_uint
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: json_object *reencrypt_segments_old(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:108,1
    - Dst: reencrypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: reencrypt_segment_cipher_new
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_get_cipher
    - reencrypt_segment
    linkageType: ''
    returnType: char
    signature: char *reencrypt_segment_cipher_new(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:113,1
    - Dst: reencrypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: reencrypt_segment_cipher_old
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_get_cipher
    - reencrypt_segment
    linkageType: ''
    returnType: char
    signature: char *reencrypt_segment_cipher_old(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:118,1
    - Dst: reencrypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 119
    functionName: reencrypt_get_sector_size_new
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_segment
    - json_segment_get_sector_size
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t reencrypt_get_sector_size_new(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:123,1
    - Dst: reencrypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: reencrypt_get_sector_size_old
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_segment
    - json_segment_get_sector_size
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t reencrypt_get_sector_size_old(struct luks2_hdr *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:128,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:130,1
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - new
    argTypes:
    - struct luks2_hdr*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 133
    functionName: reencrypt_data_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_get_offset
    - LUKS2_get_data_offset
    - reencrypt_segment
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t reencrypt_data_offset(struct luks2_hdr *hdr, unsigned new)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:137,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 143
    functionName: LUKS2_reencrypt_get_data_offset_moved
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_get_offset
    - LUKS2_get_segment_by_flag
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_reencrypt_get_data_offset_moved(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 4
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: reencrypt_get_data_offset_new
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_data_offset
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t reencrypt_get_data_offset_new(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 4
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: reencrypt_get_data_offset_old
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_data_offset
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t reencrypt_get_data_offset_old(struct luks2_hdr *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:158,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - new
    argTypes:
    - struct luks2_hdr*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 164
    functionName: reencrypt_digest
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_digest_by_segment
    - LUKS2_get_segment_id_by_flag
    linkageType: ''
    returnType: int
    signature: int reencrypt_digest(struct luks2_hdr *hdr, unsigned new)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_digest
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 169
    functionName: LUKS2_reencrypt_digest_new
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - reencrypt_digest
    linkageType: ''
    returnType: int
    signature: int LUKS2_reencrypt_digest_new(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_digest
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 174
    functionName: LUKS2_reencrypt_digest_old
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - reencrypt_digest
    linkageType: ''
    returnType: int
    signature: int LUKS2_reencrypt_digest_old(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: LUKS2_reencrypt_segment_new
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_segment_id_by_flag
    linkageType: ''
    returnType: int
    signature: int LUKS2_reencrypt_segment_new(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 184
    functionName: LUKS2_reencrypt_segment_old
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_segment_id_by_flag
    linkageType: ''
    returnType: int
    signature: int LUKS2_reencrypt_segment_old(struct luks2_hdr *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_digest_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:191,1
    - Dst: LUKS2_reencrypt_digest_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 186
    functionDepth: 4
    functionLinenumber: 186
    functionLinenumberEnd: 199
    functionName: LUKS2_reencrypt_vks_count
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - LUKS2_reencrypt_digest_old
    - LUKS2_reencrypt_digest_new
    linkageType: ''
    returnType: unsigned
    signature: unsigned LUKS2_reencrypt_vks_count(struct luks2_hdr *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:205,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:210,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:212,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:213,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 217
    functionName: reencrypt_resilience_type
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_keyslot_jobj
    - LUKS2_find_keyslot
    - json_object_get_string
    linkageType: ''
    returnType: char
    signature: char *reencrypt_resilience_type(struct luks2_hdr *hdr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:222,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:227,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:229,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:230,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:232,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:232,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:234,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:237,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 238
    functionName: reencrypt_resilience_hash
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_find_keyslot
    - LUKS2_get_keyslot_jobj
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: char
    signature: char *reencrypt_resilience_hash(struct luks2_hdr *hdr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:243,1
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:249,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:252,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:257,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:258,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:258,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:263,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:265,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:266,1
    - Dst: json_segment_remove_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:268,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:271,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:273,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:273,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:274,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:274,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:275,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:279,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:279,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:279,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:280,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:284,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:285,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:286,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 42
    argCount: 2
    argNames:
    - rh
    - data_offset
    argTypes:
    - struct luks2_reencrypt*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 240
    functionDepth: 4
    functionLinenumber: 240
    functionLinenumberEnd: 288
    functionName: _enc_create_segments_shift_after
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segments_get_segment
    - crypt_jobj_new_uint64
    - json_segments_count
    - json_object_object_add
    - json_object_new_string
    - json_object_copy
    - json_object_new_object
    - json_segment_get_size
    - json_segment_remove_flag
    - json_segments_segment_in_reencrypt
    - json_object_get
    - json_object_object_add_by_uint
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: json_object *_enc_create_segments_shift_after(struct luks2_reencrypt
      *rh, uint64_t data_offset)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:297,1
    - Dst: LUKS2_segment_by_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:302,1
    - Dst: LUKS2_last_segment_by_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:305,1
    - Dst: json_segment_create_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:311,1
    - Dst: reencrypt_segment_cipher_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:314,1
    - Dst: reencrypt_get_sector_size_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:316,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:320,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:321,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:321,1
    - Dst: LUKS2_segment_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:326,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:328,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:328,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:330,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:330,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:331,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:335,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:340,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:341,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:341,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:347,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:348,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:349,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:350,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:351,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 46
    argCount: 3
    argNames:
    - hdr
    - rh
    - data_offset
    argTypes:
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 354
    functionName: reencrypt_make_hot_segments_encrypt_shift
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_add_by_uint_by_ref
    - crypt_jobj_new_uint64
    - json_object_object_add
    - json_object_copy
    - json_object_new_object
    - LUKS2_segment_by_type
    - json_segment_create_crypt
    - reencrypt_get_sector_size_new
    - json_object_get
    - reencrypt_segment_cipher_new
    - LUKS2_get_segment_jobj
    - json_object_object_add_by_uint
    - LUKS2_segment_size
    - json_object_put
    - LUKS2_last_segment_by_type
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_make_hot_segments_encrypt_shift(struct luks2_hdr
      *hdr,\n\tstruct luks2_reencrypt *rh,\n\tuint64_t data_offset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_create_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:367,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:368,1
    - Dst: reencrypt_segment_cipher_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:370,1
    - Dst: reencrypt_get_sector_size_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:372,1
    - Dst: json_segment_create_linear
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 7
    argNames:
    - cd
    - hdr
    - rh
    - data_offset
    - segment_offset
    - iv_offset
    - segment_length
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 356
    functionDepth: 4
    functionLinenumber: 356
    functionLinenumberEnd: 378
    functionName: reencrypt_make_segment_new
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_create_linear
    - crypt_get_iv_offset
    - reencrypt_get_sector_size_new
    - json_segment_create_crypt
    - reencrypt_segment_cipher_new
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_make_segment_new(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tconst struct luks2_reencrypt *rh,\n\t\tuint64_t data_offset,\n\t\tuint64_t
      segment_offset,\n\t\tuint64_t iv_offset,\n\t\tconst uint64_t *segment_length)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:387,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:393,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:397,1
    - Dst: reencrypt_make_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:403,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:404,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:409,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:412,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:412,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:414,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:416,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:422,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:423,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:424,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 4
    argNames:
    - cd
    - hdr
    - rh
    - data_offset
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 380
    functionDepth: 5
    functionLinenumber: 380
    functionLinenumberEnd: 426
    functionName: reencrypt_make_post_segments_forward
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_add_by_uint_by_ref
    - json_segments_get_segment
    - crypt_jobj_new_uint64
    - reencrypt_make_segment_new
    - json_object_object_add
    - json_object_copy
    - json_object_new_object
    - json_segments_segment_in_reencrypt
    - json_object_get
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_make_post_segments_forward(struct crypt_device
      *cd,\n\tstruct luks2_hdr *hdr,\n\tstruct luks2_reencrypt *rh,\n\tuint64_t data_offset)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:437,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:442,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:446,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:448,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:449,1
    - Dst: reencrypt_make_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:455,1
    - Dst: reencrypt_make_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:457,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:459,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:462,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:463,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:464,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 4
    argNames:
    - cd
    - hdr
    - rh
    - data_offset
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 428
    functionDepth: 5
    functionLinenumber: 428
    functionLinenumberEnd: 466
    functionName: reencrypt_make_post_segments_backward
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_add_by_uint_by_ref
    - json_segments_get_segment
    - reencrypt_make_segment_new
    - json_object_new_object
    - json_object_get
    - json_segments_segment_in_reencrypt
    - json_object_object_add_by_uint
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_make_post_segments_backward(struct crypt_device
      *cd,\n\tstruct luks2_hdr *hdr,\n\tstruct luks2_reencrypt *rh,\n\tuint64_t data_offset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_create_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:479,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:480,1
    - Dst: reencrypt_segment_cipher_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:482,1
    - Dst: reencrypt_get_sector_size_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:484,1
    - Dst: json_segment_create_linear
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 7
    argNames:
    - cd
    - hdr
    - rh
    - data_offset
    - segment_offset
    - iv_offset
    - segment_length
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 468
    functionDepth: 4
    functionLinenumber: 468
    functionLinenumberEnd: 490
    functionName: reencrypt_make_segment_reencrypt
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_create_linear
    - crypt_get_iv_offset
    - reencrypt_get_sector_size_new
    - json_segment_create_crypt
    - reencrypt_segment_cipher_new
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_make_segment_reencrypt(struct crypt_device
      *cd,\n\t\tstruct luks2_hdr *hdr,\n\t\tconst struct luks2_reencrypt *rh,\n\t\tuint64_t
      data_offset,\n\t\tuint64_t segment_offset,\n\t\tuint64_t iv_offset,\n\t\tconst
      uint64_t *segment_length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_create_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:504,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:505,1
    - Dst: reencrypt_segment_cipher_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:507,1
    - Dst: reencrypt_get_sector_size_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:509,1
    - Dst: json_segment_create_linear
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - cd
    - hdr
    - rh
    - data_offset
    - segment_offset
    - segment_length
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 492
    functionDepth: 4
    functionLinenumber: 492
    functionLinenumberEnd: 517
    functionName: reencrypt_make_segment_old
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_create_linear
    - crypt_get_iv_offset
    - reencrypt_get_sector_size_old
    - reencrypt_segment_cipher_old
    - json_segment_create_crypt
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_make_segment_old(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tconst struct luks2_reencrypt *rh,\n\t\tuint64_t data_offset,\n\t\tuint64_t
      segment_offset,\n\t\tconst uint64_t *segment_length)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:526,1
    - Dst: reencrypt_make_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:534,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:535,1
    - Dst: reencrypt_make_segment_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:539,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:543,1
    - Dst: reencrypt_make_segment_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:548,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:548,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:550,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:556,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:557,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:558,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:559,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 5
    argNames:
    - cd
    - hdr
    - rh
    - device_size
    - data_offset
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 519
    functionDepth: 5
    functionLinenumber: 519
    functionLinenumberEnd: 561
    functionName: reencrypt_make_hot_segments_forward
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_add_by_uint_by_ref
    - reencrypt_make_segment_new
    - json_object_new_object
    - reencrypt_make_segment_reencrypt
    - data_shift_value
    - reencrypt_make_segment_old
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_make_hot_segments_forward(struct crypt_device
      *cd,\n\t\tstruct luks2_hdr *hdr,\n\t\tstruct luks2_reencrypt *rh,\n\t\tuint64_t
      device_size,\n\t\tuint64_t data_offset)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:568,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:576,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:580,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:581,1
    - Dst: reencrypt_make_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:585,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:587,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:590,1
    - Dst: reencrypt_make_segment_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:595,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:599,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:602,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:603,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:604,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:605,1
    - Dst: reencrypt_make_segment_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:609,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:610,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:613,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:619,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:620,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:621,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:622,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 44
    argCount: 5
    argNames:
    - cd
    - hdr
    - rh
    - device_size
    - data_offset
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 563
    functionDepth: 5
    functionLinenumber: 563
    functionLinenumberEnd: 624
    functionName: reencrypt_make_hot_segments_decrypt_shift
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_add_by_uint_by_ref
    - reencrypt_make_segment_new
    - json_segment_get_size
    - json_object_new_object
    - reencrypt_make_segment_reencrypt
    - json_object_get
    - data_shift_value
    - LUKS2_get_segment_jobj
    - json_segment_is_backup
    - reencrypt_make_segment_old
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_make_hot_segments_decrypt_shift(struct crypt_device
      *cd,\n\tstruct luks2_hdr *hdr, struct luks2_reencrypt *rh,\n\tuint64_t device_size,
      uint64_t data_offset)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:633,1
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:640,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:644,1
    - Dst: reencrypt_make_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:649,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:650,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:656,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:659,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:660,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:663,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:664,1
    - Dst: reencrypt_make_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:667,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:668,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:669,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:671,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:674,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:679,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:680,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:681,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:682,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 44
    argCount: 4
    argNames:
    - cd
    - hdr
    - rh
    - data_offset
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 626
    functionDepth: 5
    functionLinenumber: 626
    functionLinenumberEnd: 684
    functionName: _dec_create_segments_shift_after
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_add_by_uint_by_ref
    - json_segments_get_segment
    - reencrypt_make_segment_new
    - json_segments_count
    - json_segment_get_size
    - json_object_new_object
    - json_segments_segment_in_reencrypt
    - json_object_get
    - data_shift_value
    - json_object_object_add_by_uint
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: "json_object *_dec_create_segments_shift_after(struct crypt_device
      *cd,\n\tstruct luks2_hdr *hdr,\n\tstruct luks2_reencrypt *rh,\n\tuint64_t data_offset)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:694,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:701,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:701,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:703,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:703,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:705,1
    - Dst: reencrypt_make_segment_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:709,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:710,1
    - Dst: reencrypt_make_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:715,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:717,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:723,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:724,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:725,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:726,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 5
    argNames:
    - cd
    - hdr
    - rh
    - device_size
    - data_offset
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 686
    functionDepth: 5
    functionLinenumber: 686
    functionLinenumberEnd: 728
    functionName: reencrypt_make_hot_segments_backward
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_add_by_uint_by_ref
    - crypt_jobj_new_uint64
    - reencrypt_make_segment_new
    - json_object_object_add
    - json_object_copy
    - json_object_new_object
    - reencrypt_make_segment_reencrypt
    - LUKS2_get_segment_jobj
    - json_object_put
    linkageType: ''
    returnType: json_object
    signature: "json_object *reencrypt_make_hot_segments_backward(struct crypt_device
      *cd,\n\t\tstruct luks2_hdr *hdr,\n\t\tstruct luks2_reencrypt *rh,\n\t\tuint64_t
      device_size,\n\t\tuint64_t data_offset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:740,1
    - Dst: reencrypt_make_hot_segments_encrypt_shift
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:741,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:744,1
    - Dst: reencrypt_make_hot_segments_decrypt_shift
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:745,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:747,1
    - Dst: reencrypt_make_hot_segments_forward
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:748,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:750,1
    - Dst: reencrypt_make_hot_segments_backward
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:751,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 5
    argNames:
    - cd
    - hdr
    - rh
    - device_size
    - data_offset
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 730
    functionDepth: 6
    functionLinenumber: 730
    functionLinenumberEnd: 755
    functionName: reencrypt_make_hot_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_make_hot_segments_forward
    - reencrypt_make_hot_segments_decrypt_shift
    - log_dbg
    - reencrypt_make_hot_segments_encrypt_shift
    - reencrypt_make_hot_segments_backward
    linkageType: ''
    returnType: int
    signature: "int reencrypt_make_hot_segments(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tstruct luks2_reencrypt *rh,\n\t\tuint64_t device_size,\n\t\tuint64_t
      data_offset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:766,1
    - Dst: _enc_create_segments_shift_after
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:767,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:770,1
    - Dst: _dec_create_segments_shift_after
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:771,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:773,1
    - Dst: reencrypt_make_post_segments_forward
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:774,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:776,1
    - Dst: reencrypt_make_post_segments_backward
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:777,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 4
    argNames:
    - cd
    - hdr
    - rh
    - data_offset
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 757
    functionDepth: 6
    functionLinenumber: 757
    functionLinenumberEnd: 781
    functionName: reencrypt_make_post_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - _enc_create_segments_shift_after
    - reencrypt_make_post_segments_forward
    - _dec_create_segments_shift_after
    - reencrypt_make_post_segments_backward
    linkageType: ''
    returnType: int
    signature: "int reencrypt_make_post_segments(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tstruct luks2_reencrypt *rh,\n\t\tuint64_t data_offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:787,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:792,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:794,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:795,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:798,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 799
    functionName: reencrypt_data_shift
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_keyslot_jobj
    - crypt_jobj_get_uint64
    - LUKS2_find_keyslot
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t reencrypt_data_shift(struct luks2_hdr *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:807,1
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:807,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:811,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:812,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:815,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:817,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 821
    functionName: reencrypt_mode
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_find_keyslot
    - LUKS2_get_keyslot_jobj
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: crypt_reencrypt_mode_info
    signature: crypt_reencrypt_mode_info reencrypt_mode(struct luks2_hdr *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:829,1
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:829,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:833,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:834,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:837,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 841
    functionName: reencrypt_direction
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_find_keyslot
    - LUKS2_get_keyslot_jobj
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: crypt_reencrypt_direction_info
    signature: crypt_reencrypt_direction_info reencrypt_direction(struct luks2_hdr
      *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:851,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:856,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:857,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - rp
    argTypes:
    - struct reenc_protection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 845
    functionDepth: 2
    functionLinenumber: 845
    functionLinenumberEnd: 860
    functionName: LUKS2_reencrypt_protection_erase
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - crypt_hash_destroy
    - crypt_safe_memzero
    - free
    linkageType: ''
    returnType: void
    signature: void LUKS2_reencrypt_protection_erase(struct reenc_protection *rp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_protection_erase
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:867,1
    - Dst: LUKS2_reencrypt_protection_erase
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:868,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:870,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:872,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:874,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:876,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:878,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:881,1
    - Dst: crypt_storage_wrapper_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:883,1
    - Dst: crypt_storage_wrapper_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:885,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:887,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:890,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:891,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:892,1
    - Dst: crypt_drop_uploaded_keyring_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:893,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:894,1
    - Dst: device_release_excl
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:895,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:895,1
    - Dst: crypt_unlock_internal
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:896,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 2
    argNames:
    - cd
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 862
    functionDepth: 4
    functionLinenumber: 862
    functionLinenumberEnd: 898
    functionName: LUKS2_reencrypt_free
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - device_free
    - free
    - crypt_free_volume_key
    - crypt_drop_uploaded_keyring_key
    - crypt_storage_wrapper_destroy
    - LUKS2_reencrypt_protection_erase
    - device_release_excl
    - json_object_put
    - crypt_unlock_internal
    - crypt_data_device
    linkageType: ''
    returnType: void
    signature: void LUKS2_reencrypt_free(struct crypt_device *cd, struct luks2_reencrypt
      *rh)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:910,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:911,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:912,1
    - Dst: LUKS2_keyslot_area
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:924,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 5
    argNames:
    - cd
    - hdr
    - rp
    - reencrypt_keyslot
    - r_length
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct reenc_protection*
    - int
    - uint64_t*
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 909
        line_start: 909
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (rp)
      pos:
        line_end: 910
        line_start: 910
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (r_length)
      pos:
        line_end: 911
        line_start: 911
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 939
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 939
    functionName: LUKS2_reencrypt_max_hotzone_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - LUKS2_keyslot_area
    - assert
    linkageType: ''
    returnType: int
    signature: "int LUKS2_reencrypt_max_hotzone_size(struct crypt_device *cd __attribute__((unused)),\n\tstruct
      luks2_hdr *hdr,\n\tconst struct reenc_protection *rp,\n\tint reencrypt_keyslot,\n\tuint64_t
      *r_length)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:944,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:944,1
    - Dst: reencrypt_get_sector_size_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:946,1
    - Dst: reencrypt_get_sector_size_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:949,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 941
    functionDepth: 4
    functionLinenumber: 941
    functionLinenumberEnd: 954
    functionName: reencrypt_get_alignment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_get_sector_size_old
    - crypt_data_device
    - reencrypt_get_sector_size_new
    - device_block_size
    linkageType: ''
    returnType: size_t
    signature: "size_t reencrypt_get_alignment(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:960,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:963,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:963,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:964,1
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:970,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:972,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:972,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:973,1
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:979,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:981,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:981,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - hdr
    - rh
    argTypes:
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 957
    functionDepth: 2
    functionLinenumber: 957
    functionLinenumberEnd: 984
    functionName: _load_backup_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_get
    - LUKS2_get_segment_id_by_flag
    - LUKS2_get_segment_jobj
    - LUKS2_digest_by_segment
    linkageType: ''
    returnType: void
    signature: "void _load_backup_segments(struct luks2_hdr *hdr,\n\t\tstruct luks2_reencrypt
      *rh)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:990,1
    - Dst: LUKS2_segment_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:994,1
    - Dst: LUKS2_segment_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:995,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 5
    argNames:
    - hdr
    - jobj_segments
    - reencrypt_length
    - data_shift
    - offset
    argTypes:
    - struct luks2_hdr*
    - json_object*
    - uint64_t*
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 986
    functionDepth: 4
    functionLinenumber: 986
    functionLinenumberEnd: 1018
    functionName: reencrypt_offset_backward_moved
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_segment_size
    - json_segments_count
    - LUKS2_segment_is_type
    linkageType: ''
    returnType: int
    signature: "int reencrypt_offset_backward_moved(struct luks2_hdr *hdr, json_object
      *jobj_segments,\n\t\t\t\t\t   uint64_t *reencrypt_length, uint64_t data_shift,
      uint64_t *offset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_last_segment_by_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1024,1
    - Dst: LUKS2_segment_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1032,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - hdr
    - data_shift
    - offset
    argTypes:
    - struct luks2_hdr*
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1020
    functionDepth: 4
    functionLinenumber: 1020
    functionLinenumberEnd: 1034
    functionName: reencrypt_offset_forward_moved
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_segment_offset
    - LUKS2_last_segment_by_type
    linkageType: ''
    returnType: int
    signature: "int reencrypt_offset_forward_moved(struct luks2_hdr *hdr,\n\tuint64_t
      data_shift,\n\tuint64_t *offset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1038,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1043,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1043,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - jobj_segments
    - offset
    argTypes:
    - json_object*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1036
    functionDepth: 4
    functionLinenumber: 1036
    functionLinenumberEnd: 1050
    functionName: _offset_forward
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segments_get_segment
    - json_segment_get_size
    - json_segments_count
    linkageType: ''
    returnType: int
    signature: int _offset_forward(json_object *jobj_segments, uint64_t *offset)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1054,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1062,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1062,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - jobj_segments
    - device_size
    - length
    - offset
    argTypes:
    - json_object*
    - uint64_t
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1052
    functionDepth: 4
    functionLinenumber: 1052
    functionLinenumberEnd: 1070
    functionName: _offset_backward
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segments_get_segment
    - json_segment_get_size
    - json_segments_count
    linkageType: ''
    returnType: int
    signature: int _offset_backward(json_object *jobj_segments, uint64_t device_size,
      uint64_t *length, uint64_t *offset)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_data_shift
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1082,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1088,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1089,1
    - Dst: LUKS2_segment_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1091,1
    - Dst: reencrypt_get_data_offset_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1091,1
    - Dst: reencrypt_mode
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1096,1
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1097,1
    - Dst: reencrypt_offset_forward_moved
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1098,1
    - Dst: _offset_forward
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1103,1
    - Dst: reencrypt_mode
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1105,1
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1106,1
    - Dst: reencrypt_offset_backward_moved
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1107,1
    - Dst: _offset_backward
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1108,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 5
    argNames:
    - hdr
    - di
    - device_size
    - reencrypt_length
    - offset
    argTypes:
    - struct luks2_hdr*
    - crypt_reencrypt_direction_info
    - uint64_t
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1074
    functionDepth: 5
    functionLinenumber: 1074
    functionLinenumberEnd: 1112
    functionName: reencrypt_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_segment_offset
    - json_object_object_get_ex
    - reencrypt_mode
    - reencrypt_offset_backward_moved
    - json_segments_segment_in_reencrypt
    - _offset_forward
    - _offset_backward
    - reencrypt_get_data_offset_new
    - reencrypt_offset_forward_moved
    - LUKS2_get_segment_id_by_flag
    - reencrypt_data_shift
    linkageType: ''
    returnType: int
    signature: "int reencrypt_offset(struct luks2_hdr *hdr,\n\t\tcrypt_reencrypt_direction_info
      di,\n\t\tuint64_t device_size,\n\t\tuint64_t *reencrypt_length,\n\t\tuint64_t
      *offset)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: crypt_getphysmemory_kb
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1137,1
    - Dst: device_topology_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1151,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1151,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 5
    argNames:
    - cd
    - rp
    - keyslot_area_length
    - length_max
    - alignment
    argTypes:
    - struct crypt_device*
    - struct reenc_protection*
    - uint64_t
    - uint64_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1114
    functionDepth: 2
    functionLinenumber: 1114
    functionLinenumberEnd: 1162
    functionName: reencrypt_length
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - device_topology_alignment
    - crypt_getphysmemory_kb
    - crypt_data_device
    linkageType: ''
    returnType: uint64_t
    signature: "uint64_t reencrypt_length(struct crypt_device *cd,\n\t\tstruct reenc_protection
      *rp,\n\t\tuint64_t keyslot_area_length,\n\t\tuint64_t length_max,\n\t\tsize_t
      alignment)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1175,1
    - Dst: LUKS2_keyslot_area
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1178,1
    - Dst: reencrypt_mode
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1181,1
    - Dst: reencrypt_direction
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1183,1
    - Dst: LUKS2_keyslot_reencrypt_load
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1185,1
    - Dst: reencrypt_get_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1192,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1198,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1198,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1203,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1203,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1208,1
    - Dst: reencrypt_length
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1214,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1216,1
    - Dst: reencrypt_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1220,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1221,1
    - Dst: _load_backup_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1230,1
    - Dst: LUKS2_keyslot_reencrypt_load
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1232,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1237,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1242,1
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1242,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1243,1
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1243,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1245,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1249,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1250,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1251,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1252,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1253,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1254,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1256,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1257,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1258,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 67
    argCount: 6
    argNames:
    - cd
    - hdr
    - rh
    - device_size
    - max_hotzone_size
    - fixed_device_size
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1164
    functionDepth: 6
    functionLinenumber: 1164
    functionLinenumberEnd: 1263
    functionName: reencrypt_context_init
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_length
    - reencrypt_get_alignment
    - LUKS2_find_keyslot
    - reencrypt_mode
    - _
    - reencrypt_offset
    - LUKS2_get_segment_by_flag
    - json_segment_get_size
    - reencrypt_direction
    - _load_backup_segments
    - log_err
    - log_dbg
    - json_segment_get_offset
    - LUKS2_keyslot_reencrypt_load
    - data_shift_value
    - LUKS2_keyslot_area
    linkageType: ''
    returnType: int
    signature: "int reencrypt_context_init(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tstruct luks2_reencrypt *rh,\n\tuint64_t device_size,\n\tuint64_t max_hotzone_size,\n\tuint64_t
      fixed_device_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rh
    argTypes:
    - struct luks2_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1265
    functionDepth: 1
    functionLinenumber: 1265
    functionLinenumberEnd: 1270
    functionName: reencrypt_buffer_length
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - data_shift_value
    linkageType: ''
    returnType: size_t
    signature: size_t reencrypt_buffer_length(struct luks2_reencrypt *rh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1280,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1285,1
    - Dst: reencrypt_context_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1287,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1291,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1291,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1291,1
    - Dst: reencrypt_buffer_length
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1292,1
    - Dst: LUKS2_reencrypt_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1301,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 6
    argNames:
    - cd
    - hdr
    - device_size
    - max_hotzone_size
    - fixed_device_size
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint64_t
    - uint64_t
    - uint64_t
    - struct luks2_reencrypt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1272
    functionDepth: 7
    functionLinenumber: 1272
    functionLinenumberEnd: 1304
    functionName: reencrypt_load_clean
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - posix_memalign
    - reencrypt_context_init
    - log_dbg
    - LUKS2_reencrypt_free
    - reencrypt_buffer_length
    - device_alignment
    - crypt_zalloc
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int reencrypt_load_clean(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tuint64_t device_size,\n\tuint64_t max_hotzone_size,\n\tuint64_t fixed_device_size,\n\tstruct
      luks2_reencrypt **rh)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_get_data_offset_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1312,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1314,1
    - Dst: reencrypt_make_hot_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1316,1
    - Dst: reencrypt_make_post_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1318,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1320,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - cd
    - hdr
    - rh
    - device_size
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1306
    functionDepth: 7
    functionLinenumber: 1306
    functionLinenumberEnd: 1327
    functionName: reencrypt_make_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_make_hot_segments
    - log_dbg
    - reencrypt_get_data_offset_new
    - reencrypt_make_post_segments
    - json_object_put
    linkageType: ''
    returnType: int
    signature: "int reencrypt_make_segments(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tstruct luks2_reencrypt *rh,\n\tuint64_t device_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1334,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1339,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1344,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1346,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1346,1
    - Dst: reencrypt_make_post_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1349,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1351,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - cd
    - hdr
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1329
    functionDepth: 7
    functionLinenumber: 1329
    functionLinenumberEnd: 1356
    functionName: reencrypt_make_segments_crashed
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_object_add
    - json_object_new_object
    - json_object_get
    - json_segment_is_backup
    - reencrypt_make_post_segments
    - crypt_get_data_offset
    - json_object_put
    linkageType: ''
    returnType: int
    signature: "int reencrypt_make_segments_crashed(struct crypt_device *cd,\n\t\t\t\tstruct
      luks2_hdr *hdr,\n\t\t\t        struct luks2_reencrypt *rh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1344,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1346,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1343
    functionDepth: 3
    functionLinenumber: 1343
    functionLinenumberEnd: 1347
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_object_get
    - json_segment_is_backup
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(LUKS2_get_segments_jobj(hdr), key,
      val)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_data_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1365,1
    - Dst: reencrypt_load_clean
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1373,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1376,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1376,1
    - Dst: LUKS2_segment_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1380,1
    - Dst: reencrypt_make_segments_crashed
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1384,1
    - Dst: LUKS2_reencrypt_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1387,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - cd
    - hdr
    - device_size
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint64_t
    - struct luks2_reencrypt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1358
    functionDepth: 8
    functionLinenumber: 1358
    functionLinenumberEnd: 1391
    functionName: reencrypt_load_crashed
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_make_segments_crashed
    - reencrypt_load_clean
    - LUKS2_get_segments_jobj
    - LUKS2_get_data_size
    - LUKS2_reencrypt_free
    - json_segments_segment_in_reencrypt
    - LUKS2_segment_size
    linkageType: ''
    returnType: int
    signature: "int reencrypt_load_crashed(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr, uint64_t device_size, struct luks2_reencrypt **rh)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getuid
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1400,1
    - Dst: geteuid
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1400,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1402,1
    - Dst: crypt_storage_wrapper_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1403,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1403,1
    - Dst: reencrypt_get_data_offset_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1404,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1405,1
    - Dst: reencrypt_get_sector_size_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1406,1
    - Dst: reencrypt_segment_cipher_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1407,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1410,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1410,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1414,1
    - Dst: crypt_storage_wrapper_get_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1414,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1416,1
    - Dst: crypt_storage_wrapper_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1417,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1417,1
    - Dst: reencrypt_get_data_offset_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1418,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1419,1
    - Dst: reencrypt_get_sector_size_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1420,1
    - Dst: reencrypt_segment_cipher_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1421,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1424,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1424,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1428,1
    - Dst: crypt_storage_wrapper_get_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - cd
    - hdr
    - rh
    - vks
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1393
    functionDepth: 5
    functionLinenumber: 1393
    functionLinenumberEnd: 1431
    functionName: reencrypt_init_storage_wrappers
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - getuid
    - crypt_storage_wrapper_init
    - crypt_get_iv_offset
    - _
    - crypt_storage_wrapper_get_type
    - reencrypt_get_data_offset_old
    - reencrypt_get_sector_size_old
    - reencrypt_segment_cipher_old
    - crypt_volume_key_by_id
    - log_err
    - log_dbg
    - reencrypt_get_sector_size_new
    - reencrypt_segment_cipher_new
    - reencrypt_get_data_offset_new
    - geteuid
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int reencrypt_init_storage_wrappers(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tstruct luks2_reencrypt *rh,\n\t\tstruct volume_key *vks)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dm_device_name
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1439,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1441,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1444,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1449,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - rh
    - name
    argTypes:
    - struct luks2_reencrypt*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1433
    functionDepth: 2
    functionLinenumber: 1433
    functionLinenumberEnd: 1456
    functionName: reencrypt_context_set_names
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - dm_device_name
    - strdup
    - asprintf
    linkageType: ''
    returnType: int
    signature: int reencrypt_context_set_names(struct luks2_reencrypt *rh, const char
      *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - offset
    - data_shift
    - di
    argTypes:
    - uint64_t*
    - uint64_t
    - crypt_reencrypt_direction_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1458
    functionDepth: 0
    functionLinenumber: 1458
    functionLinenumberEnd: 1476
    functionName: modify_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int modify_offset(uint64_t *offset, uint64_t data_shift, crypt_reencrypt_direction_info
      di)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1482,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1485,1
    - Dst: LUKS2_config_set_requirement_version
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1486,1
    - Dst: LUKS2_config_get_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1489,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1493,1
    - Dst: LUKS2_config_set_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - cd
    - version
    - enable
    - commit
    argTypes:
    - struct crypt_device*
    - uint8_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1478
    functionDepth: 2
    functionLinenumber: 1478
    functionLinenumberEnd: 1496
    functionName: reencrypt_update_flag
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_config_get_requirements
    - crypt_get_hdr
    - LUKS2_config_set_requirements
    - log_dbg
    - LUKS2_config_set_requirement_version
    linkageType: ''
    returnType: int
    signature: "int reencrypt_update_flag(struct crypt_device *cd, uint8_t version,\n\tbool
      enable, bool commit)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1501,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1510,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1511,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1511,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1511,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - cd
    - rp
    argTypes:
    - struct crypt_device*
    - struct reenc_protection*
    assertStmts:
    - condition: (rp)
      pos:
        line_end: 1500
        line_start: 1500
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1517
      start: 1498
    functionDepth: 2
    functionLinenumber: 1498
    functionLinenumberEnd: 1517
    functionName: reencrypt_hotzone_protect_ready
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - posix_memalign
    - crypt_metadata_device
    - assert
    - log_dbg
    - device_alignment
    linkageType: ''
    returnType: int
    signature: "int reencrypt_hotzone_protect_ready(struct crypt_device *cd,\n\tstruct
      reenc_protection *rp)"
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1530,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1534,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1535,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1536,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1538,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1540,1
    - Dst: reencrypt_hotzone_protect_ready
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1548,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1550,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1550,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1554,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1557,1
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1560,1
    - Dst: reencrypt_segment_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1560,1
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1561,1
    - Dst: reencrypt_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1561,1
    - Dst: json_segment_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1565,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1565,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1567,1
    - Dst: crypt_storage_wrapper_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1570,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1570,1
    - Dst: reencrypt_segment_cipher_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1572,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1574,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1574,1
    - Dst: LUKS2_keyslot_area
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1578,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1583,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1583,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1583,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1590,1
    - Dst: crypt_storage_wrapper_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1592,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1592,1
    - Dst: reencrypt_segment_cipher_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1594,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1596,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1596,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1603,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1608,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1615,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1615,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1620,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1620,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1620,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1621,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1621,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1623,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1623,1
    - Dst: crypt_storage_wrapper_read
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1628,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1630,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1630,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1636,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1637,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1641,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1642,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1646,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1647,1
    - Dst: crypt_storage_wrapper_decrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1648,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1649,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1649,1
    - Dst: crypt_storage_wrapper_encrypt_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1653,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1655,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1655,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1665,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1670,1
    - Dst: crypt_storage_wrapper_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1675,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1675,1
    - Dst: reencrypt_segment_cipher_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1677,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1679,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1679,1
    - Dst: crypt_storage_wrapper_read_decrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1682,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1684,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1687,1
    - Dst: crypt_storage_wrapper_encrypt_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1690,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1692,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1694,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1702,1
    - Dst: crypt_storage_wrapper_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1705,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1705,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1706,1
    - Dst: reencrypt_get_sector_size_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1707,1
    - Dst: reencrypt_segment_cipher_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1708,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1711,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1713,1
    - Dst: crypt_storage_wrapper_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1714,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1714,1
    - Dst: reencrypt_get_sector_size_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1717,1
    - Dst: reencrypt_segment_cipher_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1718,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1721,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1721,1
    - Dst: crypt_storage_wrapper_read_decrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1725,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1727,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1730,1
    - Dst: crypt_storage_wrapper_encrypt_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1734,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1736,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1738,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1751,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1752,1
    - Dst: crypt_storage_wrapper_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1753,1
    - Dst: crypt_storage_wrapper_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1754,1
    CyclomaticComplexity: 65
    EdgeCount: 65
    ICount: 194
    argCount: 4
    argNames:
    - cd
    - hdr
    - rh
    - vks
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - struct volume_key*
    assertStmts:
    - condition: (rh)
      pos:
        line_end: 1534
        line_start: 1534
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (vks)
      pos:
        line_end: 1535
        line_start: 1535
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (hdr)
      pos:
        line_end: 1533
        line_start: 1533
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 1757
      start: 1519
    functionDepth: 4
    functionLinenumber: 1519
    functionLinenumberEnd: 1757
    functionName: reencrypt_recover_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_storage_wrapper_init
    - posix_memalign
    - reencrypt_segment_cipher_old
    - crypt_storage_wrapper_read
    - device_alignment
    - crypt_storage_wrapper_decrypt
    - reencrypt_segment_new
    - json_segments_get_segment
    - free
    - crypt_volume_key_by_id
    - log_dbg
    - json_segments_segment_in_reencrypt
    - crypt_storage_wrapper_encrypt_write
    - LUKS2_keyslot_area
    - crypt_safe_memzero
    - crypt_hash_final
    - memcmp
    - json_segment_get_sector_size
    - reencrypt_get_sector_size_old
    - malloc
    - log_err
    - crypt_hash_write
    - data_shift_value
    - crypt_storage_wrapper_read_decrypt
    - crypt_get_data_offset
    - crypt_data_device
    - json_segment_get_iv_offset
    - reencrypt_segment_old
    - _
    - device_open
    - reencrypt_hotzone_protect_ready
    - crypt_metadata_device
    - crypt_storage_wrapper_destroy
    - assert
    - json_segment_get_offset
    - read_lseek_blockwise
    - reencrypt_segment_cipher_new
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int reencrypt_recover_segment(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tstruct luks2_reencrypt *rh,\n\tstruct volume_key *vks)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_segment_first_unused_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1761,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1769,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1769,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1769,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1770,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1774,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1774,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1775,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - cd
    - hdr
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1759
    functionDepth: 1
    functionLinenumber: 1759
    functionLinenumberEnd: 1778
    functionName: reencrypt_add_moved_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_type
    - LUKS2_get_segments_jobj
    - LUKS2_digest_segment_assign
    - LUKS2_segment_first_unused_id
    - json_object_get
    - json_object_object_add_by_uint
    - strcmp
    - json_object_put
    linkageType: ''
    returnType: int
    signature: int reencrypt_add_moved_segment(struct crypt_device *cd, struct luks2_hdr
      *hdr, struct luks2_reencrypt *rh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_segment_first_unused_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1785,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1794,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1794,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1794,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1795,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1799,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1799,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1802,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - cd
    - hdr
    - rh
    - final
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1780
    functionDepth: 1
    functionLinenumber: 1780
    functionLinenumberEnd: 1803
    functionName: reencrypt_add_backup_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_type
    - LUKS2_get_segments_jobj
    - LUKS2_digest_segment_assign
    - LUKS2_segment_first_unused_id
    - json_object_get
    - json_object_object_add_by_uint
    - strcmp
    - json_object_put
    linkageType: ''
    returnType: int
    signature: "int reencrypt_add_backup_segment(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tstruct luks2_reencrypt *rh,\n\t\tunsigned final)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1813,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1814,1
    - Dst: LUKS2_segments_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1816,1
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1819,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1820,1
    - Dst: LUKS2_segments_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1821,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1825,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1830,1
    - Dst: reencrypt_add_backup_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1834,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1836,1
    - Dst: reencrypt_add_backup_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1840,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1842,1
    - Dst: reencrypt_add_moved_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1846,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1848,1
    - Dst: LUKS2_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1852,1
    - Dst: LUKS2_segment_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1853,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1854,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1855,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1860,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 5
    argNames:
    - cd
    - hdr
    - rh
    - hot
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1805
    functionDepth: 4
    functionLinenumber: 1805
    functionLinenumberEnd: 1861
    functionName: reencrypt_assign_segments_simple
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_hdr_write
    - json_segments_count
    - reencrypt_add_backup_segment
    - LUKS2_digest_segment_assign
    - log_dbg
    - LUKS2_segments_count
    - LUKS2_segment_is_type
    - LUKS2_segments_set
    - reencrypt_add_moved_segment
    linkageType: ''
    returnType: int
    signature: "int reencrypt_assign_segments_simple(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tstruct luks2_reencrypt *rh,\n\tunsigned hot,\n\tunsigned
      commit)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1876,1
    - Dst: reencrypt_assign_segments_simple
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1880,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1883,1
    - Dst: LUKS2_segments_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1885,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1889,1
    - Dst: LUKS2_segments_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1890,1
    - Dst: LUKS2_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1898,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1901,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1901,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1906,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1907,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1913,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1915,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1917,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1919,1
    - Dst: reencrypt_add_backup_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1922,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1924,1
    - Dst: reencrypt_add_backup_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1927,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1929,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1933,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 51
    argCount: 5
    argNames:
    - cd
    - hdr
    - rh
    - hot
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1934
      start: 1863
    functionDepth: 5
    functionLinenumber: 1863
    functionLinenumberEnd: 1934
    functionName: reencrypt_assign_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_hdr_write
    - reencrypt_assign_segments_simple
    - LUKS2_get_segments_jobj
    - LUKS2_digest_segment_assign
    - reencrypt_add_backup_segment
    - log_dbg
    - json_segments_segment_in_reencrypt
    - LUKS2_segments_count
    - LUKS2_segments_set
    linkageType: ''
    returnType: int
    signature: "int reencrypt_assign_segments(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tstruct luks2_reencrypt *rh,\n\t\tunsigned hot,\n\t\tunsigned
      commit)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1943,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1975,1
    - Dst: json_segment_create_linear
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1981,1
    - Dst: json_segment_create_linear
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1983,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1984,1
    - Dst: json_segment_create_linear
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1988,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1991,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1995,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1997,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:1999,1
    - Dst: LUKS2_segments_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2001,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 7
    argNames:
    - cd
    - hdr
    - dev_size
    - data_size
    - data_shift
    - move_first_segment
    - di
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint64_t
    - uint64_t
    - uint64_t
    - bool
    - crypt_reencrypt_direction_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1936
    functionDepth: 3
    functionLinenumber: 1936
    functionLinenumberEnd: 2002
    functionName: reencrypt_set_encrypt_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_data_offset
    - json_segment_create_linear
    - json_object_object_add
    - LUKS2_digest_segment_assign
    - json_object_new_object
    - log_dbg
    - LUKS2_segments_set
    linkageType: ''
    returnType: int
    signature: "int reencrypt_set_encrypt_segments(struct crypt_device *cd, struct
      luks2_hdr *hdr,\n\t\t\t\t\t  uint64_t dev_size, uint64_t data_size, uint64_t
      data_shift, bool move_first_segment,\n\t\t\t\t\t  crypt_reencrypt_direction_info
      di)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2011,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2017,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2025,1
    - Dst: json_segment_create_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2030,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2030,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2031,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2032,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2035,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2039,1
    - Dst: json_segment_create_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2044,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2045,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2047,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2049,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2052,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2056,1
    - Dst: LUKS2_segments_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2061,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2062,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2064,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2065,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2066,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 5
    argNames:
    - cd
    - hdr
    - dev_size
    - moved_segment_length
    - di
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint64_t
    - uint64_t
    - crypt_reencrypt_direction_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2004
    functionDepth: 3
    functionLinenumber: 2004
    functionLinenumberEnd: 2068
    functionName: reencrypt_set_decrypt_shift_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_data_offset
    - LUKS2_digest_by_segment
    - json_object_object_add_by_uint_by_ref
    - crypt_get_iv_offset
    - crypt_get_cipher_spec
    - LUKS2_digest_segment_assign
    - json_object_new_object
    - json_segment_create_crypt
    - log_dbg
    - LUKS2_segments_set
    - json_object_put
    - crypt_get_sector_size
    linkageType: ''
    returnType: int
    signature: "int reencrypt_set_decrypt_shift_segments(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tuint64_t dev_size,\n\tuint64_t moved_segment_length,\n\tcrypt_reencrypt_direction_info
      di)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2082,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2085,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2087,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2091,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2093,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2094,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2099,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2104,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2106,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2106,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2107,1
    - Dst: LUKS2_reencrypt_digest_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2107,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2107,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2109,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2109,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2113,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2114,1
    - Dst: json_segment_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2116,1
    - Dst: json_segment_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2117,1
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2120,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2122,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2122,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2125,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2125,1
    - Dst: dm_linear_target_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2126,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2126,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2128,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2128,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 6
    argNames:
    - cd
    - hdr
    - hz_device
    - vks
    - result
    - size
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct device*
    - struct volume_key*
    - struct dm_target*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2140
      start: 2070
    functionDepth: 4
    functionLinenumber: 2070
    functionLinenumberEnd: 2140
    functionName: reencrypt_make_targets
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_get_cipher
    - dm_crypt_target_set
    - LUKS2_reencrypt_digest_new
    - dm_linear_target_set
    - json_segments_get_segment
    - json_segment_type
    - crypt_volume_key_by_id
    - log_dbg
    - json_segments_segment_in_reencrypt
    - strcmp
    - LUKS2_digest_by_segment
    - json_segment_get_sector_size
    - LUKS2_get_segments_jobj
    - log_err
    - crypt_get_data_offset
    - crypt_data_device
    - json_segment_get_iv_offset
    - _
    - json_segment_get_size
    - json_segment_get_offset
    linkageType: ''
    returnType: int
    signature: "int reencrypt_make_targets(struct crypt_device *cd,\n\t\t\t\tstruct
      luks2_hdr *hdr,\n\t\t\t\tstruct device *hz_device,\n\t\t\t\tstruct volume_key
      *vks,\n\t\t\t\tstruct dm_target *result,\n\t\t\t\tuint64_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2158,1
    - Dst: dm_targets_allocate
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2160,1
    - Dst: LUKS2_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2160,1
    - Dst: reencrypt_make_targets
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2164,1
    - Dst: dm_reload_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2168,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 7
    argNames:
    - cd
    - hdr
    - overlay
    - hotzone_device
    - vks
    - size
    - flags
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char*
    - struct device*
    - struct volume_key*
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2175
      start: 2148
    functionDepth: 5
    functionLinenumber: 2148
    functionLinenumberEnd: 2175
    functionName: reencrypt_load_overlay_device
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - dm_targets_free
    - log_dbg
    - dm_reload_device
    - LUKS2_segments_count
    - dm_targets_allocate
    - reencrypt_make_targets
    linkageType: ''
    returnType: int
    signature: "int reencrypt_load_overlay_device(struct crypt_device *cd, struct
      luks2_hdr *hdr,\n\tconst char *overlay, struct device *hotzone_device, struct
      volume_key *vks, uint64_t size,\n\tuint32_t flags)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2183,1
    - Dst: dm_status_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2186,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2194,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2200,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2204,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2208,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2208,1
    - Dst: dm_reload_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2213,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2215,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2216,1
    - Dst: act2dmflags
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2216,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2219,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2221,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2222,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 4
    argNames:
    - cd
    - target
    - source
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2177
    functionDepth: 8
    functionLinenumber: 2177
    functionLinenumberEnd: 2225
    functionName: reencrypt_replace_device
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - _
    - dm_create_device
    - dm_targets_free
    - dm_status_device
    - log_dbg
    - log_err
    - dm_reload_device
    - dm_query_device
    - act2dmflags
    - dm_resume_device
    linkageType: ''
    returnType: int
    signature: int reencrypt_replace_device(struct crypt_device *cd, const char *target,
      const char *source, uint32_t flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2235,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2237,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2237,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2243,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2247,1
    - Dst: dm_linear_target_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2252,1
    - Dst: dm_reload_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2256,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2258,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2259,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2263,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2264,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - cd
    - name
    - new_backend_name
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2227
    functionDepth: 7
    functionLinenumber: 2227
    functionLinenumberEnd: 2267
    functionName: reencrypt_swap_backing_device
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - device_free
    - snprintf
    - dm_get_dir
    - dm_targets_free
    - log_dbg
    - device_block_adjust
    - dm_linear_target_set
    - dm_reload_device
    - dm_resume_device
    - device_alloc
    linkageType: ''
    returnType: int
    signature: "int reencrypt_swap_backing_device(struct crypt_device *cd, const char
      *name,\n\t\t\t      const char *new_backend_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_get_data_offset_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2272,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2272,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2276,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2280,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2282,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2282,1
    - Dst: dm_linear_target_set
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2287,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2287,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2291,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2293,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - cd
    - name
    - device_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2269
    functionDepth: 7
    functionLinenumber: 2269
    functionLinenumberEnd: 2296
    functionName: reencrypt_activate_hotzone_device
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - crypt_get_hdr
    - dm_create_device
    - dm_targets_free
    - log_dbg
    - device_block_adjust
    - dm_linear_target_set
    - reencrypt_get_data_offset_new
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: int reencrypt_activate_hotzone_device(struct crypt_device *cd, const
      char *name, uint64_t device_size, uint32_t flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2304,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2305,1
    - Dst: reencrypt_activate_hotzone_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2308,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2310,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2310,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2314,1
    - Dst: dm_get_dir
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2314,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2320,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2322,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2322,1
    - Dst: reencrypt_replace_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2337,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2339,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2339,1
    - Dst: reencrypt_swap_backing_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2344,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2346,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2346,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2358,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2359,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - cd
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_reencrypt*
    assertStmts:
    - condition: (rh)
      pos:
        line_end: 2303
        line_start: 2303
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (!rh->hotzone_device)
      pos:
        line_end: 2304
        line_start: 2304
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 2362
      start: 2298
    functionDepth: 9
    functionLinenumber: 2298
    functionLinenumberEnd: 2362
    functionName: reencrypt_init_device_stack
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - snprintf
    - dm_get_dir
    - dm_remove_device
    - assert
    - log_err
    - reencrypt_replace_device
    - reencrypt_activate_hotzone_device
    - device_alloc
    - reencrypt_swap_backing_device
    linkageType: ''
    returnType: int
    signature: "int reencrypt_init_device_stack(struct crypt_device *cd,\n\t\t                     struct
      luks2_reencrypt *rh)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dm_suspend_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2380,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2382,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2382,1
    - Dst: dm_suspend_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2387,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2389,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2389,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2394,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2396,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2396,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - cd
    - overlay
    - hotzone
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2399
      start: 2369
    functionDepth: 5
    functionLinenumber: 2369
    functionLinenumberEnd: 2399
    functionName: reenc_refresh_helper_devices
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - log_err
    - _
    - dm_suspend_device
    - dm_resume_device
    linkageType: ''
    returnType: int
    signature: int reenc_refresh_helper_devices(struct crypt_device *cd, const char
      *overlay, const char *hotzone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_load_overlay_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2410,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2412,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2412,1
    - Dst: reenc_refresh_helper_devices
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2416,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2418,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 8
    argNames:
    - cd
    - hdr
    - overlay
    - hotzone
    - hotzone_device
    - vks
    - device_size
    - flags
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char*
    - char*
    - struct device*
    - struct volume_key*
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2401
    functionDepth: 6
    functionLinenumber: 2401
    functionLinenumberEnd: 2423
    functionName: reencrypt_refresh_overlay_devices
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - log_err
    - reenc_refresh_helper_devices
    - _
    - reencrypt_load_overlay_device
    linkageType: ''
    returnType: int
    signature: "int reencrypt_refresh_overlay_devices(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tconst char *overlay,\n\t\tconst char *hotzone,\n\t\tstruct
      device *hotzone_device,\n\t\tstruct volume_key *vks,\n\t\tuint64_t device_size,\n\t\tuint32_t
      flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2435,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2437,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2437,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2438,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2438,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2442,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2442,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2442,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2445,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2446,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2446,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2447,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2447,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2450,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2456,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2458,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2459,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2459,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2460,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2460,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2463,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2471,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2472,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 4
    argNames:
    - cd
    - devfd
    - data_shift
    - mode
    argTypes:
    - struct crypt_device*
    - int
    - uint64_t
    - crypt_reencrypt_mode_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2474
      start: 2425
    functionDepth: 4
    functionLinenumber: 2425
    functionLinenumberEnd: 2474
    functionName: reencrypt_move_data
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - free
    - posix_memalign
    - json_segment_get_size
    - json_segment_get_offset
    - read_lseek_blockwise
    - log_dbg
    - LUKS2_get_segment_jobj
    - write_lseek_blockwise
    - device_block_size
    - device_alignment
    - crypt_safe_memzero
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int reencrypt_move_data(struct crypt_device *cd,\n\tint devfd,\n\tuint64_t
      data_shift,\n\tcrypt_reencrypt_mode_info mode)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2494,1
    - Dst: LUKS2_segment_first_unused_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2499,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2504,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2504,1
    - Dst: LUKS2_segment_set_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2508,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2512,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2512,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2516,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2516,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2521,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2521,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2528,1
    - Dst: json_segment_create_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2534,1
    - Dst: json_segment_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2535,1
    - Dst: json_segment_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2537,1
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2539,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2542,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2542,1
    - Dst: LUKS2_get_data_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2548,1
    - Dst: json_segment_create_linear
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2553,1
    - Dst: json_segment_create_linear
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2555,1
    - Dst: LUKS2_segment_set_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2563,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2567,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2567,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2571,1
    - Dst: modify_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2579,1
    - Dst: json_segment_create_crypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2583,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2584,1
    - Dst: modify_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2588,1
    - Dst: json_segment_create_linear
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2592,1
    - Dst: LUKS2_segment_set_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2600,1
    - Dst: json_object_object_add_by_uint_by_ref
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2604,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2604,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2608,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2613,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2613,1
    - Dst: LUKS2_set_keyslots_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2614,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2614,1
    - Dst: reencrypt_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2614,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2615,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2615,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2622,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2623,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2624,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 125
    argCount: 6
    argNames:
    - cd
    - hdr
    - digest_new
    - cipher
    - data_offset
    - params
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - char*
    - uint64_t
    - struct crypt_params_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2476
    functionDepth: 4
    functionLinenumber: 2476
    functionLinenumberEnd: 2626
    functionName: reencrypt_make_backup_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - json_segment_create_linear
    - json_object_object_add_by_uint_by_ref
    - json_segment_get_cipher
    - crypt_get_iv_offset
    - LUKS2_segment_set_flag
    - reencrypt_segment_new
    - json_segment_type
    - LUKS2_segment_first_unused_id
    - json_segment_create_crypt
    - strcmp
    - json_object_put
    - LUKS2_set_keyslots_size
    - LUKS2_digest_by_segment
    - json_segment_get_sector_size
    - LUKS2_get_segments_jobj
    - LUKS2_digest_segment_assign
    - json_object_copy
    - log_err
    - crypt_data_device
    - json_segment_get_iv_offset
    - _
    - LUKS2_get_data_size
    - crypt_metadata_device
    - json_segment_get_offset
    - LUKS2_get_segment_jobj
    - modify_offset
    linkageType: ''
    returnType: int
    signature: "int reencrypt_make_backup_segments(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tint digest_new,\n\t\tconst char *cipher,\n\t\tuint64_t
      data_offset,\n\t\tconst struct crypt_params_reencrypt *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2632,1
    - Dst: LUKS2_digest_verify_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2636,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - cd
    - digest
    - vks
    argTypes:
    - struct crypt_device*
    - int
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2640
      start: 2628
    functionDepth: 1
    functionLinenumber: 2628
    functionLinenumberEnd: 2640
    functionName: reencrypt_verify_single_key
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_digest_verify_by_digest
    - crypt_volume_key_by_id
    linkageType: ''
    returnType: int
    signature: int reencrypt_verify_single_key(struct crypt_device *cd, int digest,
      struct volume_key *vks)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_verify_single_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2649,1
    - Dst: reencrypt_verify_single_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2652,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 4
    argNames:
    - cd
    - digest_old
    - digest_new
    - vks
    argTypes:
    - struct crypt_device*
    - int
    - int
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2656
      start: 2642
    functionDepth: 2
    functionLinenumber: 2642
    functionLinenumberEnd: 2656
    functionName: reencrypt_verify_keys
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_verify_single_key
    linkageType: ''
    returnType: int
    signature: "int reencrypt_verify_keys(struct crypt_device *cd,\n\tint digest_old,\n\tint
      digest_new,\n\tstruct volume_key *vks)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2664,1
    - Dst: LUKS2_volume_key_load_in_keyring_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2668,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cd
    - digest
    - vks
    argTypes:
    - struct crypt_device*
    - int
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2669
      start: 2658
    functionDepth: 1
    functionLinenumber: 2658
    functionLinenumberEnd: 2669
    functionName: reencrypt_upload_single_key
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_volume_key_load_in_keyring_by_digest
    - crypt_volume_key_by_id
    linkageType: ''
    returnType: int
    signature: "int reencrypt_upload_single_key(struct crypt_device *cd,\n\tint digest,\n\tstruct
      volume_key *vks)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_use_keyring_for_vk
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2679,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2682,1
    - Dst: reencrypt_segment_cipher_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2682,1
    - Dst: reencrypt_upload_single_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2683,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2686,1
    - Dst: reencrypt_segment_cipher_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2686,1
    - Dst: reencrypt_upload_single_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2687,1
    - Dst: crypt_drop_uploaded_keyring_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2688,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 5
    argNames:
    - cd
    - hdr
    - digest_old
    - digest_new
    - vks
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2671
    functionDepth: 4
    functionLinenumber: 2671
    functionLinenumberEnd: 2693
    functionName: reencrypt_upload_keys
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_drop_uploaded_keyring_key
    - reencrypt_segment_cipher_old
    - reencrypt_segment_cipher_new
    - crypt_use_keyring_for_vk
    - crypt_is_cipher_null
    - reencrypt_upload_single_key
    linkageType: ''
    returnType: int
    signature: "int reencrypt_upload_keys(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tint digest_old,\n\tint digest_new,\n\tstruct volume_key *vks)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_verify_keys
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2703,1
    - Dst: reencrypt_upload_keys
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2707,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - cd
    - hdr
    - digest_old
    - digest_new
    - vks
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2712
      start: 2695
    functionDepth: 5
    functionLinenumber: 2695
    functionLinenumberEnd: 2712
    functionName: reencrypt_verify_and_upload_keys
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_upload_keys
    - reencrypt_verify_keys
    linkageType: ''
    returnType: int
    signature: "int reencrypt_verify_and_upload_keys(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint digest_old,\n\tint digest_new,\n\tstruct volume_key *vks)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2720,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2725,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2729,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2732,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2733,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2733,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2737,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - cd
    - params
    argTypes:
    - struct crypt_device*
    - struct crypt_params_reencrypt*
    assertStmts:
    - condition: (params)
      pos:
        line_end: 2719
        line_start: 2719
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 2740
      start: 2714
    functionDepth: 1
    functionLinenumber: 2714
    functionLinenumberEnd: 2740
    functionName: reencrypt_verify_checksum_params
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_size
    - _
    - assert
    - log_err
    - crypt_hash_init
    - strlen
    linkageType: ''
    returnType: int
    signature: "int reencrypt_verify_checksum_params(struct crypt_device *cd,\n\t\tconst
      struct crypt_params_reencrypt *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2746,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2750,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2751,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2751,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - cd
    - params
    - sector_size
    argTypes:
    - struct crypt_device*
    - struct crypt_params_reencrypt*
    - uint32_t
    assertStmts:
    - condition: (params)
      pos:
        line_end: 2745
        line_start: 2745
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 2757
      start: 2742
    functionDepth: 1
    functionLinenumber: 2742
    functionLinenumberEnd: 2757
    functionName: reencrypt_verify_datashift_params
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - MISALIGNED
    - log_err
    - _
    - assert
    linkageType: ''
    returnType: int
    signature: "int reencrypt_verify_datashift_params(struct crypt_device *cd,\n\t\tconst
      struct crypt_params_reencrypt *params,\n\t\tuint32_t sector_size)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2767,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2769,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2771,1
    - Dst: reencrypt_verify_datashift_params
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2772,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2773,1
    - Dst: reencrypt_verify_checksum_params
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2776,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2777,1
    - Dst: reencrypt_verify_datashift_params
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2779,1
    - Dst: reencrypt_verify_checksum_params
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2781,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2782,1
    - Dst: reencrypt_verify_datashift_params
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2785,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2788,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2788,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 26
    argCount: 4
    argNames:
    - cd
    - params
    - sector_size
    - move_first_segment
    argTypes:
    - struct crypt_device*
    - struct crypt_params_reencrypt*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2790
      start: 2759
    functionDepth: 2
    functionLinenumber: 2759
    functionLinenumberEnd: 2790
    functionName: reencrypt_verify_resilience_params
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - reencrypt_verify_datashift_params
    - log_err
    - strcmp
    - reencrypt_verify_checksum_params
    linkageType: ''
    returnType: int
    signature: "int reencrypt_verify_resilience_params(struct crypt_device *cd,\n\t\tconst
      struct crypt_params_reencrypt *params,\n\t\tuint32_t sector_size, bool move_first_segment)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2809,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2814,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2815,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2816,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2817,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2818,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2824,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2824,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2828,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2837,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2837,1
    - Dst: device_open_excl
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2839,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2839,1
    - Dst: reencrypt_set_decrypt_shift_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2852,1
    - Dst: reencrypt_make_backup_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2858,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2860,1
    - Dst: reencrypt_verify_resilience_params
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2864,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2866,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2866,1
    - Dst: LUKS2_keyslot_reencrypt_allocate
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2870,1
    - Dst: reencrypt_get_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2871,1
    - Dst: LUKS2_keyslot_reencrypt_load
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2875,1
    - Dst: LUKS2_reencrypt_max_hotzone_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2879,1
    - Dst: LUKS2_reencrypt_protection_erase
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2885,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2888,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2888,1
    - Dst: LUKS2_keyslot_context_open_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2894,1
    - Dst: LUKS2_keyslot_reencrypt_digest_create
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2899,1
    - Dst: reencrypt_verify_and_upload_keys
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2904,1
    - Dst: LUKS2_reencrypt_digest_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2905,1
    - Dst: LUKS2_reencrypt_digest_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2906,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2911,1
    - Dst: reencrypt_segments_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2917,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2919,1
    - Dst: LUKS2_assembly_multisegment_dmd
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2924,1
    - Dst: crypt_compare_dm_devices
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2926,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2928,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2928,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2930,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2932,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2933,1
    - Dst: LUKS2_assembly_multisegment_dmd
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2940,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2940,1
    - Dst: dm_reload_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2942,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2944,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2944,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2949,1
    - Dst: dm_suspend_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2956,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2958,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2958,1
    - Dst: reencrypt_move_data
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2963,1
    - Dst: reencrypt_update_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2969,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2971,1
    - Dst: dm_clear_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2976,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2977,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2977,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2978,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2979,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2979,1
    - Dst: device_release_excl
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2981,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2981,1
    - Dst: LUKS2_hdr_rollback
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2982,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:2983,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 139
    argCount: 11
    argNames:
    - cd
    - name
    - hdr
    - reencrypt_keyslot
    - sector_size
    - data_size
    - data_offset
    - kc_old
    - keyslot_old
    - params
    - vks
    argTypes:
    - struct crypt_device*
    - char*
    - struct luks2_hdr*
    - int
    - uint32_t
    - uint64_t
    - uint64_t
    - struct crypt_keyslot_context*
    - int
    - struct crypt_params_reencrypt*
    - struct volume_key**
    assertStmts:
    - condition: (params->resilience)
      pos:
        line_end: 2815
        line_start: 2815
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (vks)
      pos:
        line_end: 2817
        line_start: 2817
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (params->data_shift)
      pos:
        line_end: 2816
        line_start: 2816
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (hdr)
      pos:
        line_end: 2813
        line_start: 2813
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (params)
      pos:
        line_end: 2814
        line_start: 2814
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 2986
      start: 2792
    functionDepth: 8
    functionLinenumber: 2792
    functionLinenumberEnd: 2986
    functionName: reencrypt_decrypt_with_datashift_init
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_keyslot_reencrypt_allocate
    - LUKS2_reencrypt_digest_new
    - LUKS2_reencrypt_protection_erase
    - reencrypt_set_decrypt_shift_segments
    - LUKS2_keyslot_reencrypt_load
    - LUKS2_assembly_multisegment_dmd
    - crypt_compare_dm_devices
    - reencrypt_get_alignment
    - LUKS2_keyslot_context_open_all_segments
    - log_dbg
    - dm_reload_device
    - dm_query_device
    - dm_suspend_device
    - dm_resume_device
    - reencrypt_make_backup_segments
    - json_object_put
    - device_release_excl
    - reencrypt_update_flag
    - LUKS2_keyslot_reencrypt_digest_create
    - LUKS2_reencrypt_max_hotzone_size
    - dm_targets_free
    - LUKS2_reencrypt_digest_old
    - LUKS2_get_segments_jobj
    - reencrypt_verify_resilience_params
    - log_err
    - reencrypt_move_data
    - reencrypt_verify_and_upload_keys
    - reencrypt_segments_old
    - crypt_data_device
    - crypt_get_uuid
    - device_open
    - _
    - device_open_excl
    - assert
    - dm_clear_device
    - LUKS2_hdr_rollback
    linkageType: ''
    returnType: int
    signature: "int reencrypt_decrypt_with_datashift_init(struct crypt_device *cd,\n\t\tconst
      char *name,\n\t\tstruct luks2_hdr *hdr,\n\t\tint reencrypt_keyslot,\n\t\tuint32_t
      sector_size,\n\t\tuint64_t data_size,\n\t\tuint64_t data_offset,\n\t\tstruct
      crypt_keyslot_context *kc_old,\n\t\tint keyslot_old,\n\t\tconst struct crypt_params_reencrypt
      *params,\n\t\tstruct volume_key **vks)"
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3008,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3012,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3013,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3023,1
    - Dst: crypt_reencrypt_mode_to_str
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3024,1
    - Dst: LUKS2_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3028,1
    - Dst: NOTPOW2
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3033,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3034,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3034,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3041,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3043,1
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3047,1
    - Dst: device_check_access
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3049,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3049,1
    - Dst: device_check_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3053,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3053,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3057,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3057,1
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3062,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3063,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3063,1
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3064,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3073,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3073,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3073,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3073,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3078,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3078,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3085,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3085,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3094,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3095,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3095,1
    - Dst: LUKS2_keyslot_find_empty
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3099,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3101,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3101,1
    - Dst: reencrypt_decrypt_with_datashift_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3106,1
    - Dst: device_open_excl
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3122,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3122,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3125,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3125,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3126,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3126,1
    - Dst: reencrypt_set_encrypt_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3133,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3142,1
    - Dst: struct crypt_keyslot_context*::get_luks2_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3143,1
    - Dst: LUKS2_digest_verify_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3148,1
    - Dst: LUKS2_digest_create
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3150,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3152,1
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3157,1
    - Dst: reencrypt_make_backup_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3159,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3161,1
    - Dst: reencrypt_verify_resilience_params
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3165,1
    - Dst: LUKS2_keyslot_reencrypt_allocate
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3169,1
    - Dst: reencrypt_get_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3170,1
    - Dst: LUKS2_keyslot_context_open_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3174,1
    - Dst: LUKS2_keyslot_reencrypt_digest_create
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3178,1
    - Dst: reencrypt_verify_and_upload_keys
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3183,1
    - Dst: LUKS2_reencrypt_digest_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3183,1
    - Dst: LUKS2_reencrypt_digest_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3183,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3187,1
    - Dst: LUKS2_assembly_multisegment_dmd
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3193,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3193,1
    - Dst: crypt_compare_dm_devices
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3195,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3197,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3197,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3200,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3201,1
    - Dst: reencrypt_move_data
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3208,1
    - Dst: reencrypt_update_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3214,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3216,1
    - Dst: device_release_excl
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3221,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3221,1
    - Dst: LUKS2_hdr_rollback
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3222,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3223,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 158
    argCount: 11
    argNames:
    - cd
    - name
    - hdr
    - kc_old
    - kc_new
    - keyslot_old
    - keyslot_new
    - cipher
    - cipher_mode
    - params
    - vks
    argTypes:
    - struct crypt_device*
    - char*
    - struct luks2_hdr*
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - int
    - int
    - char*
    - char*
    - struct crypt_params_reencrypt*
    - struct volume_key**
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 3011
        line_start: 3011
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (hdr)
      pos:
        line_end: 3012
        line_start: 3012
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (kc_new->get_luks2_key)
      pos:
        line_end: 3141
        line_start: 3141
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 3226
      start: 2989
    functionDepth: 9
    functionLinenumber: 2989
    functionLinenumberEnd: 3226
    functionName: reencrypt_init
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - MISALIGNED
    - device_check_access
    - LUKS2_keyslot_reencrypt_allocate
    - LUKS2_reencrypt_digest_new
    - LUKS2_get_sector_size
    - LUKS2_assembly_multisegment_dmd
    - crypt_compare_dm_devices
    - reencrypt_set_encrypt_segments
    - NOTPOW2
    - LUKS2_get_data_offset
    - reencrypt_get_alignment
    - LUKS2_keyslot_context_open_all_segments
    - log_dbg
    - dm_query_device
    - LUKS2_digest_by_keyslot
    - LUKS2_digest_verify_by_segment
    - device_check_size
    - reencrypt_make_backup_segments
    - device_release_excl
    - reencrypt_update_flag
    - struct crypt_keyslot_context*::get_luks2_key
    - LUKS2_keyslot_reencrypt_digest_create
    - dm_targets_free
    - crypt_free_volume_key
    - LUKS2_reencrypt_digest_old
    - LUKS2_get_segments_jobj
    - device_size
    - LUKS2_keyslot_find_empty
    - crypt_reencrypt_mode_to_str
    - reencrypt_verify_resilience_params
    - log_err
    - reencrypt_move_data
    - reencrypt_verify_and_upload_keys
    - crypt_data_device
    - crypt_get_uuid
    - LUKS2_digest_create
    - _
    - snprintf
    - device_open_excl
    - assert
    - device_path
    - reencrypt_decrypt_with_datashift_init
    - LUKS2_hdr_rollback
    linkageType: ''
    returnType: int
    signature: "int reencrypt_init(struct crypt_device *cd,\n\t\tconst char *name,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tstruct crypt_keyslot_context *kc_old,\n\t\tstruct crypt_keyslot_context
      *kc_new,\n\t\tint keyslot_old,\n\t\tint keyslot_new,\n\t\tconst char *cipher,\n\t\tconst
      char *cipher_mode,\n\t\tconst struct crypt_params_reencrypt *params,\n\t\tstruct
      volume_key **vks)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3237,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3238,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3244,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3247,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3248,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3251,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3252,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3258,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3262,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3263,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3267,1
    - Dst: LUKS2_keyslot_reencrypt_store
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3269,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 6
    argNames:
    - cd
    - hdr
    - reencrypt_keyslot
    - rp
    - buffer
    - buffer_len
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - struct reenc_protection*
    - void*
    - size_t
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 3236
        line_start: 3236
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (rp)
      pos:
        line_end: 3237
        line_start: 3237
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 3272
      start: 3228
    functionDepth: 1
    functionLinenumber: 3228
    functionLinenumberEnd: 3272
    functionName: reencrypt_hotzone_protect_final
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_hash_final
    - LUKS2_hdr_write
    - LUKS2_keyslot_reencrypt_store
    - assert
    - log_dbg
    - crypt_hash_write
    linkageType: ''
    returnType: int
    signature: "int reencrypt_hotzone_protect_final(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr, int reencrypt_keyslot,\n\tconst struct reenc_protection *rp,\n\tconst
      void *buffer, size_t buffer_len)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3283,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3284,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3286,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3289,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3302,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3311,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 35
    argCount: 2
    argNames:
    - cd
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3318
      start: 3274
    functionDepth: 2
    functionLinenumber: 3274
    functionLinenumberEnd: 3318
    functionName: reencrypt_context_update
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - data_shift_value
    - json_segment_get_size
    linkageType: ''
    returnType: int
    signature: "int reencrypt_context_update(struct crypt_device *cd,\n\tstruct luks2_reencrypt
      *rh)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3329,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3332,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3332,1
    - Dst: LUKS2_reencrypt_digest_verify
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3337,1
    - Dst: reencrypt_load_clean
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3342,1
    - Dst: reencrypt_load_crashed
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3344,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3349,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3349,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 7
    argNames:
    - cd
    - hdr
    - device_size
    - max_hotzone_size
    - required_device_size
    - vks
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint64_t
    - uint64_t
    - uint64_t
    - struct volume_key*
    - struct luks2_reencrypt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3356
      start: 3320
    functionDepth: 9
    functionLinenumber: 3320
    functionLinenumberEnd: 3356
    functionName: reencrypt_load
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 2
    functionsReached:
    - _
    - reencrypt_load_clean
    - log_err
    - LUKS2_reencrypt_status
    - LUKS2_reencrypt_digest_verify
    - reencrypt_load_crashed
    linkageType: ''
    returnType: int
    signature: "int reencrypt_load(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\tuint64_t
      device_size,\n\t\tuint64_t max_hotzone_size,\n\t\tuint64_t required_device_size,\n\t\tstruct
      volume_key *vks,\n\t\tstruct luks2_reencrypt **rh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - cd
    - hdr
    - rp
    - reencrypt_keyslot
    - r_length
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct reenc_protection*
    - int
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3365
      start: 3358
    functionDepth: 0
    functionLinenumber: 3358
    functionLinenumberEnd: 3365
    functionName: LUKS2_reencrypt_max_hotzone_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int LUKS2_reencrypt_max_hotzone_size(struct crypt_device *cd __attribute__((unused)),\n\tstruct
      luks2_hdr *hdr __attribute__((unused)),\n\tconst struct reenc_protection *rp
      __attribute__((unused)),\n\tint reencrypt_keyslot __attribute__((unused)),\n\tuint64_t
      *r_length __attribute__((unused)))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_locking_enabled
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3373,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3378,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3382,1
    - Dst: crypt_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3386,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3388,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - cd
    - uuid
    - reencrypt_lock
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_lock_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3391
      start: 3368
    functionDepth: 6
    functionLinenumber: 3368
    functionLinenumberEnd: 3391
    functionName: reencrypt_lock_internal
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_write_lock
    - crypt_metadata_locking_enabled
    - free
    - asprintf
    linkageType: ''
    returnType: int
    signature: int reencrypt_lock_internal(struct crypt_device *cd, const char *uuid,
      struct crypt_lock_handle **reencrypt_lock)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3399,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3405,1
    - Dst: dm_uuid_cmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3409,1
    - Dst: reencrypt_lock_internal
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3412,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - cd
    - dm_uuid
    - reencrypt_lock
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_lock_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3413
      start: 3394
    functionDepth: 7
    functionLinenumber: 3394
    functionLinenumberEnd: 3413
    functionName: LUKS2_reencrypt_lock_by_dm_uuid
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - reencrypt_lock_internal
    - snprintf
    - dm_uuid_cmp
    linkageType: ''
    returnType: int
    signature: "int LUKS2_reencrypt_lock_by_dm_uuid(struct crypt_device *cd, const
      char *dm_uuid,\n\tstruct crypt_lock_handle **reencrypt_lock)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3418,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3418,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3418,1
    - Dst: reencrypt_lock_internal
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3421,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3421,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - reencrypt_lock
    argTypes:
    - struct crypt_device*
    - struct crypt_lock_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3422
      start: 3416
    functionDepth: 7
    functionLinenumber: 3416
    functionLinenumberEnd: 3422
    functionName: LUKS2_reencrypt_lock
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - crypt_get_uuid
    - strcmp
    - crypt_get_type
    - reencrypt_lock_internal
    linkageType: ''
    returnType: int
    signature: int LUKS2_reencrypt_lock(struct crypt_device *cd, struct crypt_lock_handle
      **reencrypt_lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_unlock_internal
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cd
    - reencrypt_lock
    argTypes:
    - struct crypt_device*
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3428
      start: 3425
    functionDepth: 4
    functionLinenumber: 3425
    functionLinenumberEnd: 3428
    functionName: LUKS2_reencrypt_unlock
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - crypt_unlock_internal
    linkageType: ''
    returnType: void
    signature: void LUKS2_reencrypt_unlock(struct crypt_device *cd, struct crypt_lock_handle
      *reencrypt_lock)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3437,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3441,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3441,1
    - Dst: LUKS2_reencrypt_lock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3445,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3448,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3448,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3450,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3450,1
    - Dst: crypt_load
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3455,1
    - Dst: LUKS2_reencrypt_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3457,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3461,1
    - Dst: LUKS2_reencrypt_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3467,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3468,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3468,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - cd
    - hdr
    - reencrypt_lock
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct crypt_lock_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3470
      start: 3430
    functionDepth: 8
    functionLinenumber: 3430
    functionLinenumberEnd: 3470
    functionName: reencrypt_lock_and_verify
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - log_err
    - LUKS2_reencrypt_unlock
    - LUKS2_reencrypt_lock
    - LUKS2_reencrypt_status
    linkageType: ''
    returnType: int
    signature: "int reencrypt_lock_and_verify(struct crypt_device *cd, struct luks2_hdr
      *hdr,\n\t\tstruct crypt_lock_handle **reencrypt_lock)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3489,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3497,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3499,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3503,1
    - Dst: reencrypt_get_sector_size_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3505,1
    - Dst: reencrypt_get_sector_size_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3506,1
    - Dst: reencrypt_verify_resilience_params
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3509,1
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3510,1
    - Dst: crypt_get_luks2_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3519,1
    - Dst: LUKS2_reencrypt_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3521,1
    - Dst: crypt_set_luks2_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3522,1
    - Dst: reencrypt_lock_and_verify
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3526,1
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3530,1
    - Dst: LUKS2_get_data_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3538,1
    - Dst: LUKS2_reencrypt_check_device_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3544,1
    - Dst: reencrypt_verify_keys
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3552,1
    - Dst: LUKS2_reencrypt_digest_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3552,1
    - Dst: LUKS2_reencrypt_digest_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3552,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3554,1
    - Dst: LUKS2_keyslot_context_open_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3555,1
    - Dst: reencrypt_upload_keys
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3563,1
    - Dst: LUKS2_reencrypt_digest_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3563,1
    - Dst: LUKS2_reencrypt_digest_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3563,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3567,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3581,1
    - Dst: LUKS2_reencrypt_digest_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3581,1
    - Dst: crypt_volume_key_description
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3582,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3582,1
    - Dst: reencrypt_segment_cipher_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3582,1
    - Dst: LUKS2_assembly_multisegment_dmd
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3587,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3587,1
    - Dst: crypt_compare_dm_devices
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3589,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3591,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3591,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3594,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3595,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3604,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3604,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3616,1
    - Dst: MISALIGNED
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3617,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3618,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3618,1
    - Dst: reencrypt_get_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3623,1
    - Dst: LUKS2_keyslot_reencrypt_update_needed
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3625,1
    - Dst: LUKS2_keyslot_reencrypt_update
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3627,1
    - Dst: reencrypt_load
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3631,1
    - Dst: reencrypt_context_set_names
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3635,1
    - Dst: device_open_excl
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3639,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3639,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3640,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3640,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3640,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3640,1
    - Dst: device_release_excl
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3644,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3644,1
    - Dst: reencrypt_init_storage_wrappers
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3653,1
    - Dst: crypt_storage_wrapper_get_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3658,1
    - Dst: crypt_storage_wrapper_get_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3659,1
    - Dst: device_open_excl
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3660,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3660,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3661,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3661,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3661,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3661,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3669,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3670,1
    - Dst: crypt_set_luks2_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3672,1
    - Dst: LUKS2_reencrypt_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3676,1
    - Dst: LUKS2_reencrypt_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3677,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 138
    argCount: 8
    argNames:
    - cd
    - name
    - kc_old
    - kc_new
    - keyslot_old
    - keyslot_new
    - vks
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - int
    - int
    - struct volume_key**
    - struct crypt_params_reencrypt*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 3496
        line_start: 3496
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 3679
      start: 3472
    functionDepth: 10
    functionLinenumber: 3472
    functionLinenumberEnd: 3679
    functionName: reencrypt_load_by_keyslot_context
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - MISALIGNED
    - reencrypt_init_storage_wrappers
    - LUKS2_keyslot_reencrypt_update
    - reencrypt_segment_cipher_old
    - LUKS2_reencrypt_digest_new
    - LUKS2_assembly_multisegment_dmd
    - LUKS2_keyslot_reencrypt_update_needed
    - crypt_compare_dm_devices
    - LUKS2_get_segment_id_by_flag
    - crypt_set_luks2_reencrypt
    - reencrypt_get_alignment
    - crypt_storage_wrapper_get_type
    - crypt_get_luks2_reencrypt
    - LUKS2_keyslot_context_open_all_segments
    - MOVE_REF
    - crypt_volume_key_by_id
    - log_dbg
    - LUKS2_reencrypt_free
    - reencrypt_verify_keys
    - dm_query_device
    - reencrypt_load
    - LUKS2_reencrypt_unlock
    - device_release_excl
    - reencrypt_context_set_names
    - crypt_get_hdr
    - crypt_volume_key_description
    - reencrypt_lock_and_verify
    - LUKS2_reencrypt_digest_old
    - reencrypt_get_sector_size_old
    - LUKS2_get_segments_jobj
    - dm_targets_free
    - reencrypt_get_sector_size_new
    - reencrypt_verify_resilience_params
    - log_err
    - LUKS2_reencrypt_check_device_size
    - crypt_is_cipher_null
    - crypt_data_device
    - crypt_get_uuid
    - reencrypt_upload_keys
    - _
    - LUKS2_find_keyslot
    - device_open_excl
    - LUKS2_get_data_size
    - assert
    - device_path
    linkageType: ''
    returnType: int
    signature: "int reencrypt_load_by_keyslot_context(struct crypt_device *cd,\n\t\tconst
      char *name,\n\t\tstruct crypt_keyslot_context *kc_old,\n\t\tstruct crypt_keyslot_context
      *kc_new,\n\t\tint keyslot_old,\n\t\tint keyslot_new,\n\t\tstruct volume_key
      **vks,\n\t\tconst struct crypt_params_reencrypt *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_keyslot_context_open_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3691,1
    - Dst: LUKS2_reencrypt_locked_recovery_by_vks
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3697,1
    - Dst: MOVE_REF
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3699,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3701,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 6
    argNames:
    - cd
    - keyslot_old
    - keyslot_new
    - kc_old
    - kc_new
    - r_vks
    argTypes:
    - struct crypt_device*
    - int
    - int
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3704
      start: 3681
    functionDepth: 2
    functionLinenumber: 3681
    functionLinenumberEnd: 3704
    functionName: reencrypt_locked_recovery
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_keyslot_context_open_all_segments
    - LUKS2_reencrypt_locked_recovery_by_vks
    - MOVE_REF
    - crypt_free_volume_key
    linkageType: ''
    returnType: int
    signature: "int reencrypt_locked_recovery(struct crypt_device *cd,\n\tint keyslot_old,\n\tint
      keyslot_new,\n\tstruct crypt_keyslot_context *kc_old,\n\tstruct crypt_keyslot_context
      *kc_new,\n\tstruct volume_key **r_vks)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_lock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3717,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3720,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3720,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3722,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3722,1
    - Dst: crypt_load
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3726,1
    - Dst: LUKS2_reencrypt_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3727,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3731,1
    - Dst: LUKS2_reencrypt_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3733,1
    - Dst: reencrypt_locked_recovery
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3738,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3741,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3741,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3743,1
    - Dst: LUKS2_reencrypt_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3747,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 6
    argNames:
    - cd
    - hdr
    - keyslot_old
    - keyslot_new
    - kc_old
    - kc_new
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3749
      start: 3706
    functionDepth: 8
    functionLinenumber: 3706
    functionLinenumberEnd: 3749
    functionName: reencrypt_recovery_by_keyslot_context
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_load
    - _
    - LUKS2_reencrypt_status
    - log_err
    - log_dbg
    - LUKS2_reencrypt_lock
    - LUKS2_reencrypt_unlock
    - reencrypt_locked_recovery
    linkageType: ''
    returnType: int
    signature: "int reencrypt_recovery_by_keyslot_context(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint keyslot_old,\n\tint keyslot_new,\n\tstruct crypt_keyslot_context
      *kc_old,\n\tstruct crypt_keyslot_context *kc_new)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3767,1
    - Dst: crypt_get_luks2_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3769,1
    - Dst: LUKS2_reencrypt_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3771,1
    - Dst: crypt_set_luks2_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3772,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3776,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3781,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3781,1
    - Dst: LUKS2_reencrypt_lock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3785,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3788,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3788,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3790,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3790,1
    - Dst: crypt_load
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3795,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3799,1
    - Dst: reencrypt_resilience_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3809,1
    - Dst: reencrypt_mode
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3815,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3816,1
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3817,1
    - Dst: LUKS2_keyslot_context_open_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3822,1
    - Dst: LUKS2_keyslot_reencrypt_digest_create
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3826,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3827,1
    - Dst: reencrypt_update_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3833,1
    - Dst: LUKS2_reencrypt_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3835,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3836,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 62
    argCount: 6
    argNames:
    - cd
    - hdr
    - keyslot_old
    - keyslot_new
    - kc_old
    - kc_new
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3839
      start: 3751
    functionDepth: 8
    functionLinenumber: 3751
    functionLinenumberEnd: 3839
    functionName: reencrypt_repair
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - crypt_load
    - _
    - LUKS2_keyslot_reencrypt_digest_create
    - reencrypt_mode
    - reencrypt_update_flag
    - crypt_get_luks2_reencrypt
    - LUKS2_keyslot_context_open_all_segments
    - crypt_free_volume_key
    - strncmp
    - log_dbg
    - LUKS2_reencrypt_free
    - log_err
    - LUKS2_reencrypt_unlock
    - LUKS2_reencrypt_lock
    - LUKS2_reencrypt_status
    - reencrypt_resilience_type
    - LUKS2_get_segment_id_by_flag
    - crypt_set_luks2_reencrypt
    linkageType: ''
    returnType: int
    signature: "int reencrypt_repair(\n\t\tstruct crypt_device *cd,\n\t\tstruct luks2_hdr
      *hdr,\n\t\tint keyslot_old,\n\t\tint keyslot_new,\n\t\tstruct crypt_keyslot_context
      *kc_old,\n\t\tstruct crypt_keyslot_context *kc_new)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3856,1
    - Dst: reencrypt_repair
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3865,1
    - Dst: reencrypt_recovery_by_keyslot_context
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3869,1
    - Dst: device_direct_io
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3871,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3871,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3872,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3872,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3872,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3874,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3874,1
    - Dst: crypt_cipher_wrapped_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3878,1
    - Dst: struct crypt_keyslot_context*::get_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3880,1
    - Dst: crypt_keyslot_get_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3882,1
    - Dst: LUKS2_check_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3888,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3890,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3890,1
    - Dst: LUKS2_device_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3895,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3895,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3899,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3901,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3901,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3906,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3906,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3907,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3907,1
    - Dst: reencrypt_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3912,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3915,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3915,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3917,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3921,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3921,1
    - Dst: reencrypt_load_by_keyslot_context
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3926,1
    - Dst: crypt_drop_uploaded_keyring_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3930,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3931,1
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3932,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 60
    argCount: 9
    argNames:
    - cd
    - name
    - kc_old
    - kc_new
    - keyslot_old
    - keyslot_new
    - cipher
    - cipher_mode
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - int
    - int
    - char*
    - char*
    - struct crypt_params_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3933
      start: 3841
    functionDepth: 11
    functionLinenumber: 3841
    functionLinenumberEnd: 3933
    functionName: reencrypt_init_by_keyslot_context
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 6
    functionsReached:
    - LUKS2_device_write_lock
    - crypt_drop_uploaded_keyring_key
    - crypt_cipher_wrapped_key
    - struct crypt_keyslot_context*::get_key_size
    - device_direct_io
    - reencrypt_repair
    - reencrypt_recovery_by_keyslot_context
    - log_dbg
    - LUKS2_reencrypt_status
    - crypt_get_hdr
    - crypt_free_volume_key
    - LUKS2_check_cipher
    - log_err
    - device_write_unlock
    - crypt_data_device
    - _
    - LUKS2_find_keyslot
    - reencrypt_init
    - crypt_metadata_device
    - crypt_keyslot_get_key_size
    - device_path
    - reencrypt_load_by_keyslot_context
    linkageType: ''
    returnType: int
    signature: "int reencrypt_init_by_keyslot_context(struct crypt_device *cd,\n\tconst
      char *name,\n\tstruct crypt_keyslot_context *kc_old,\n\tstruct crypt_keyslot_context
      *kc_new,\n\tint keyslot_old,\n\tint keyslot_new,\n\tconst char *cipher,\n\tconst
      char *cipher_mode,\n\tconst struct crypt_params_reencrypt *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3945,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 9
    argNames:
    - cd
    - name
    - kc_old
    - kc_new
    - keyslot_old
    - keyslot_new
    - cipher
    - cipher_mode
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - int
    - int
    - char*
    - char*
    - struct crypt_params_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3947
      start: 3935
    functionDepth: 1
    functionLinenumber: 3935
    functionLinenumberEnd: 3947
    functionName: reencrypt_init_by_keyslot_context
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 6
    functionsReached:
    - log_err
    - _
    linkageType: ''
    returnType: int
    signature: "int reencrypt_init_by_keyslot_context(struct crypt_device *cd,\n\tconst
      char *name __attribute__((unused)),\n\tstruct crypt_keyslot_context *kc_old
      __attribute__((unused)),\n\tstruct crypt_keyslot_context *kc_new __attribute__((unused)),\n\tint
      keyslot_old __attribute__((unused)),\n\tint keyslot_new __attribute__((unused)),\n\tconst
      char *cipher __attribute__((unused)),\n\tconst char *cipher_mode __attribute__((unused)),\n\tconst
      struct crypt_params_reencrypt *params __attribute__((unused)))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS2reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3962,1
    - Dst: device_is_dax
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3967,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3967,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3968,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3968,1
    - Dst: crypt_keyslot_context_init_by_keyring_internal
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3972,1
    - Dst: reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3973,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3976,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 8
    argNames:
    - cd
    - name
    - passphrase_description
    - keyslot_old
    - keyslot_new
    - cipher
    - cipher_mode
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - int
    - int
    - char*
    - char*
    - struct crypt_params_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3979
      start: 3950
    functionDepth: 12
    functionLinenumber: 3950
    functionLinenumberEnd: 3979
    functionName: crypt_reencrypt_init_by_keyring
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - onlyLUKS2reencrypt
    - _
    - crypt_keyslot_context_destroy_internal
    - reencrypt_init_by_keyslot_context
    - log_err
    - crypt_keyslot_context_init_by_keyring_internal
    - device_is_dax
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int crypt_reencrypt_init_by_keyring(struct crypt_device *cd,\n\tconst
      char *name,\n\tconst char *passphrase_description,\n\tint keyslot_old,\n\tint
      keyslot_new,\n\tconst char *cipher,\n\tconst char *cipher_mode,\n\tconst struct
      crypt_params_reencrypt *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS2reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3994,1
    - Dst: device_is_dax
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3999,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:3999,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4000,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4000,1
    - Dst: crypt_keyslot_context_init_by_passphrase_internal
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4004,1
    - Dst: reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4006,1
    - Dst: crypt_keyslot_context_destroy_internal
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4009,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 9
    argNames:
    - cd
    - name
    - passphrase
    - passphrase_size
    - keyslot_old
    - keyslot_new
    - cipher
    - cipher_mode
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    - size_t
    - int
    - int
    - char*
    - char*
    - struct crypt_params_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4012
      start: 3981
    functionDepth: 12
    functionLinenumber: 3981
    functionLinenumberEnd: 4012
    functionName: crypt_reencrypt_init_by_passphrase
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 4
    functionsReached:
    - onlyLUKS2reencrypt
    - _
    - crypt_keyslot_context_destroy_internal
    - reencrypt_init_by_keyslot_context
    - log_err
    - crypt_keyslot_context_init_by_passphrase_internal
    - device_is_dax
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int crypt_reencrypt_init_by_passphrase(struct crypt_device *cd,\n\tconst
      char *name,\n\tconst char *passphrase,\n\tsize_t passphrase_size,\n\tint keyslot_old,\n\tint
      keyslot_new,\n\tconst char *cipher,\n\tconst char *cipher_mode,\n\tconst struct
      crypt_params_reencrypt *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS2reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4024,1
    - Dst: device_is_dax
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4029,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4029,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4030,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4030,1
    - Dst: reencrypt_init_by_keyslot_context
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4034,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 9
    argNames:
    - cd
    - name
    - kc_old
    - kc_new
    - keyslot_old
    - keyslot_new
    - cipher
    - cipher_mode
    - params
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - int
    - int
    - char*
    - char*
    - struct crypt_params_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4035
      start: 4014
    functionDepth: 12
    functionLinenumber: 4014
    functionLinenumberEnd: 4035
    functionName: crypt_reencrypt_init_by_keyslot_context
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 6
    functionsReached:
    - onlyLUKS2reencrypt
    - _
    - reencrypt_init_by_keyslot_context
    - log_err
    - device_is_dax
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int crypt_reencrypt_init_by_keyslot_context(struct crypt_device *cd,\n\tconst
      char *name,\n\tstruct crypt_keyslot_context *kc_old,\n\tstruct crypt_keyslot_context
      *kc_new,\n\tint keyslot_old,\n\tint keyslot_new,\n\tconst char *cipher,\n\tconst
      char *cipher_mode,\n\tconst struct crypt_params_reencrypt *params)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4047,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4048,1
    - Dst: reencrypt_make_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4053,1
    - Dst: reencrypt_assign_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4057,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4059,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4059,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4063,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4064,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4064,1
    - Dst: crypt_storage_wrapper_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4067,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4068,1
    - Dst: crypt_storage_wrapper_init
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4069,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4069,1
    - Dst: LUKS2_reencrypt_get_data_offset_moved
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4070,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4071,1
    - Dst: reencrypt_get_sector_size_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4072,1
    - Dst: reencrypt_segment_cipher_old
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4073,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4074,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4077,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4077,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4082,1
    - Dst: reencrypt_hotzone_protect_ready
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4087,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4089,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4089,1
    - Dst: reencrypt_refresh_overlay_devices
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4094,1
    - Dst: crypt_storage_wrapper_read
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4101,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4104,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4104,1
    - Dst: reencrypt_hotzone_protect_final
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4109,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4112,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4112,1
    - Dst: crypt_storage_wrapper_decrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4116,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4119,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4119,1
    - Dst: crypt_storage_wrapper_encrypt_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4122,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4124,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4124,1
    - Dst: crypt_storage_wrapper_datasync
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4128,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4129,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4129,1
    - Dst: reencrypt_assign_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4134,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4137,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4137,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4143,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4144,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4146,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4146,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 74
    argCount: 5
    argNames:
    - cd
    - hdr
    - rh
    - device_size
    - online
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - uint64_t
    - bool
    assertStmts:
    - condition: (rh)
      pos:
        line_end: 4047
        line_start: 4047
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (hdr)
      pos:
        line_end: 4046
        line_start: 4046
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 4152
      start: 4038
    functionDepth: 8
    functionLinenumber: 4038
    functionLinenumberEnd: 4152
    functionName: reencrypt_step
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_storage_wrapper_init
    - crypt_get_iv_offset
    - reencrypt_segment_cipher_old
    - crypt_storage_wrapper_read
    - crypt_storage_wrapper_decrypt
    - LUKS2_reencrypt_get_data_offset_moved
    - reencrypt_make_segments
    - crypt_volume_key_by_id
    - log_dbg
    - dm_resume_device
    - crypt_storage_wrapper_encrypt_write
    - crypt_storage_wrapper_datasync
    - reencrypt_get_sector_size_old
    - reencrypt_refresh_overlay_devices
    - log_err
    - crypt_get_data_offset
    - crypt_data_device
    - _
    - reencrypt_hotzone_protect_ready
    - crypt_storage_wrapper_destroy
    - assert
    - reencrypt_assign_segments
    - reencrypt_hotzone_protect_final
    linkageType: ''
    returnType: reenc_status_t
    signature: "reenc_status_t reencrypt_step(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr,\n\t\tstruct luks2_reencrypt *rh,\n\t\tuint64_t device_size,\n\t\tbool
      online)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4157,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4159,1
    - Dst: json_object_object_del_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4161,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4161,1
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4163,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4165,1
    - Dst: json_object_object_del_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4167,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4167,1
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4169,1
    - Dst: LUKS2_digest_segment_assign
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4171,1
    - Dst: json_object_object_del_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4173,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4173,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4177
      start: 4154
    functionDepth: 2
    functionLinenumber: 4154
    functionLinenumberEnd: 4177
    functionName: reencrypt_erase_backup_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_segments_jobj
    - LUKS2_digest_segment_assign
    - LUKS2_get_segment_id_by_flag
    - json_object_object_del_by_uint
    linkageType: ''
    returnType: int
    signature: "int reencrypt_erase_backup_segments(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4184,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4185,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4188,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4189,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4190,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4192,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4192,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4200,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4200,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4204,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4207,1
    - Dst: data_shift_value
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4208,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4209,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4211,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4211,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - cd
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_reencrypt*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 4183
        line_start: 4183
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    - condition: (rh)
      pos:
        line_end: 4184
        line_start: 4184
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 4216
      start: 4179
    functionDepth: 7
    functionLinenumber: 4179
    functionLinenumberEnd: 4216
    functionName: reencrypt_wipe_unused_device_area
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - device_size
    - json_segment_get_size
    - assert
    - json_segment_get_offset
    - log_dbg
    - data_shift_value
    - crypt_wipe_device
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: int reencrypt_wipe_unused_device_area(struct crypt_device *cd, struct
      luks2_reencrypt *rh)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4225,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4226,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4226,1
    - Dst: LUKS2_reload
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4231,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4233,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4233,1
    - Dst: dm_resume_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4235,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4237,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4237,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4239,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4240,1
    - Dst: dm_flags
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4243,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4244,1
    - Dst: reencrypt_wipe_unused_device_area
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4248,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4249,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4249,1
    - Dst: reencrypt_get_data_offset_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4250,1
    - Dst: LUKS2_set_keyslots_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4250,1
    - Dst: reencrypt_get_data_offset_new
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4250,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4251,1
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4254,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4254,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4255,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4255,1
    - Dst: reencrypt_erase_backup_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4257,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4258,1
    - Dst: reencrypt_update_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4260,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4261,1
    - Dst: crypt_keyslot_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4264,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4265,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4265,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 38
    argCount: 3
    argNames:
    - cd
    - hdr
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4271
      start: 4218
    functionDepth: 8
    functionLinenumber: 4218
    functionLinenumberEnd: 4271
    functionName: reencrypt_teardown_ok
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_erase_backup_segments
    - LUKS2_hdr_write
    - _
    - reencrypt_wipe_unused_device_area
    - reencrypt_update_flag
    - LUKS2_reload
    - dm_remove_device
    - dm_flags
    - crypt_keyslot_destroy
    - log_err
    - log_dbg
    - dm_resume_device
    - reencrypt_get_data_offset_new
    - LUKS2_digest_by_keyslot
    - LUKS2_set_keyslots_size
    linkageType: ''
    returnType: int
    signature: int reencrypt_teardown_ok(struct crypt_device *cd, struct luks2_hdr
      *hdr, struct luks2_reencrypt *rh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4275,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4275,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4276,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4279,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4279,1
    - Dst: dm_status_suspended
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4280,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4281,1
    - Dst: dm_error_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4282,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4283,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4283,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4284,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4284,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - cd
    - rh
    argTypes:
    - struct crypt_device*
    - struct luks2_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4288
      start: 4273
    functionDepth: 5
    functionLinenumber: 4273
    functionLinenumberEnd: 4288
    functionName: reencrypt_teardown_fatal
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - _
    - dm_status_suspended
    - log_err
    - log_dbg
    - dm_error_device
    - crypt_get_data_offset
    linkageType: ''
    returnType: void
    signature: void reencrypt_teardown_fatal(struct crypt_device *cd, struct luks2_reencrypt
      *rh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: progress
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4300,1
    - Dst: reencrypt_teardown_ok
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4301,1
    - Dst: reencrypt_teardown_fatal
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4304,1
    - Dst: LUKS2_reencrypt_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4311,1
    - Dst: crypt_set_luks2_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4312,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - cd
    - hdr
    - rh
    - rs
    - interrupted
    - usrptr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_reencrypt*
    - reenc_status_t
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4315
      start: 4290
    functionDepth: 9
    functionLinenumber: 4290
    functionLinenumberEnd: 4315
    functionName: reencrypt_teardown
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_teardown_ok
    - LUKS2_reencrypt_free
    - reencrypt_teardown_fatal
    - progress
    - crypt_set_luks2_reencrypt
    linkageType: ''
    returnType: int
    signature: "int reencrypt_teardown(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\tstruct
      luks2_reencrypt *rh, reenc_status_t rs, bool interrupted,\n\t\tint (*progress)(uint64_t
      size, uint64_t offset, void *usrptr),\n\t\tvoid *usrptr)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: onlyLUKS2reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4329,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4332,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4334,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4336,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4336,1
    - Dst: crypt_get_luks2_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4340,1
    - Dst: crypt_metadata_locking_enabled
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4341,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4342,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4342,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4346,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4350,1
    - Dst: device_direct_io
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4350,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4350,1
    - Dst: reencrypt_init_device_stack
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4352,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4353,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4353,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4358,1
    - Dst: progress
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4362,1
    - Dst: reencrypt_step
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4366,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4370,1
    - Dst: progress
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4371,1
    - Dst: reencrypt_context_update
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4374,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4376,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4376,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4381,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4382,1
    - Dst: reencrypt_teardown
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4385,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 44
    argCount: 2
    argNames:
    - cd
    - usrptr
    argTypes:
    - struct crypt_device*
    - void*
    assertStmts:
    - condition: (device_direct_io(crypt_data_device(cd)))
      pos:
        line_end: 4349
        line_start: 4349
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    constantsTouched: []
    func_position:
      end: 4387
      start: 4317
    functionDepth: 10
    functionLinenumber: 4317
    functionLinenumberEnd: 4387
    functionName: crypt_reencrypt_run
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 3
    functionsReached:
    - device_direct_io
    - onlyLUKS2reencrypt
    - reencrypt_step
    - _
    - crypt_get_hdr
    - reencrypt_init_device_stack
    - crypt_get_luks2_reencrypt
    - assert
    - log_err
    - log_dbg
    - crypt_metadata_locking_enabled
    - reencrypt_context_update
    - reencrypt_teardown
    - LUKS2_reencrypt_status
    - progress
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int crypt_reencrypt_run(\n\tstruct crypt_device *cd,\n\tint (*progress)(uint64_t
      size, uint64_t offset, void *usrptr),\n\tvoid *usrptr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_load
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4398,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4400,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4400,1
    - Dst: reencrypt_recover_segment
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4404,1
    - Dst: reencrypt_assign_segments
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4408,1
    - Dst: reencrypt_context_update
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4411,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4413,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4413,1
    - Dst: reencrypt_teardown_ok
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4417,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4419,1
    - Dst: LUKS2_reencrypt_free
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4421,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - cd
    - hdr
    - device_size
    - vks
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint64_t
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4424
      start: 4390
    functionDepth: 10
    functionLinenumber: 4390
    functionLinenumberEnd: 4424
    functionName: reencrypt_recovery
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - reencrypt_recover_segment
    - reencrypt_teardown_ok
    - LUKS2_hdr_write
    - _
    - log_err
    - LUKS2_reencrypt_free
    - reencrypt_load
    - reencrypt_assign_segments
    - reencrypt_context_update
    linkageType: ''
    returnType: int
    signature: "int reencrypt_recovery(struct crypt_device *cd,\n\t\tstruct luks2_hdr
      *hdr,\n\t\tuint64_t device_size,\n\t\tstruct volume_key *vks)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4431,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4432,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4434,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - usrptr
    argTypes:
    - struct crypt_device*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4436
      start: 4426
    functionDepth: 1
    functionLinenumber: 4426
    functionLinenumberEnd: 4436
    functionName: crypt_reencrypt_run
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 3
    functionsReached:
    - log_err
    - _
    - UNUSED
    linkageType: ''
    returnType: int
    signature: "int crypt_reencrypt_run(\n\tstruct crypt_device *cd,\n\tint (*progress)(uint64_t
      size, uint64_t offset, void *usrptr),\n\tvoid *usrptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_reencrypt_run
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4444
      start: 4439
    functionDepth: 11
    functionLinenumber: 4439
    functionLinenumberEnd: 4444
    functionName: crypt_reencrypt
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - crypt_reencrypt_run
    linkageType: ''
    returnType: int
    signature: "int crypt_reencrypt(\n\tstruct crypt_device *cd,\n\tint (*progress)(uint64_t
      size, uint64_t offset, void *usrptr))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4452,1
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4453,1
    - Dst: reencrypt_direction
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4455,1
    - Dst: reencrypt_data_shift
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - blockwise
    argTypes:
    - struct luks2_hdr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4459
      start: 4450
    functionDepth: 2
    functionLinenumber: 4450
    functionLinenumberEnd: 4459
    functionName: LUKS2_reencrypt_data_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 0
    functionsReached:
    - LUKS2_reencrypt_status
    - LUKS2_get_data_offset
    - reencrypt_data_shift
    - reencrypt_direction
    linkageType: ''
    returnType: int
    signature: int LUKS2_reencrypt_data_offset(struct luks2_hdr *hdr, bool blockwise)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: reencrypt_direction
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4468,1
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4469,1
    - Dst: reencrypt_data_shift
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4470,1
    - Dst: device_check_access
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4472,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4472,1
    - Dst: LUKS2_reencrypt_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4477,1
    - Dst: device_check_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4479,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4479,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4483,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4483,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4487,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4494,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4494,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4494,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4494,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 6
    argNames:
    - cd
    - hdr
    - check_size
    - dev_size
    - device_exclusive_check
    - dynamic
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint64_t
    - uint64_t*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4501
      start: 4462
    functionDepth: 3
    functionLinenumber: 4462
    functionLinenumberEnd: 4501
    functionName: LUKS2_reencrypt_check_device_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 2
    functionsReached:
    - LUKS2_reencrypt_data_offset
    - device_check_access
    - _
    - LUKS2_get_segment_by_flag
    - device_size
    - reencrypt_direction
    - log_dbg
    - log_err
    - device_path
    - device_check_size
    - reencrypt_data_shift
    - crypt_data_device
    linkageType: ''
    returnType: int
    signature: "int LUKS2_reencrypt_check_device_size(struct crypt_device *cd, struct
      luks2_hdr *hdr,\n\tuint64_t check_size, uint64_t *dev_size, bool device_exclusive_check,
      bool dynamic)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4509,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4511,1
    - Dst: LUKS2_get_data_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4513,1
    - Dst: LUKS2_reencrypt_check_device_size
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4515,1
    - Dst: reencrypt_recovery
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4518,1
    - Dst: crypt_drop_uploaded_keyring_key
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4522,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - cd
    - vks
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4524
      start: 4504
    functionDepth: 11
    functionLinenumber: 4504
    functionLinenumberEnd: 4524
    functionName: LUKS2_reencrypt_locked_recovery_by_vks
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 2
    functionsReached:
    - crypt_get_hdr
    - LUKS2_get_data_size
    - crypt_drop_uploaded_keyring_key
    - log_dbg
    - reencrypt_recovery
    - LUKS2_reencrypt_check_device_size
    linkageType: ''
    returnType: int
    signature: "int LUKS2_reencrypt_locked_recovery_by_vks(struct crypt_device *cd,\n\tstruct
      volume_key *vks)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4534,1
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4536,1
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4540,1
    - Dst: LUKS2_find_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4540,1
    - Dst: LUKS2_config_get_reencrypt_version
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4548,1
    - Dst: reencrypt_mode
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4554,1
    - Dst: reencrypt_direction
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4555,1
    - Dst: reencrypt_resilience_type
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4556,1
    - Dst: reencrypt_resilience_hash
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4557,1
    - Dst: reencrypt_data_shift
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4558,1
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_reencrypt.c:4560,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - hdr
    - params
    argTypes:
    - struct luks2_hdr*
    - struct crypt_params_reencrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4564
      start: 4526
    functionDepth: 2
    functionLinenumber: 4526
    functionLinenumberEnd: 4564
    functionName: LUKS2_reencrypt_get_params
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    functionUses: 1
    functionsReached:
    - memset
    - LUKS2_find_keyslot
    - reencrypt_mode
    - reencrypt_data_shift
    - reencrypt_direction
    - LUKS2_digest_by_keyslot
    - LUKS2_reencrypt_status
    - LUKS2_config_get_reencrypt_version
    - LUKS2_get_segment_id_by_flag
    - reencrypt_resilience_type
    - reencrypt_resilience_hash
    linkageType: ''
    returnType: crypt_reencrypt_info
    signature: "crypt_reencrypt_info LUKS2_reencrypt_get_params(struct luks2_hdr *hdr,\n\tstruct
      crypt_params_reencrypt *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_tokener_new
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:24,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:26,1
    - Dst: json_tokener_parse_ex
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:30,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:32,1
    - Dst: json_tokener_get_error
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:33,1
    - Dst: json_tokener_error_desc
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:34,1
    - Dst: json_tokener_get_error
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:34,1
    - Dst: json_tokener_free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:38,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - cd
    - json_area
    - max_length
    - json_len
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 41
    functionName: parse_json_len
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - json_tokener_get_error
    - json_tokener_error_desc
    - json_tokener_new
    - log_dbg
    - json_tokener_parse_ex
    - json_tokener_free
    linkageType: ''
    returnType: json_object
    signature: "json_object *parse_json_len(struct crypt_device *cd, const char *json_area,\n\t\t\t
      \   uint64_t max_length, int *json_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:49,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:50,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - cd
    - csum
    - csum_alg
    - info
    argTypes:
    - struct crypt_device*
    - uint8_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 54
    functionName: log_dbg_checksum
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - crypt_hash_size
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void log_dbg_checksum(struct crypt_device *cd,\n\t\t\t     const uint8_t
      *csum, const char *csum_alg, const char *info)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:67,1
    - Dst: crypt_hash_init
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:68,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:72,1
    - Dst: crypt_hash_write
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:76,1
    - Dst: crypt_hash_final
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:79,1
    - Dst: crypt_hash_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - alg
    - hdr_disk
    - json_area
    - json_len
    argTypes:
    - char*
    - struct luks2_hdr_disk*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 83
    functionName: hdr_checksum_calculate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - crypt_hash_destroy
    - crypt_hash_final
    - crypt_hash_size
    - crypt_hash_write
    - crypt_hash_init
    linkageType: ''
    returnType: int
    signature: "int hdr_checksum_calculate(const char *alg, struct luks2_hdr_disk
      *hdr_disk,\n\t\t\t\t  const char *json_area, size_t json_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:95,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:100,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:101,1
    - Dst: hdr_checksum_calculate
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:103,1
    - Dst: log_dbg_checksum
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:107,1
    - Dst: log_dbg_checksum
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:108,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - cd
    - alg
    - hdr_disk
    - json_area
    - json_len
    argTypes:
    - struct crypt_device*
    - char*
    - struct luks2_hdr_disk*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 114
    functionName: hdr_checksum_check
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - memset
    - crypt_hash_size
    - memcmp
    - memcpy
    - hdr_checksum_calculate
    - log_dbg_checksum
    linkageType: ''
    returnType: int
    signature: "int hdr_checksum_check(struct crypt_device *cd,\n\t\t\t      const
      char *alg, struct luks2_hdr_disk *hdr_disk,\n\t\t\t      const char *json_area,
      size_t json_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:124,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:125,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:126,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:128,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:130,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:132,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:134,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:138,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:139,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:141,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - hdr_disk1
    - hdr_disk2
    - hdr
    - secondary
    argTypes:
    - struct luks2_hdr_disk*
    - struct luks2_hdr_disk*
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 144
    functionName: hdr_from_disk
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 1
    functionsReached:
    - memcpy
    - be64_to_cpu
    - be16_to_cpu
    linkageType: ''
    returnType: void
    signature: "void hdr_from_disk(struct luks2_hdr_disk *hdr_disk1,\n\t\t\t  struct
      luks2_hdr_disk *hdr_disk2,\n\t\t\t  struct luks2_hdr *hdr,\n\t\t\t  int secondary)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:153,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:155,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:157,1
    - Dst: cpu_to_be16
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:158,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:159,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:160,1
    - Dst: cpu_to_be64
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:161,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:163,1
    - Dst: MIN
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:163,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:163,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:165,1
    - Dst: MIN
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:165,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:165,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:167,1
    - Dst: MIN
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:167,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:167,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:169,1
    - Dst: MIN
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:169,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:169,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 4
    argNames:
    - hdr
    - hdr_disk
    - secondary
    - offset
    argTypes:
    - struct luks2_hdr*
    - struct luks2_hdr_disk*
    - int
    - uint64_t
    assertStmts:
    - condition: (((char*)&(hdr_disk->_padding4096) - (char*)&(hdr_disk->magic)) ==
        512)
      pos:
        line_end: 152
        line_start: 152
        source_file: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    constantsTouched: []
    func_position:
      end: 173
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 173
    functionName: hdr_to_disk
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - memset
    - cpu_to_be16
    - memcpy
    - assert
    - cpu_to_be64
    - MIN
    - strlen
    linkageType: ''
    returnType: void
    signature: "void hdr_to_disk(struct luks2_hdr *hdr,\n\t\t\tstruct luks2_hdr_disk
      *hdr_disk,\n\t\t\tint secondary, uint64_t offset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:185,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:188,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:189,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:189,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:193,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:194,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:195,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:199,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:202,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:207,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:214,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:215,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 5
    argNames:
    - cd
    - hdr
    - hdr_json_size
    - secondary
    - offset
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr_disk*
    - size_t*
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 220
    functionName: hdr_disk_sanity_check_pre
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - memcmp
    - be64_to_cpu
    - be16_to_cpu
    linkageType: ''
    returnType: int
    signature: "int hdr_disk_sanity_check_pre(struct crypt_device *cd,\n\t\t\t\t     struct
      luks2_hdr_disk *hdr,\n\t\t\t\t     size_t *hdr_json_size, int secondary,\n\t\t\t\t
      \    uint64_t offset)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:232,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:235,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:243,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:243,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:244,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:246,1
    - Dst: hdr_disk_sanity_check_pre
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:253,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:260,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:264,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:264,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:265,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:267,1
    - Dst: hdr_checksum_check
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:275,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:277,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:278,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:282,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 6
    argNames:
    - cd
    - device
    - hdr_disk
    - json_area
    - offset
    - secondary
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct luks2_hdr_disk*
    - char**
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 285
    functionName: hdr_read_disk
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - hdr_checksum_check
    - memset
    - free
    - hdr_disk_sanity_check_pre
    - malloc
    - log_dbg
    - read_lseek_blockwise
    - device_open_locked
    - device_alignment
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int hdr_read_disk(struct crypt_device *cd,\n\t\t\t struct device *device,
      struct luks2_hdr_disk *hdr_disk,\n\t\t\t char **json_area, uint64_t offset,
      int secondary)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:302,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:304,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:307,1
    - Dst: hdr_to_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:311,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:316,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:316,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:317,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:325,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:325,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:326,1
    - Dst: CONST_CAST
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:327,1
    - Dst: hdr_checksum_calculate
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:335,1
    - Dst: log_dbg_checksum
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:340,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:342,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:342,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:343,1
    - Dst: device_sync
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 6
    argNames:
    - cd
    - device
    - hdr
    - json_area
    - write_area_len
    - secondary
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct luks2_hdr*
    - char*
    - size_t
    - int
    assertStmts:
    - condition: (write_area_len <= hdr_json_len)
      pos:
        line_end: 301
        line_start: 301
        source_file: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    constantsTouched: []
    func_position:
      end: 349
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 349
    functionName: hdr_write_disk
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - device_sync
    - hdr_checksum_calculate
    - CONST_CAST
    - log_dbg_checksum
    - device_block_size
    - assert
    - log_dbg
    - device_open_locked
    - device_alignment
    - hdr_to_disk
    - write_lseek_blockwise
    linkageType: ''
    returnType: int
    signature: "int hdr_write_disk(struct crypt_device *cd,\n\t\t\t  struct device
      *device, struct luks2_hdr *hdr,\n\t\t\t  const char *json_area, size_t write_area_len,\n\t\t\t
      \ int secondary)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:359,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:364,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:364,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:365,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:369,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:370,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:371,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:374,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - cd
    - hdr
    - device
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 351
    functionDepth: 4
    functionLinenumber: 351
    functionLinenumberEnd: 375
    functionName: LUKS2_check_sequence_id
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - memcmp
    - be64_to_cpu
    - read_lseek_blockwise
    - device_open_locked
    - device_alignment
    - strcmp
    - be16_to_cpu
    - device_block_size
    linkageType: ''
    returnType: int
    signature: int LUKS2_check_sequence_id(struct crypt_device *cd, struct luks2_hdr
      *hdr, struct device *device)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: device_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:379,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:382,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:382,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:382,1
    - Dst: crypt_get_luks2_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:387,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:388,1
    - Dst: LUKS2_check_sequence_id
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:389,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:390,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:391,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:391,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - cd
    - hdr
    - device
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 377
    functionDepth: 5
    functionLinenumber: 377
    functionLinenumberEnd: 397
    functionName: LUKS2_device_write_lock
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 3
    functionsReached:
    - device_write_lock
    - LUKS2_check_sequence_id
    - _
    - crypt_get_luks2_reencrypt
    - log_err
    - device_path
    - log_dbg
    - device_write_unlock
    linkageType: ''
    returnType: int
    signature: int LUKS2_device_write_lock(struct crypt_device *cd, struct luks2_hdr
      *hdr, struct device *device)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:411,1
    - Dst: device_check_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:415,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:415,1
    - Dst: LUKS2_hdr_and_areas_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:415,1
    - Dst: crypt_jobj_to_string_on_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:422,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:424,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:429,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:432,1
    - Dst: crypt_zalloc
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:439,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:460,1
    - Dst: LUKS2_device_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:463,1
    - Dst: device_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:465,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:467,1
    - Dst: hdr_write_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:475,1
    - Dst: hdr_write_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:477,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:480,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:485,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:487,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 4
    argNames:
    - cd
    - hdr
    - device
    - seqid_check
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct device*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 403
    functionDepth: 6
    functionLinenumber: 403
    functionLinenumberEnd: 489
    functionName: LUKS2_disk_hdr_write
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - device_write_lock
    - LUKS2_hdr_and_areas_size
    - free
    - LUKS2_device_write_lock
    - crypt_zalloc
    - crypt_metadata_device
    - crypt_jobj_to_string_on_disk
    - strncpy
    - log_dbg
    - device_write_unlock
    - hdr_write_disk
    - strlen
    - device_check_size
    linkageType: ''
    returnType: int
    signature: int LUKS2_disk_hdr_write(struct crypt_device *cd, struct luks2_hdr
      *hdr, struct device *device, bool seqid_check)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:497,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:502,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:515,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - cd
    - json_area
    - json_len
    - max_length
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 522
    functionName: validate_json_area
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - log_dbg
    linkageType: ''
    returnType: int
    signature: "int validate_json_area(struct crypt_device *cd, const char *json_area,\n\t\t\t
      \     uint64_t json_len, uint64_t max_length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:529,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:531,1
    - Dst: LUKS2_hdr_validate
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:535,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:537,1
    - Dst: LUKS2_hdr_repair
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:539,1
    - Dst: LUKS2_hdr_validate
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:542,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:546,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - cd
    - jobj_hdr
    - length
    argTypes:
    - struct crypt_device*
    - json_object*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 549
    functionName: validate_luks2_json_object
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - json_object_is_type
    - LUKS2_hdr_validate
    - LUKS2_hdr_repair
    linkageType: ''
    returnType: int
    signature: int validate_luks2_json_object(struct crypt_device *cd, json_object
      *jobj_hdr, uint64_t length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:559,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:562,1
    - Dst: parse_json_len
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:568,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:573,1
    - Dst: validate_json_area
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:575,1
    - Dst: validate_luks2_json_object
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:577,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:580,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - cd
    - json_area
    - hdr_size
    - json_area_end
    argTypes:
    - struct crypt_device*
    - char*
    - uint64_t
    - uint64_t*
    assertStmts:
    - condition: (json_area_end)
      pos:
        line_end: 558
        line_start: 558
        source_file: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    - condition: (json_len > 0)
      pos:
        line_end: 572
        line_start: 572
        source_file: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    constantsTouched: []
    func_position:
      end: 587
      start: 551
    functionDepth: 2
    functionLinenumber: 551
    functionLinenumberEnd: 587
    functionName: parse_and_validate_json
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - validate_json_area
    - assert
    - log_dbg
    - validate_luks2_json_object
    - json_object_put
    - parse_json_len
    linkageType: ''
    returnType: json_object
    signature: "json_object *parse_and_validate_json(struct crypt_device *cd,\n\t\t\t\t\t
      \   const char *json_area, uint64_t hdr_size,\n\t\t\t\t\t    uint64_t *json_area_end)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: blk_supported
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:595,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:596,1
    - Dst: blk_init_by_path
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:600,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:601,1
    - Dst: blk_set_chains_for_fast_detection
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:606,1
    - Dst: blk_superblocks_filter_luks
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:609,1
    - Dst: blk_safeprobe
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:611,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:615,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:618,1
    - Dst: blk_is_partition
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:624,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:625,1
    - Dst: blk_get_partition_type
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:625,1
    - Dst: blk_is_superblock
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:626,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:627,1
    - Dst: blk_get_superblock_type
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:627,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:630,1
    - Dst: blk_free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:632,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - cd
    - path
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 634
    functionName: detect_device_signatures
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - blk_supported
    - blk_is_superblock
    - blk_safeprobe
    - blk_set_chains_for_fast_detection
    - blk_get_partition_type
    - log_dbg
    - blk_free
    - blk_get_superblock_type
    - blk_is_partition
    - blk_init_by_path
    - blk_superblocks_filter_luks
    linkageType: ''
    returnType: int
    signature: int detect_device_signatures(struct crypt_device *cd, const char *path)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_locking_enabled
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:653,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:655,1
    - Dst: hdr_read_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:662,1
    - Dst: parse_and_validate_json
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:664,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:664,1
    - Dst: hdr_read_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:674,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:674,1
    - Dst: parse_and_validate_json
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:676,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:676,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:685,1
    - Dst: hdr_read_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:686,1
    - Dst: parse_and_validate_json
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:689,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:689,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:699,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:699,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:701,1
    - Dst: be64_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:701,1
    - Dst: LUKS2_hdr_and_areas_size_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:707,1
    - Dst: LUKS2_hdr_and_areas_size_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:709,1
    - Dst: device_check_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:715,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:723,1
    - Dst: detect_device_signatures
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:725,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:725,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:726,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:726,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:732,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:733,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:735,1
    - Dst: hdr_from_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:737,1
    - Dst: hdr_write_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:738,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:741,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:744,1
    - Dst: detect_device_signatures
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:746,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:746,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:747,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:747,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:753,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:754,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:756,1
    - Dst: hdr_from_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:758,1
    - Dst: hdr_write_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:759,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:762,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:766,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:768,1
    - Dst: hdr_from_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:779,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:781,1
    - Dst: hdr_from_disk
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:783,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:785,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:799,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:801,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:802,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:803,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:804,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 119
    argCount: 5
    argNames:
    - cd
    - hdr
    - device
    - do_recovery
    - do_blkprobe
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct device*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 640
    functionDepth: 5
    functionLinenumber: 640
    functionLinenumberEnd: 807
    functionName: LUKS2_disk_hdr_read
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 0
    functionsReached:
    - hdr_read_disk
    - _
    - free
    - memcpy
    - detect_device_signatures
    - ARRAY_SIZE
    - be64_to_cpu
    - crypt_random_get
    - log_dbg
    - device_path
    - log_err
    - LUKS2_hdr_and_areas_size_jobj
    - crypt_metadata_locking_enabled
    - hdr_write_disk
    - parse_and_validate_json
    - device_check_size
    - json_object_put
    - hdr_from_disk
    linkageType: ''
    returnType: int
    signature: "int LUKS2_disk_hdr_read(struct crypt_device *cd, struct luks2_hdr
      *hdr,\n\t\t\tstruct device *device, int do_recovery, int do_blkprobe)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:819,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:820,1
    - Dst: device_direct_io
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:827,1
    - Dst: open
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:830,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:830,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:831,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:831,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:832,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:833,1
    - Dst: be16_to_cpu
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:834,1
    - Dst: close
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:837,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c:840,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - cd
    - backup_file
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 809
    functionDepth: 6
    functionLinenumber: 809
    functionLinenumberEnd: 843
    functionName: LUKS2_hdr_version_unlocked
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    functionUses: 2
    functionsReached:
    - device_direct_io
    - device_free
    - memcmp
    - close
    - crypt_metadata_device
    - device_path
    - read_lseek_blockwise
    - open
    - device_alignment
    - device_alloc
    - be16_to_cpu
    - device_block_size
    linkageType: ''
    returnType: int
    signature: int LUKS2_hdr_version_unlocked(struct crypt_device *cd, const char
      *backup_file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:23,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 28
    functionName: LUKS2_digest_handler_type
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: digest_handler
    signature: digest_handler *LUKS2_digest_handler_type(const char *type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:38,1
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:41,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:44,1
    - Dst: LUKS2_digest_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:47,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - digest
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 48
    functionName: LUKS2_digest_handler
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - json_object_object_get_ex
    - LUKS2_digest_handler_type
    - json_object_get_string
    - LUKS2_get_digest_jobj
    linkageType: ''
    returnType: digest_handler
    signature: digest_handler *LUKS2_digest_handler(struct crypt_device *cd, int digest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 58
    functionName: LUKS2_digest_find_free
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_digest_jobj
    linkageType: ''
    returnType: int
    signature: int LUKS2_digest_find_free(struct luks2_hdr *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digest_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:68,1
    - Dst: LUKS2_digest_find_free
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:72,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:76,1
    - Dst: digest_handler*::store
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:78,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:78,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - cd
    - type
    - hdr
    - vk
    argTypes:
    - struct crypt_device*
    - char*
    - struct luks2_hdr*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 79
    functionName: LUKS2_digest_create
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 4
    functionsReached:
    - crypt_volume_key_length
    - digest_handler*::store
    - crypt_volume_key_get_key
    - LUKS2_digest_find_free
    - log_dbg
    - LUKS2_digest_handler_type
    linkageType: ''
    returnType: int
    signature: "int LUKS2_digest_create(struct crypt_device *cd,\n\tconst char *type,\n\tstruct
      luks2_hdr *hdr,\n\tconst struct volume_key *vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:86,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:89,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:92,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:93,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:94,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - hdr
    - keyslot
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 98
    functionName: LUKS2_digest_by_keyslot
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 4
    functionsReached:
    - json_object_object_get_ex
    - atoi
    - LUKS2_array_jobj
    - snprintf
    linkageType: ''
    returnType: int
    signature: int LUKS2_digest_by_keyslot(struct luks2_hdr *hdr, int keyslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:92,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:93,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - atoi
    - LUKS2_array_jobj
    - json_object_object_get_ex
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_digests, key, val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digest_handler
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:107,1
    - Dst: digest_handler*::verify
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:111,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:111,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:111,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - cd
    - digest
    - vk
    argTypes:
    - struct crypt_device*
    - int
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 118
    functionName: LUKS2_digest_verify_by_digest
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 1
    functionsReached:
    - LUKS2_digest_handler
    - digest_handler*::verify
    - crypt_volume_key_length
    - crypt_volume_key_get_key
    - log_dbg
    linkageType: ''
    returnType: int
    signature: "int LUKS2_digest_verify_by_digest(struct crypt_device *cd,\n\tint
      digest,\n\tconst struct volume_key *vk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:127,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:131,1
    - Dst: LUKS2_digest_verify_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - cd
    - hdr
    - vk
    - keyslot
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct volume_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 4
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: LUKS2_digest_verify
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 2
    functionsReached:
    - log_dbg
    - LUKS2_digest_verify_by_digest
    - LUKS2_digest_by_keyslot
    linkageType: ''
    returnType: int
    signature: "int LUKS2_digest_verify(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tconst struct volume_key *vk,\n\tint keyslot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digest_handler
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:140,1
    - Dst: digest_handler*::dump
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - digest
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 136
    functionDepth: 3
    functionLinenumber: 136
    functionLinenumberEnd: 144
    functionName: LUKS2_digest_dump
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - LUKS2_digest_handler
    - digest_handler*::dump
    linkageType: ''
    returnType: int
    signature: int LUKS2_digest_dump(struct crypt_device *cd, int digest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digest_verify_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - cd
    - vk
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 4
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: LUKS2_digest_verify_by_any_matching
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 2
    functionsReached:
    - LUKS2_digest_verify_by_digest
    linkageType: ''
    returnType: int
    signature: "int LUKS2_digest_verify_by_any_matching(struct crypt_device *cd,\n\t\tconst
      struct volume_key *vk)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:167,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:167,1
    - Dst: LUKS2_digest_verify_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:168,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:168,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:175,1
    - Dst: LUKS2_digest_verify_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - cd
    - hdr
    - segment
    - vk
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 158
    functionDepth: 4
    functionLinenumber: 158
    functionLinenumberEnd: 180
    functionName: LUKS2_digest_verify_by_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 8
    functionsReached:
    - LUKS2_get_segments_jobj
    - LUKS2_digest_by_segment
    - json_segments_count
    - LUKS2_digest_verify_by_digest
    linkageType: ''
    returnType: int
    signature: "int LUKS2_digest_verify_by_segment(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint segment,\n\tconst struct volume_key *vk)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_default_segment
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:189,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:191,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:193,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:197,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:198,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:201,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 205
    functionName: LUKS2_digest_by_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 10
    functionsReached:
    - LUKS2_get_default_segment
    - json_object_object_get_ex
    - snprintf
    - LUKS2_array_jobj
    - atoi
    linkageType: ''
    returnType: int
    signature: int LUKS2_digest_by_segment(struct luks2_hdr *hdr, int segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:197,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:198,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 202
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - atoi
    - LUKS2_array_jobj
    - json_object_object_get_ex
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_digests, key, val)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:213,1
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:215,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:219,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:223,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:227,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:229,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:229,1
    - Dst: LUKS2_array_remove
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:231,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:233,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot
    - digest
    - assign
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 237
    functionName: assign_one_digest
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - snprintf
    - json_object_object_get_ex
    - json_object_array_add
    - json_object_object_add
    - json_object_new_string
    - log_dbg
    - LUKS2_array_jobj
    - LUKS2_get_digest_jobj
    - LUKS2_array_remove
    linkageType: ''
    returnType: int
    signature: "int assign_one_digest(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\t\t
      \    int keyslot, int digest, int assign)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:246,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:249,1
    - Dst: assign_one_digest
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:250,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:250,1
    - Dst: assign_one_digest
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:255,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:260,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 6
    argNames:
    - cd
    - hdr
    - keyslot
    - digest
    - assign
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 261
    functionName: LUKS2_digest_assign
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 5
    functionsReached:
    - LUKS2_hdr_write
    - json_object_object_get_ex
    - assign_one_digest
    - UNUSED
    - atoi
    linkageType: ''
    returnType: int
    signature: "int LUKS2_digest_assign(struct crypt_device *cd, struct luks2_hdr
      *hdr,\n\t\t\tint keyslot, int digest, int assign, int commit)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:249,1
    - Dst: assign_one_digest
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:250,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 248
    functionDepth: 2
    functionLinenumber: 248
    functionLinenumberEnd: 253
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - assign_one_digest
    - UNUSED
    - atoi
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_digests, key, val)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:267,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:271,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:277,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:278,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:280,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:280,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:283,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:286,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - hdr
    - digest
    - assign
    argTypes:
    - struct luks2_hdr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 290
    functionName: assign_all_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_object_get_ex
    - json_object_array_add
    - json_object_object_add
    - json_object_new_string
    - LUKS2_array_jobj
    - UNUSED
    - LUKS2_get_digest_jobj
    linkageType: ''
    returnType: int
    signature: int assign_all_segments(struct luks2_hdr *hdr, int digest, int assign)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:277,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:278,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:280,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 281
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - json_object_new_string
    - UNUSED
    - LUKS2_array_jobj
    - json_object_array_add
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(LUKS2_get_segments_jobj(hdr), key,
      value)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:298,1
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:300,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:304,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:308,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:312,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:314,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:314,1
    - Dst: LUKS2_array_remove
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:316,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:318,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - cd
    - hdr
    - segment
    - digest
    - assign
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 322
    functionName: assign_one_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - snprintf
    - json_object_object_get_ex
    - json_object_array_add
    - json_object_object_add
    - json_object_new_string
    - log_dbg
    - LUKS2_array_jobj
    - LUKS2_get_digest_jobj
    - LUKS2_array_remove
    linkageType: ''
    returnType: int
    signature: "int assign_one_segment(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\t\t
      \    int segment, int digest, int assign)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_default_segment
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:331,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:334,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:337,1
    - Dst: assign_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:339,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:339,1
    - Dst: assign_one_segment
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:341,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:341,1
    - Dst: assign_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:347,1
    - Dst: assign_one_segment
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:349,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:355,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 6
    argNames:
    - cd
    - hdr
    - segment
    - digest
    - assign
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 356
    functionName: LUKS2_digest_segment_assign
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 10
    functionsReached:
    - LUKS2_get_default_segment
    - assign_one_segment
    - LUKS2_hdr_write
    - json_object_object_get_ex
    - assign_all_segments
    - UNUSED
    - atoi
    linkageType: ''
    returnType: int
    signature: "int LUKS2_digest_segment_assign(struct crypt_device *cd, struct luks2_hdr
      *hdr,\n\t\t\tint segment, int digest, int assign, int commit)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:337,1
    - Dst: assign_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:339,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:339,1
    - Dst: assign_one_segment
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:341,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 344
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - assign_one_segment
    - UNUSED
    - atoi
    - assign_all_segments
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_digests, key, val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:362,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:363,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:363,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:366,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:367,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:370,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - jobj_digest
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 371
    functionName: digest_unused
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - json_object_is_type
    - json_object_array_length
    - json_object_object_get_ex
    linkageType: ''
    returnType: int
    signature: int digest_unused(json_object *jobj_digest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:378,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:379,1
    - Dst: digest_unused
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:383,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:384,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:384,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 388
    functionName: LUKS2_digests_erase_unused
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_object_del
    - log_dbg
    - digest_unused
    - json_object_is_type
    - atoi
    linkageType: ''
    returnType: void
    signature: "void LUKS2_digests_erase_unused(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: digest_unused
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:383,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:384,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:384,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 387
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - json_object_object_del
    - atoi
    - digest_unused
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_digests, key, val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:397,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:400,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:405,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:405,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:405,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:407,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:411,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:411,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:413,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - cd
    - digest
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 391
    functionDepth: 2
    functionLinenumber: 391
    functionLinenumberEnd: 418
    functionName: get_key_description_by_digest
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - snprintf
    - free
    - malloc
    - strlen
    linkageType: ''
    returnType: char
    signature: char *get_key_description_by_digest(struct crypt_device *cd, int digest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_key_description_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:423,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:423,1
    - Dst: crypt_volume_key_set_description
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:426,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - cd
    - hdr
    - vk
    - segment
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct volume_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 420
    functionDepth: 3
    functionLinenumber: 420
    functionLinenumberEnd: 429
    functionName: LUKS2_key_description_by_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 1
    functionsReached:
    - crypt_volume_key_set_description
    - LUKS2_digest_by_segment
    - get_key_description_by_digest
    - free
    linkageType: ''
    returnType: int
    signature: "int LUKS2_key_description_by_segment(struct crypt_device *cd,\n\t\tstruct
      luks2_hdr *hdr, struct volume_key *vk, int segment)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_key_description_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:434,1
    - Dst: crypt_volume_key_set_description
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:437,1
    - Dst: crypt_volume_key_load_in_keyring
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:439,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_digest.c:441,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cd
    - vk
    - digest
    argTypes:
    - struct crypt_device*
    - struct volume_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 443
    functionName: LUKS2_volume_key_load_in_keyring_by_digest
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_digest.c
    functionUses: 3
    functionsReached:
    - crypt_volume_key_set_description
    - get_key_description_by_digest
    - free
    - crypt_volume_key_load_in_keyring
    linkageType: ''
    returnType: int
    signature: "int LUKS2_volume_key_load_in_keyring_by_digest(struct crypt_device
      *cd,\n\t\tstruct volume_key *vk, int digest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_to_json_string_ext
      Src: /src/cryptsetup/lib/luks2/luks2_internal.h:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jobj
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: crypt_jobj_to_string_on_disk
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_internal.h
    functionUses: 1
    functionsReached:
    - json_object_to_json_string_ext
    linkageType: ''
    returnType: char
    signature: char *crypt_jobj_to_string_on_disk(json_object *jobj)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - mi
    argTypes:
    - crypt_reencrypt_mode_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 243
    functionName: crypt_reencrypt_mode_to_str
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_internal.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *crypt_reencrypt_mode_to_str(crypt_reencrypt_mode_info mi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:28,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:28,1
    - Dst: json_object_get_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:29,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:34,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:35,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:37,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:38,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - cd
    - jobj
    - sep
    - line_sep
    argTypes:
    - struct crypt_device*
    - json_object*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 21
    functionDepth: 3
    functionLinenumber: 21
    functionLinenumberEnd: 39
    functionName: hexprint_base64
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - free
    - log_std
    - crypt_base64_decode
    - json_object_get_string_len
    - json_object_get_string
    linkageType: ''
    returnType: void
    signature: "void hexprint_base64(struct crypt_device *cd, json_object *jobj,\n\t\t
      \    const char *sep, const char *line_sep)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_log
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:44,1
    - Dst: crypt_log
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:45,1
    - Dst: json_object_to_json_string_ext
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - cd
    - jobj
    - desc
    argTypes:
    - struct crypt_device*
    - json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: JSON_DBG
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 4
    functionsReached:
    - crypt_log
    - json_object_to_json_string_ext
    linkageType: ''
    returnType: void
    signature: void JSON_DBG(struct crypt_device *cd, json_object *jobj, const char
      *desc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:57,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:58,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:59,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - array
    - num
    argTypes:
    - json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 64
    functionName: LUKS2_array_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 15
    functionsReached:
    - strcmp
    - json_object_array_length
    - json_object_array_get_idx
    - json_object_get_string
    linkageType: ''
    returnType: json_object
    signature: json_object *LUKS2_array_jobj(json_object *array, const char *num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:71,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:76,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:80,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:81,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:83,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - array
    - num
    argTypes:
    - json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 87
    functionName: LUKS2_array_remove
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - json_object_new_array
    - json_object_array_add
    - json_object_array_length
    - json_object_array_get_idx
    - json_object_get
    - LUKS2_array_jobj
    linkageType: ''
    returnType: json_object
    signature: json_object *LUKS2_array_remove(json_object *array, const char *num)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:100,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:103,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:106,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - hdr
    - keyslot
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 110
    functionName: LUKS2_get_keyslot_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 17
    functionsReached:
    - json_object_object_get_ex
    - snprintf
    linkageType: ''
    returnType: json_object
    signature: json_object *LUKS2_get_keyslot_jobj(struct luks2_hdr *hdr, int keyslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 120
    functionName: LUKS2_get_tokens_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    linkageType: ''
    returnType: json_object
    signature: json_object *LUKS2_get_tokens_jobj(struct luks2_hdr *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_tokens_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:130,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:134,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - hdr
    - token
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 139
    functionName: LUKS2_get_token_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - LUKS2_get_tokens_jobj
    - snprintf
    - json_object_object_get_ex
    linkageType: ''
    returnType: json_object
    signature: json_object *LUKS2_get_token_jobj(struct luks2_hdr *hdr, int token)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:149,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:152,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - hdr
    - digest
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 157
    functionName: LUKS2_get_digest_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 8
    functionsReached:
    - json_object_object_get_ex
    - snprintf
    linkageType: ''
    returnType: json_object
    signature: json_object *LUKS2_get_digest_jobj(struct luks2_hdr *hdr, int digest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - hdr_jobj
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 167
    functionName: json_get_segments_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    linkageType: ''
    returnType: json_object
    signature: json_object *json_get_segments_jobj(json_object *hdr_jobj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_default_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:175,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:177,1
    - Dst: json_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 178
    functionName: LUKS2_get_segment_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 16
    functionsReached:
    - LUKS2_get_default_segment
    - json_get_segments_jobj
    - json_segments_get_segment
    linkageType: ''
    returnType: json_object
    signature: json_object *LUKS2_get_segment_jobj(struct luks2_hdr *hdr, int segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: LUKS2_get_segments_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 14
    functionsReached:
    - json_get_segments_jobj
    linkageType: ''
    returnType: json_object
    signature: json_object *LUKS2_get_segments_jobj(struct luks2_hdr *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:190,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 191
    functionName: LUKS2_segments_count
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - LUKS2_get_segments_jobj
    - json_segments_count
    linkageType: ''
    returnType: int
    signature: int LUKS2_segments_count(struct luks2_hdr *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_id_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:195,1
    - Dst: LUKS2_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 5
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: LUKS2_get_default_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - LUKS2_get_segment_id_by_flag
    - LUKS2_segments_count
    linkageType: ''
    returnType: int
    signature: int LUKS2_get_default_segment(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_get_int64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jobj
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: crypt_jobj_get_uint32
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 5
    functionsReached:
    - json_object_get_int64
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crypt_jobj_get_uint32(json_object *jobj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtoull
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:221,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - jobj
    - value
    argTypes:
    - json_object*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 229
    functionName: json_str_to_uint64
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_get_string
    - strtoull
    linkageType: ''
    returnType: bool
    signature: bool json_str_to_uint64(json_object *jobj, uint64_t *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - jobj
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 236
    functionName: crypt_jobj_get_uint64
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 15
    functionsReached:
    - json_str_to_uint64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t crypt_jobj_get_uint64(json_object *jobj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:245,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 251
    functionName: crypt_jobj_new_uint64
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 12
    functionsReached:
    - json_object_new_string
    - snprintf
    linkageType: ''
    returnType: json_object
    signature: json_object *crypt_jobj_new_uint64(uint64_t value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:261,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - cd
    - name
    - key
    argTypes:
    - struct crypt_device*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 266
    functionName: numbered
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - isdigit
    - log_dbg
    linkageType: ''
    returnType: bool
    signature: bool numbered(struct crypt_device *cd, const char *name, const char
      *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:273,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:274,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:275,1
    - Dst: json_type_to_name
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - cd
    - jobj
    - name
    - section
    - key
    - type
    argTypes:
    - struct crypt_device*
    - json_object*
    - char*
    - char*
    - char*
    - json_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 281
    functionName: json_contains
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - log_dbg
    - json_object_is_type
    - json_type_to_name
    - json_object_object_get_ex
    linkageType: ''
    returnType: json_object
    signature: "json_object *json_contains(struct crypt_device *cd, json_object *jobj,
      const char *name,\n\t\t\t   const char *section, const char *key, json_type
      type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:286,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:291,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - cd
    - jobj
    - name
    - section
    - key
    argTypes:
    - struct crypt_device*
    - json_object*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 295
    functionName: json_contains_string
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - strlen
    - json_object_get_string
    - json_contains
    linkageType: ''
    returnType: json_object
    signature: "json_object *json_contains_string(struct crypt_device *cd, json_object
      *jobj,\n\t\t\t\t  const char *name, const char *section, const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_get_int64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - jobj
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 305
    functionName: validate_json_uint32
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - json_object_get_int64
    linkageType: ''
    returnType: bool
    signature: bool validate_json_uint32(json_object *jobj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:310,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:313,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:314,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:315,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:319,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - cd
    - jarr
    - jobj_keys
    argTypes:
    - struct crypt_device*
    - json_object*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 327
    functionName: validate_keyslots_array
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_array_length
    - json_object_array_get_idx
    - json_contains
    - log_dbg
    - json_object_is_type
    - json_object_get_string
    linkageType: ''
    returnType: bool
    signature: bool validate_keyslots_array(struct crypt_device *cd, json_object *jarr,
      json_object *jobj_keys)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:332,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:335,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:336,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:337,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:341,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:342,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - cd
    - jarr
    - jobj_segments
    argTypes:
    - struct crypt_device*
    - json_object*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 349
    functionName: validate_segments_array
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_array_length
    - json_object_array_get_idx
    - json_contains
    - log_dbg
    - json_object_is_type
    - json_object_get_string
    linkageType: ''
    returnType: bool
    signature: bool validate_segments_array(struct crypt_device *cd, json_object *jarr,
      json_object *jobj_segments)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:356,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:357,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - segment_name
    - jobj_digests
    argTypes:
    - char*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 363
    functionName: segment_has_digest
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - UNUSED
    - json_object_object_get_ex
    - LUKS2_array_jobj
    linkageType: ''
    returnType: bool
    signature: bool segment_has_digest(const char *segment_name, json_object *jobj_digests)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:356,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:357,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 360
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - UNUSED
    - json_object_object_get_ex
    - LUKS2_array_jobj
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_digests, key, val)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:375,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:380,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:385,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:390,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:400,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:405,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 5
    argNames:
    - cd
    - length
    - ix
    - metadata_size
    - keyslots_area_end
    argTypes:
    - struct crypt_device*
    - int
    - struct interval*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 416
    functionName: validate_intervals
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - log_dbg
    linkageType: ''
    returnType: bool
    signature: "bool validate_intervals(struct crypt_device *cd,\n\t\t\t       int
      length, const struct interval *ix,\n\t\t\t       uint64_t metadata_size, uint64_t
      keyslots_area_end)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:422,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:424,1
    - Dst: validate_json_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:428,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:429,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - cd
    - hdr_keyslot
    - key
    argTypes:
    - struct crypt_device*
    - json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 418
    functionDepth: 2
    functionLinenumber: 418
    functionLinenumberEnd: 435
    functionName: LUKS2_keyslot_validate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - json_contains
    - log_dbg
    - validate_json_uint32
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_validate(struct crypt_device *cd, json_object *hdr_keyslot,
      const char *key)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:443,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:446,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:449,1
    - Dst: validate_keyslots_array
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:453,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - cd
    - hdr_jobj
    - jobj_token
    - key
    argTypes:
    - struct crypt_device*
    - json_object*
    - json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 457
    functionName: LUKS2_token_validate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - json_object_object_get_ex
    - validate_keyslots_array
    - json_contains
    linkageType: ''
    returnType: int
    signature: "int LUKS2_token_validate(struct crypt_device *cd,\n\t\t\t json_object
      *hdr_jobj, json_object *jobj_token, const char *key)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:465,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:466,1
    - Dst: crypt_jobj_to_string_on_disk
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:468,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:472,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:473,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:476,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:481,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - cd
    - hdr_jobj
    - hdr_json_size
    argTypes:
    - struct crypt_device*
    - json_object*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 459
    functionDepth: 2
    functionLinenumber: 459
    functionLinenumberEnd: 486
    functionName: hdr_validate_json_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - crypt_jobj_to_string_on_disk
    - log_dbg
    - crypt_jobj_get_uint64
    - strlen
    linkageType: ''
    returnType: int
    signature: int hdr_validate_json_size(struct crypt_device *cd, json_object *hdr_jobj,
      uint64_t hdr_json_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hdr_validate_json_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 488
    functionDepth: 3
    functionLinenumber: 488
    functionLinenumberEnd: 491
    functionName: LUKS2_check_json_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - hdr_validate_json_size
    linkageType: ''
    returnType: int
    signature: int LUKS2_check_json_size(struct crypt_device *cd, const struct luks2_hdr
      *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:497,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:501,1
    - Dst: LUKS2_keyslot_validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:503,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 493
    functionDepth: 3
    functionLinenumber: 493
    functionLinenumberEnd: 508
    functionName: hdr_validate_keyslots
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - LUKS2_keyslot_validate
    - numbered
    - json_contains
    linkageType: ''
    returnType: int
    signature: int hdr_validate_keyslots(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:501,1
    - Dst: LUKS2_keyslot_validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:503,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 500
    functionDepth: 3
    functionLinenumber: 500
    functionLinenumberEnd: 505
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - numbered
    - LUKS2_keyslot_validate
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj, key, val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:514,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:518,1
    - Dst: LUKS2_token_validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:520,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 510
    functionDepth: 3
    functionLinenumber: 510
    functionLinenumberEnd: 525
    functionName: hdr_validate_tokens
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - LUKS2_token_validate
    - numbered
    - json_contains
    linkageType: ''
    returnType: int
    signature: int hdr_validate_tokens(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:518,1
    - Dst: LUKS2_token_validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 517
    functionDepth: 3
    functionLinenumber: 517
    functionLinenumberEnd: 522
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - LUKS2_token_validate
    - numbered
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj, key, val)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:536,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:537,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:538,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:542,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:543,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:544,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:545,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:546,1
    - Dst: validate_json_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:551,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:552,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:553,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:557,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:558,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:559,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:563,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:563,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:564,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:565,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:570,1
    - Dst: segment_has_digest
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:574,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:577,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 5
    argNames:
    - cd
    - jobj
    - key
    - jobj_digests
    - size
    argTypes:
    - struct crypt_device*
    - json_object*
    - char*
    - json_object*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 527
    functionDepth: 2
    functionLinenumber: 527
    functionLinenumberEnd: 580
    functionName: hdr_validate_crypt_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - json_object_object_get_ex
    - crypt_jobj_get_uint32
    - json_contains
    - log_dbg
    - MISALIGNED_512
    - segment_has_digest
    - validate_json_uint32
    - json_object_get_string
    - json_str_to_uint64
    - numbered
    linkageType: ''
    returnType: int
    signature: "int hdr_validate_crypt_segment(struct crypt_device *cd, json_object
      *jobj,\n\t\t\t\t      const char *key, json_object *jobj_digests,\n\t\t\t\t
      \     uint64_t size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:589,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:598,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:603,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 3
    argNames:
    - cd
    - length
    - ix
    argTypes:
    - struct crypt_device*
    - int
    - struct interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 614
    functionName: validate_segment_intervals
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - log_dbg
    linkageType: ''
    returnType: bool
    signature: "bool validate_segment_intervals(struct crypt_device *cd,\n\t\t\t\t
      \   int length, const struct interval *ix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reqs
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 619
    functionName: reqs_unknown
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int reqs_unknown(uint32_t reqs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reqs
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 621
    functionDepth: 0
    functionLinenumber: 621
    functionLinenumberEnd: 624
    functionName: reqs_reencrypt
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int reqs_reencrypt(uint32_t reqs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reqs
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 629
    functionName: reqs_reencrypt_online
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int reqs_reencrypt_online(uint32_t reqs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reqs
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 634
    functionName: reqs_opal
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int reqs_opal(uint32_t reqs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reqs
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 639
    functionName: reqs_inline_hw_tags
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int reqs_inline_hw_tags(uint32_t reqs)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_config_get_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:654,1
    - Dst: reqs_reencrypt_online
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:656,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:658,1
    - Dst: json_segment_contains_flag
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:661,1
    - Dst: json_segment_contains_flag
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:663,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:668,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:673,1
    - Dst: json_segment_contains_flag
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:677,1
    - Dst: json_segment_cmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:678,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:679,1
    - Dst: json_segment_cmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:685,1
    - Dst: json_segment_cmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:686,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:687,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 5
    argNames:
    - cd
    - hdr_jobj
    - jobj_segments
    - first_backup
    - segments_count
    argTypes:
    - struct crypt_device*
    - json_object*
    - json_object*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 694
    functionName: validate_reencrypt_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - LUKS2_config_get_requirements
    - json_segments_get_segment
    - reqs_reencrypt_online
    - log_dbg
    - json_segment_cmp
    - json_segment_contains_flag
    linkageType: ''
    returnType: int
    signature: int validate_reencrypt_segments(struct crypt_device *cd, json_object
      *hdr_jobj, json_object *jobj_segments, int first_backup, int segments_count)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:703,1
    - Dst: json_object_object_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:706,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:708,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:713,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:717,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:721,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:722,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:723,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:726,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:726,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:729,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:730,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:735,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:735,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:736,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:736,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:738,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:739,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:746,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:747,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:750,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:751,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:756,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:757,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:759,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:760,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:760,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:764,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:765,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:770,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:776,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:776,1
    - Dst: hdr_validate_crypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:777,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:781,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:781,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:783,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:784,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:787,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:788,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:789,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:791,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:791,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:793,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:794,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:798,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:801,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:801,1
    - Dst: hdr_validate_crypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:802,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:808,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:814,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:822,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:825,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:830,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:832,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:833,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:836,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:837,1
    - Dst: validate_segment_intervals
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:840,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:841,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:847,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:848,1
    - Dst: validate_reencrypt_segments
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:853,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 114
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 696
    functionDepth: 3
    functionLinenumber: 696
    functionLinenumberEnd: 854
    functionName: hdr_validate_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - validate_reencrypt_segments
    - validate_segment_intervals
    - json_str_to_uint64
    - json_segments_get_segment
    - free
    - json_contains
    - log_dbg
    - strcmp
    - json_contains_string
    - hdr_validate_crypt_segment
    - json_object_array_length
    - json_object_array_get_idx
    - malloc
    - MISALIGNED_512
    - json_segment_is_backup
    - json_object_is_type
    - atoi
    - json_object_object_length
    - json_object_object_get_ex
    - json_segment_get_size
    - strncmp
    - json_segment_get_offset
    - json_object_get_string
    - numbered
    linkageType: ''
    returnType: int
    signature: int hdr_validate_segments(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:717,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:721,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:722,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:723,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:726,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:726,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:729,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:730,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:735,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:735,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:736,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:736,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:738,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:739,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:746,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:747,1
    - Dst: MISALIGNED_512
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:750,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:751,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:756,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:757,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:759,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:760,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:760,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:764,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:765,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:770,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:776,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:776,1
    - Dst: hdr_validate_crypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:777,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:781,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:781,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:783,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:784,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:787,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:788,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:789,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:791,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:791,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:793,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:794,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:798,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:801,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:801,1
    - Dst: hdr_validate_crypt_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:802,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 716
    functionDepth: 3
    functionLinenumber: 716
    functionLinenumberEnd: 805
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - json_object_object_get_ex
    - hdr_validate_crypt_segment
    - json_object_array_length
    - json_object_array_get_idx
    - strncmp
    - json_contains
    - log_dbg
    - MISALIGNED_512
    - json_segment_is_backup
    - json_object_is_type
    - strcmp
    - json_object_get_string
    - json_str_to_uint64
    - atoi
    - numbered
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_segments, key, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:861,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:862,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - jobj
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 866
    functionName: LUKS2_metadata_size_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_str_to_uint64
    - json_object_object_get_ex
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_metadata_size_jobj(json_object *jobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_metadata_size_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 868
    functionDepth: 2
    functionLinenumber: 868
    functionLinenumberEnd: 871
    functionName: LUKS2_metadata_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - LUKS2_metadata_size_jobj
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_metadata_size(struct luks2_hdr *hdr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:880,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:884,1
    - Dst: LUKS2_metadata_size_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:888,1
    - Dst: json_object_object_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:890,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:897,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:901,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:903,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:909,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:910,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:911,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:912,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:913,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:913,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:914,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:914,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:915,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:920,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:921,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:922,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:923,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:931,1
    - Dst: validate_intervals
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:935,1
    - Dst: LUKS2_hdr_and_areas_size_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:935,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:937,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 873
    functionDepth: 2
    functionLinenumber: 873
    functionLinenumberEnd: 940
    functionName: hdr_validate_areas
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - json_object_object_length
    - json_object_object_get_ex
    - free
    - validate_intervals
    - malloc
    - json_contains
    - log_dbg
    - LUKS2_hdr_and_areas_size_jobj
    - LUKS2_metadata_size_jobj
    - json_object_get_string
    - json_str_to_uint64
    - numbered
    linkageType: ''
    returnType: int
    signature: int hdr_validate_areas(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:909,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:910,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:911,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:912,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:913,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:913,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:914,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:914,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:915,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:920,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:921,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:922,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:923,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 907
    functionDepth: 2
    functionLinenumber: 907
    functionLinenumberEnd: 928
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - free
    - json_contains
    - log_dbg
    - json_object_get_string
    - json_str_to_uint64
    - numbered
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_keyslots, key, val)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:946,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:950,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:954,1
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:958,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:961,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:962,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:963,1
    - Dst: validate_keyslots_array
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:966,1
    - Dst: validate_segments_array
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:968,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 973
    functionName: hdr_validate_digests
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - validate_keyslots_array
    - json_contains
    - validate_segments_array
    - numbered
    linkageType: ''
    returnType: int
    signature: int hdr_validate_digests(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: numbered
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:958,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:961,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:962,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:963,1
    - Dst: validate_keyslots_array
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:966,1
    - Dst: validate_segments_array
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:968,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 957
    functionDepth: 2
    functionLinenumber: 957
    functionLinenumberEnd: 970
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - validate_keyslots_array
    - json_contains
    - validate_segments_array
    - numbered
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj, key, val)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:982,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:985,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:987,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:988,1
    - Dst: json_contains_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:996,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:998,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:999,1
    - Dst: LUKS2_check_metadata_area_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1003,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1004,1
    - Dst: LUKS2_check_keyslots_area_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1008,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1009,1
    - Dst: json_segments_get_minimal_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1017,1
    - Dst: json_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1017,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1021,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1027,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1028,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1032,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1033,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1033,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 976
    functionDepth: 2
    functionLinenumber: 976
    functionLinenumberEnd: 1038
    functionName: hdr_validate_config
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_contains_string
    - json_object_object_get_ex
    - LUKS2_check_metadata_area_size
    - json_segments_get_minimal_offset
    - json_object_array_length
    - json_object_array_get_idx
    - json_contains
    - log_dbg
    - json_get_segments_jobj
    - LUKS2_check_keyslots_area_size
    - json_object_is_type
    - json_str_to_uint64
    linkageType: ''
    returnType: int
    signature: int hdr_validate_config(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1044,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1046,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1049,1
    - Dst: isdigit
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1057,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - flag
    argTypes:
    - char*
    assertStmts:
    - condition: (flag)
      pos:
        line_end: 1043
        line_start: 1043
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1063
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1063
    functionName: reencrypt_candidate_flag
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strcmp
    - strncmp
    - assert
    linkageType: ''
    returnType: bool
    signature: bool reencrypt_candidate_flag(const char *flag)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1071,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1075,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1076,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1080,1
    - Dst: json_contains
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1081,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1085,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1086,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1086,1
    - Dst: reencrypt_candidate_flag
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1089,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1089,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1089,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1097,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1065
    functionDepth: 1
    functionLinenumber: 1065
    functionLinenumberEnd: 1102
    functionName: hdr_validate_requirements
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_array_length
    - json_object_array_get_idx
    - json_contains
    - reencrypt_candidate_flag
    - log_dbg
    - json_object_is_type
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int hdr_validate_requirements(struct crypt_device *cd, json_object
      *hdr_jobj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1124,1
    - Dst: hdr_validate_json_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1127,1
    - Dst: LUKS2_keyslots_validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1131,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - cd
    - hdr_jobj
    - json_size
    argTypes:
    - struct crypt_device*
    - json_object*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1104
    functionDepth: 3
    functionLinenumber: 1104
    functionLinenumberEnd: 1135
    functionName: LUKS2_hdr_validate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - hdr_validate_json_size
    - LUKS2_keyslots_validate
    - validate
    linkageType: ''
    returnType: int
    signature: int LUKS2_hdr_validate(struct crypt_device *cd, json_object *hdr_jobj,
      uint64_t json_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1139,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - jobj
    argTypes:
    - json_object**
    assertStmts:
    - condition: (jobj)
      pos:
        line_end: 1138
        line_start: 1138
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1145
      start: 1137
    functionDepth: 0
    functionLinenumber: 1137
    functionLinenumberEnd: 1145
    functionName: hdr_json_free
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_put
    - assert
    linkageType: ''
    returnType: bool
    signature: bool hdr_json_free(json_object **jobj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1151,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1152,1
    - Dst: hdr_json_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1156,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1157,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 1150
        line_start: 1150
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    - condition: (hdr->jobj)
      pos:
        line_end: 1151
        line_start: 1151
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1162
      start: 1147
    functionDepth: 1
    functionLinenumber: 1147
    functionLinenumberEnd: 1162
    functionName: hdr_update_copy_for_rollback
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - hdr_json_free
    - json_object_copy
    - log_dbg
    - assert
    linkageType: ''
    returnType: int
    signature: int hdr_update_copy_for_rollback(struct crypt_device *cd, struct luks2_hdr
      *hdr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: device_read_lock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1169,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1169,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1171,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1171,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1172,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1172,1
    - Dst: LUKS2_disk_hdr_read
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1176,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1176,1
    - Dst: device_read_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1179,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1179,1
    - Dst: device_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1182,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1182,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1184,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1184,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1185,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1185,1
    - Dst: LUKS2_disk_hdr_read
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1189,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1189,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1191,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1191,1
    - Dst: device_read_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1193,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1193,1
    - Dst: hdr_update_copy_for_rollback
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1195,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1196,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - cd
    - hdr
    - repair
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1165
    functionDepth: 6
    functionLinenumber: 1165
    functionLinenumberEnd: 1199
    functionName: LUKS2_hdr_read
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - device_read_unlock
    - device_write_lock
    - _
    - crypt_metadata_device
    - device_read_lock
    - log_err
    - device_path
    - device_write_unlock
    - log_dbg
    - hdr_update_copy_for_rollback
    - LUKS2_disk_hdr_read
    linkageType: ''
    returnType: int
    signature: int LUKS2_hdr_read(struct crypt_device *cd, struct luks2_hdr *hdr,
      int repair)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digests_erase_unused
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1203,1
    - Dst: LUKS2_hdr_validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1201
    functionDepth: 4
    functionLinenumber: 1201
    functionLinenumberEnd: 1206
    functionName: hdr_cleanup_and_validate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - LUKS2_digests_erase_unused
    - LUKS2_hdr_validate
    linkageType: ''
    returnType: int
    signature: int hdr_cleanup_and_validate(struct crypt_device *cd, struct luks2_hdr
      *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hdr_cleanup_and_validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1212,1
    - Dst: LUKS2_disk_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1215,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1215,1
    - Dst: hdr_update_copy_for_rollback
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1217,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1218,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1208
    functionDepth: 7
    functionLinenumber: 1208
    functionLinenumberEnd: 1221
    functionName: LUKS2_hdr_write_force
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - hdr_cleanup_and_validate
    - crypt_metadata_device
    - log_dbg
    - LUKS2_disk_hdr_write
    - hdr_update_copy_for_rollback
    linkageType: ''
    returnType: int
    signature: int LUKS2_hdr_write_force(struct crypt_device *cd, struct luks2_hdr
      *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hdr_cleanup_and_validate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1227,1
    - Dst: LUKS2_disk_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1230,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1230,1
    - Dst: hdr_update_copy_for_rollback
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1232,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1233,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1223
    functionDepth: 7
    functionLinenumber: 1223
    functionLinenumberEnd: 1236
    functionName: LUKS2_hdr_write
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 11
    functionsReached:
    - hdr_cleanup_and_validate
    - crypt_metadata_device
    - log_dbg
    - LUKS2_disk_hdr_write
    - hdr_update_copy_for_rollback
    linkageType: ''
    returnType: int
    signature: int LUKS2_hdr_write(struct crypt_device *cd, struct luks2_hdr *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1242,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1244,1
    - Dst: hdr_json_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1248,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1249,1
    - Dst: json_object_copy
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1253,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts:
    - condition: (hdr->jobj_rollback)
      pos:
        line_end: 1241
        line_start: 1241
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1254
      start: 1238
    functionDepth: 1
    functionLinenumber: 1238
    functionLinenumberEnd: 1254
    functionName: LUKS2_hdr_rollback
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - log_dbg
    - json_object_copy
    - hdr_json_free
    - assert
    linkageType: ''
    returnType: int
    signature: int LUKS2_hdr_rollback(struct crypt_device *cd, struct luks2_hdr *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uuid_parse
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1260,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1261,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1261,1
    - Dst: uuid_generate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1265,1
    - Dst: uuid_unparse
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1267,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1269,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - cd
    - hdr
    - uuid
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1256
    functionDepth: 8
    functionLinenumber: 1256
    functionLinenumberEnd: 1270
    functionName: LUKS2_hdr_uuid
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - LUKS2_hdr_write
    - _
    - uuid_unparse
    - uuid_generate
    - log_err
    - uuid_parse
    linkageType: ''
    returnType: int
    signature: int LUKS2_hdr_uuid(struct crypt_device *cd, struct luks2_hdr *hdr,
      const char *uuid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1275,1
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1276,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1277,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1277,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1281,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1283,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1285,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1287,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1289,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 5
    argNames:
    - cd
    - hdr
    - label
    - subsystem
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1272
    functionDepth: 8
    functionLinenumber: 1272
    functionLinenumberEnd: 1290
    functionName: LUKS2_hdr_labels
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - memset
    - LUKS2_hdr_write
    - _
    - strncpy
    - log_err
    - strlen
    linkageType: ''
    returnType: int
    signature: "int LUKS2_hdr_labels(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\t
      \    const char *label, const char *subsystem, int commit)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1296,1
    - Dst: hdr_json_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1300,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1301,1
    - Dst: hdr_json_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1305,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 1295
        line_start: 1295
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1307
      start: 1292
    functionDepth: 1
    functionLinenumber: 1292
    functionLinenumberEnd: 1307
    functionName: LUKS2_hdr_free
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 4
    functionsReached:
    - hdr_json_free
    - log_dbg
    - assert
    linkageType: ''
    returnType: void
    signature: void LUKS2_hdr_free(struct crypt_device *cd, struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1314,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1315,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - jobj
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1319
      start: 1309
    functionDepth: 1
    functionLinenumber: 1309
    functionLinenumberEnd: 1319
    functionName: LUKS2_keyslots_size_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_str_to_uint64
    - json_object_object_get_ex
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_keyslots_size_jobj(json_object *jobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_keyslots_size_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1321
    functionDepth: 2
    functionLinenumber: 1321
    functionLinenumberEnd: 1324
    functionName: LUKS2_keyslots_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - LUKS2_keyslots_size_jobj
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_keyslots_size(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_metadata_size_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1328,1
    - Dst: LUKS2_keyslots_size_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jobj
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1326
    functionDepth: 2
    functionLinenumber: 1326
    functionLinenumberEnd: 1329
    functionName: LUKS2_hdr_and_areas_size_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - LUKS2_keyslots_size_jobj
    - LUKS2_metadata_size_jobj
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_hdr_and_areas_size_jobj(json_object *jobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_hdr_and_areas_size_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1331
    functionDepth: 3
    functionLinenumber: 1331
    functionLinenumberEnd: 1334
    functionName: LUKS2_hdr_and_areas_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 5
    functionsReached:
    - LUKS2_hdr_and_areas_size_jobj
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_hdr_and_areas_size(struct luks2_hdr *hdr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1339,1
    - Dst: LUKS2_hdr_and_areas_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1345,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1346,1
    - Dst: crypt_getpagesize
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1346,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1348,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1352,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1353,1
    - Dst: device_read_lock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1355,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1357,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1357,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1358,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1358,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1362,1
    - Dst: device_read_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1364,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1365,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1365,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1365,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1370,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1370,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1371,1
    - Dst: device_read_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1372,1
    - Dst: device_read_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1377,1
    - Dst: open
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1379,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1382,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1382,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1384,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1384,1
    - Dst: write_buffer
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1388,1
    - Dst: close
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1389,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1391,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1391,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1396,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1397,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 3
    argNames:
    - cd
    - hdr
    - backup_file
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1336
    functionDepth: 4
    functionLinenumber: 1336
    functionLinenumberEnd: 1399
    functionName: LUKS2_hdr_backup
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - crypt_getpagesize
    - write_buffer
    - open
    - device_alignment
    - free
    - log_dbg
    - device_open_locked
    - close
    - crypt_safe_memzero
    - device_read_unlock
    - malloc
    - device_read_lock
    - log_err
    - LUKS2_hdr_and_areas_size
    - _
    - crypt_metadata_device
    - size_round_up
    - device_path
    - read_lseek_blockwise
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int LUKS2_hdr_backup(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\t
      \    const char *backup_file)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1404,1
    - Dst: device_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1411,1
    - Dst: device_read_lock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1415,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1417,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1417,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1418,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1419,1
    - Dst: LUKS2_disk_hdr_read
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1423,1
    - Dst: device_read_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1424,1
    - Dst: device_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1425,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1428,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1428,1
    - Dst: LUKS2_unmet_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1433,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1435,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1435,1
    - Dst: LUKS2_hdr_and_areas_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1441,1
    - Dst: malloc
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1442,1
    - Dst: open
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1448,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1450,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1450,1
    - Dst: read_buffer
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1455,1
    - Dst: close
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1456,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1458,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1458,1
    - Dst: LUKS2_hdr_read
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1463,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1465,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1465,1
    - Dst: LUKS2_config_get_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1466,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1468,1
    - Dst: reqs_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1471,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1472,1
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1473,1
    - Dst: LUKS2_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1473,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1474,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1474,1
    - Dst: LUKS2_hdr_and_areas_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1479,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1480,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1480,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1487,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1487,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1487,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1488,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1489,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1490,1
    - Dst: reqs_unknown
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1491,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1491,1
    - Dst: reqs_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1493,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1493,1
    - Dst: crypt_confirm
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1500,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1505,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1505,1
    - Dst: device_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1508,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1510,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1510,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1511,1
    - Dst: device_open_locked
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1515,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1518,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1518,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1519,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1521,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1521,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1521,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1522,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1527,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1527,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1528,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1533,1
    - Dst: LUKS2_hdr_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1535,1
    - Dst: LUKS2_hdr_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1536,1
    - Dst: LUKS2_hdr_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1537,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1538,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1539,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1540,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1541,1
    - Dst: device_sync
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1542,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 111
    argCount: 3
    argNames:
    - cd
    - hdr
    - backup_file
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1401
    functionDepth: 7
    functionLinenumber: 1401
    functionLinenumberEnd: 1544
    functionName: LUKS2_hdr_restore
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - device_free
    - read_buffer
    - LUKS2_hdr_free
    - reqs_reencrypt
    - open
    - device_alignment
    - LUKS2_unmet_requirements
    - LUKS2_disk_hdr_read
    - LUKS2_hdr_read
    - LUKS2_get_data_offset
    - reqs_unknown
    - device_sync
    - free
    - log_dbg
    - device_open_locked
    - close
    - crypt_safe_memzero
    - write_lseek_blockwise
    - device_read_unlock
    - memcmp
    - device_read_lock
    - malloc
    - log_err
    - device_write_unlock
    - crypt_confirm
    - device_alloc
    - LUKS2_config_get_requirements
    - LUKS2_hdr_and_areas_size
    - device_write_lock
    - _
    - snprintf
    - crypt_metadata_device
    - device_path
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\t
      \    const char *backup_file)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1573,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1576,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1579,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1580,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1583,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1584,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1586,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1587,1
    - Dst: log_verbose
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1591,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1591,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1592,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - cd
    - hdr
    - flags
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1563
    functionDepth: 1
    functionLinenumber: 1563
    functionLinenumberEnd: 1596
    functionName: LUKS2_config_get_flags
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - log_verbose
    - json_object_object_get_ex
    - _
    - json_object_array_length
    - json_object_array_get_idx
    - log_dbg
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int LUKS2_config_get_flags(struct crypt_device *cd, struct luks2_hdr
      *hdr, uint32_t *flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1603,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1606,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1612,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1613,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1614,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1619,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1621,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - cd
    - hdr
    - flags
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1598
    functionDepth: 8
    functionLinenumber: 1598
    functionLinenumberEnd: 1622
    functionName: LUKS2_config_set_flags
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - json_object_new_array
    - LUKS2_hdr_write
    - json_object_object_get_ex
    - json_object_array_add
    - json_object_object_add
    - json_object_new_string
    - log_dbg
    linkageType: ''
    returnType: int
    signature: int LUKS2_config_set_flags(struct crypt_device *cd, struct luks2_hdr
      *hdr, uint32_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1659,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - requirement
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1654
    functionDepth: 0
    functionLinenumber: 1654
    functionLinenumberEnd: 1663
    functionName: get_requirement_by_name
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct requirement_flag
    signature: struct requirement_flag *get_requirement_by_name(const char *requirement)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1669,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1671,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1674,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1677,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 1668
        line_start: 1668
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1681
      start: 1665
    functionDepth: 0
    functionLinenumber: 1665
    functionLinenumberEnd: 1681
    functionName: mandatory_requirements_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - assert
    linkageType: ''
    returnType: json_object
    signature: json_object *mandatory_requirements_jobj(struct luks2_hdr *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1688,1
    - Dst: mandatory_requirements_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1690,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1694,1
    - Dst: reencrypt_candidate_flag
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1699,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1699,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1699,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 1687
        line_start: 1687
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1704
      start: 1683
    functionDepth: 1
    functionLinenumber: 1683
    functionLinenumberEnd: 1704
    functionName: LUKS2_reencrypt_requirement_candidate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_array_length
    - json_object_array_get_idx
    - reencrypt_candidate_flag
    - mandatory_requirements_jobj
    - assert
    - json_object_get_string
    linkageType: ''
    returnType: bool
    signature: bool LUKS2_reencrypt_requirement_candidate(struct luks2_hdr *hdr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1712,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1713,1
    - Dst: mandatory_requirements_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1715,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1719,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1724,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1727,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1727,1
    - Dst: get_requirement_by_name
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1731,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1731,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - hdr
    - version
    argTypes:
    - struct luks2_hdr*
    - uint8_t*
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 1711
        line_start: 1711
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    - condition: (version)
      pos:
        line_end: 1712
        line_start: 1712
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1741
      start: 1706
    functionDepth: 1
    functionLinenumber: 1706
    functionLinenumberEnd: 1741
    functionName: LUKS2_config_get_reencrypt_version
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - get_requirement_by_name
    - json_object_array_length
    - strncmp
    - json_object_array_get_idx
    - assert
    - mandatory_requirements_jobj
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int LUKS2_config_get_reencrypt_version(struct luks2_hdr *hdr, uint8_t
      *version)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1749,1
    - Dst: mandatory_requirements_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1751,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1755,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1760,1
    - Dst: get_requirement_by_name
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1761,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1761,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - hdr
    - req_id
    argTypes:
    - struct luks2_hdr*
    - uint32_t
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 1748
        line_start: 1748
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1767
      start: 1743
    functionDepth: 1
    functionLinenumber: 1743
    functionLinenumberEnd: 1767
    functionName: stored_requirement_name_by_id
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - get_requirement_by_name
    - json_object_array_length
    - json_object_array_get_idx
    - assert
    - mandatory_requirements_jobj
    - json_object_get_string
    linkageType: ''
    returnType: struct requirement_flag
    signature: struct requirement_flag *stored_requirement_name_by_id(struct luks2_hdr
      *hdr, uint32_t req_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1778,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1779,1
    - Dst: mandatory_requirements_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1783,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1787,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1791,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1794,1
    - Dst: get_requirement_by_name
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1795,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1795,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1796,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1796,1
    - Dst: reqs_unknown
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1797,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - cd
    - hdr
    - reqs
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint32_t*
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 1777
        line_start: 1777
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    - condition: (reqs)
      pos:
        line_end: 1778
        line_start: 1778
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 1800
      start: 1772
    functionDepth: 1
    functionLinenumber: 1772
    functionLinenumberEnd: 1800
    functionName: LUKS2_config_get_requirements
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 4
    functionsReached:
    - get_requirement_by_name
    - reqs_unknown
    - json_object_array_length
    - json_object_array_get_idx
    - assert
    - mandatory_requirements_jobj
    - log_dbg
    - json_object_get_string
    linkageType: ''
    returnType: void
    signature: void LUKS2_config_get_requirements(struct crypt_device *cd, struct
      luks2_hdr *hdr, uint32_t *reqs)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1812,1
    - Dst: stored_requirement_name_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1820,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1822,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1824,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1829,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1837,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1841,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1844,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1845,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1850,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1853,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1855,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1858,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1859,1
    - Dst: json_object_object_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1863,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1864,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1866,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1868,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 4
    argNames:
    - cd
    - hdr
    - reqs
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1802
    functionDepth: 8
    functionLinenumber: 1802
    functionLinenumberEnd: 1870
    functionName: LUKS2_config_set_requirements
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - json_object_new_array
    - LUKS2_hdr_write
    - json_object_object_length
    - json_object_object_get_ex
    - json_object_array_add
    - json_object_object_add
    - json_object_object_del
    - json_object_new_string
    - json_object_array_length
    - json_object_new_object
    - log_dbg
    - stored_requirement_name_by_id
    - json_object_put
    linkageType: ''
    returnType: int
    signature: int LUKS2_config_set_requirements(struct crypt_device *cd, struct luks2_hdr
      *hdr, uint32_t reqs, bool commit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1879,1
    - Dst: mandatory_requirements_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1883,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1887,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1890,1
    - Dst: get_requirement_by_name
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1891,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1891,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1894,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1895,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - hdr
    - filter_req_ids
    argTypes:
    - struct luks2_hdr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1899
      start: 1872
    functionDepth: 1
    functionLinenumber: 1872
    functionLinenumberEnd: 1899
    functionName: LUKS2_get_mandatory_requirements_filtered_jobj
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - get_requirement_by_name
    - json_object_array_add
    - json_object_array_length
    - json_object_new_string
    - json_object_array_get_idx
    - mandatory_requirements_jobj
    - json_object_get_string
    linkageType: ''
    returnType: json_object
    signature: "json_object *LUKS2_get_mandatory_requirements_filtered_jobj(struct
      luks2_hdr *hdr,\n\tuint32_t filter_req_ids)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_mandatory_requirements_filtered_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1934,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1938,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1938,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1940,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1943,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1944,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1949,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1952,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1954,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1956,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 5
    argNames:
    - cd
    - hdr
    - req_id
    - req_version
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint32_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1905
    functionDepth: 8
    functionLinenumber: 1905
    functionLinenumberEnd: 1958
    functionName: LUKS2_config_set_requirement_version
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - LUKS2_hdr_write
    - json_object_object_get_ex
    - json_object_array_add
    - json_object_object_add
    - json_object_new_string
    - json_object_new_object
    - json_object_put
    - LUKS2_get_mandatory_requirements_filtered_jobj
    linkageType: ''
    returnType: int
    signature: "int LUKS2_config_set_requirement_version(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tuint32_t req_id,\n\tuint8_t req_version,\n\tbool commit)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1969,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1971,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1972,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1973,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1974,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1975,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1976,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1980,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1981,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1981,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1984,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1987,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1989,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1990,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1990,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:1992,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1963
    functionDepth: 0
    functionLinenumber: 1963
    functionLinenumberEnd: 1994
    functionName: hdr_dump_config
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - log_std
    - json_object_array_length
    - json_object_array_get_idx
    - json_object_get_string
    linkageType: ''
    returnType: void
    signature: void hdr_dump_config(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2002,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2003,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - jobj
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 1996
    functionDepth: 0
    functionLinenumber: 1996
    functionLinenumberEnd: 2015
    functionName: get_priority_desc
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_get_int
    linkageType: ''
    returnType: char
    signature: char *get_priority_desc(json_object *jobj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2024,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2025,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2028,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2030,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2034,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2035,1
    - Dst: LUKS2_keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2037,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2037,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2038,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2040,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2041,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2041,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2043,1
    - Dst: get_priority_desc
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2043,1
    - Dst: LUKS2_keyslot_dump
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2045,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2047,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2049,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2050,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2051,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2052,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2052,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2053,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2017
    functionDepth: 2
    functionLinenumber: 2017
    functionLinenumberEnd: 2058
    functionName: hdr_dump_keyslots
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - get_priority_desc
    - crypt_get_hdr
    - snprintf
    - json_object_object_get_ex
    - log_std
    - LUKS2_keyslot_dump
    - crypt_jobj_get_uint32
    - json_object_array_length
    - json_object_array_get_idx
    - strcmp
    - json_object_get_string
    - LUKS2_keyslot_for_segment
    linkageType: ''
    returnType: void
    signature: void hdr_dump_keyslots(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2049,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2050,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2051,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2052,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2052,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2053,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 2048
    functionDepth: 0
    functionLinenumber: 2048
    functionLinenumberEnd: 2056
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - log_std
    - json_object_array_length
    - json_object_array_get_idx
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(digests_jobj, key2, val2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2067,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2068,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2071,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2073,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2077,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2078,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2079,1
    - Dst: LUKS2_token_dump
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2081,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2083,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2084,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2085,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2086,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2086,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2089
      start: 2060
    functionDepth: 1
    functionLinenumber: 2060
    functionLinenumberEnd: 2089
    functionName: hdr_dump_tokens
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - snprintf
    - json_object_object_get_ex
    - log_std
    - json_object_array_length
    - json_object_array_get_idx
    - LUKS2_token_dump
    - json_object_get_string
    linkageType: ''
    returnType: void
    signature: void hdr_dump_tokens(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2098,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2099,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2102,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2104,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2107,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2108,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2108,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2110,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2111,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2112,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2114,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2115,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2115,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2116,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2118,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2119,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2122,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2123,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2123,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2125,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2127,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2128,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2128,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2130,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2131,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2132,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2132,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2134,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2135,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2136,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2136,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2138,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2139,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2140,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2141,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2141,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2143,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2144,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2144,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2146,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2149,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2150,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2150,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2151,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2152,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2153,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2153,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2154,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2155,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2155,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2156,1
    - Dst: json_str_to_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2157,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2158,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2161,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 50
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2091
    functionDepth: 1
    functionLinenumber: 2091
    functionLinenumberEnd: 2163
    functionName: hdr_dump_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - snprintf
    - json_object_object_get_ex
    - log_std
    - crypt_jobj_get_uint32
    - json_object_array_length
    - json_object_array_get_idx
    - strncmp
    - strcmp
    - json_object_get_string
    - json_str_to_uint64
    linkageType: ''
    returnType: void
    signature: void hdr_dump_segments(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2172,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2173,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2176,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2178,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2182,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2183,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2184,1
    - Dst: LUKS2_digest_dump
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2165
    functionDepth: 4
    functionLinenumber: 2165
    functionLinenumberEnd: 2188
    functionName: hdr_dump_digests
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - snprintf
    - json_object_object_get_ex
    - log_std
    - json_object_get_string
    - LUKS2_digest_dump
    linkageType: ''
    returnType: void
    signature: void hdr_dump_digests(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: JSON_DBG
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2195,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2197,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2198,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2199,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2200,1
    - Dst: LUKS2_metadata_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2200,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2201,1
    - Dst: LUKS2_keyslots_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2201,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2202,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2203,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2204,1
    - Dst: hdr_dump_config
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2206,1
    - Dst: hdr_dump_segments
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2207,1
    - Dst: hdr_dump_keyslots
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2208,1
    - Dst: hdr_dump_tokens
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2209,1
    - Dst: hdr_dump_digests
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - cd
    - hdr
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2190
    functionDepth: 5
    functionLinenumber: 2190
    functionLinenumberEnd: 2213
    functionName: LUKS2_hdr_dump
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - LUKS2_keyslots_size
    - JSON_DBG
    - log_std
    - LUKS2_metadata_size
    - hdr_dump_keyslots
    - hdr_dump_tokens
    - hdr_dump_digests
    - hdr_dump_segments
    - hdr_dump_config
    linkageType: ''
    returnType: int
    signature: int LUKS2_hdr_dump(struct crypt_device *cd, struct luks2_hdr *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_to_json_string_ext
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2219,1
    - Dst: crypt_log
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - cd
    - hdr
    - json
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2215
    functionDepth: 1
    functionLinenumber: 2215
    functionLinenumberEnd: 2231
    functionName: LUKS2_hdr_dump_json
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - crypt_log
    - json_object_to_json_string_ext
    linkageType: ''
    returnType: int
    signature: int LUKS2_hdr_dump_json(struct crypt_device *cd, struct luks2_hdr *hdr,
      const char **json)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2239,1
    - Dst: json_object_object_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2242,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2245,1
    - Dst: json_segment_is_backup
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2248,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2251,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2252,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2252,1
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2253,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2264,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - hdr
    - size
    - dynamic
    argTypes:
    - struct luks2_hdr*
    - uint64_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2275
      start: 2233
    functionDepth: 3
    functionLinenumber: 2233
    functionLinenumberEnd: 2275
    functionName: LUKS2_get_data_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 5
    functionsReached:
    - json_segments_get_segment
    - json_object_object_length
    - json_object_object_get_ex
    - json_segment_get_sector_size
    - crypt_jobj_get_uint64
    - json_segment_is_backup
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int LUKS2_get_data_size(struct luks2_hdr *hdr, uint64_t *size, bool
      *dynamic)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2282,1
    - Dst: LUKS2_get_segment_by_flag
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2284,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2286,1
    - Dst: json_segments_get_minimal_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2289,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2290
      start: 2277
    functionDepth: 2
    functionLinenumber: 2277
    functionLinenumberEnd: 2290
    functionName: LUKS2_get_data_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 8
    functionsReached:
    - LUKS2_get_segment_by_flag
    - LUKS2_get_segments_jobj
    - json_segments_get_minimal_offset
    - json_segment_get_offset
    - LUKS2_reencrypt_status
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LUKS2_get_data_offset(struct luks2_hdr *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_default_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2300,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2302,1
    - Dst: json_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2302,1
    - Dst: json_segment_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2307,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2308
      start: 2292
    functionDepth: 6
    functionLinenumber: 2292
    functionLinenumberEnd: 2308
    functionName: LUKS2_get_cipher
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 4
    functionsReached:
    - LUKS2_get_default_segment
    - json_get_segments_jobj
    - json_segments_get_segment
    - json_segment_get_cipher
    linkageType: ''
    returnType: char
    signature: char *LUKS2_get_cipher(struct luks2_hdr *hdr, int segment)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_config_get_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2314,1
    - Dst: reqs_reencrypt_online
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2316,1
    - Dst: json_segments_segment_in_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2319,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2310
    functionDepth: 2
    functionLinenumber: 2310
    functionLinenumberEnd: 2323
    functionName: LUKS2_reencrypt_status
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 13
    functionsReached:
    - LUKS2_get_segments_jobj
    - LUKS2_config_get_requirements
    - json_segments_segment_in_reencrypt
    - reqs_reencrypt_online
    linkageType: ''
    returnType: crypt_reencrypt_info
    signature: crypt_reencrypt_info LUKS2_reencrypt_status(struct luks2_hdr *hdr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2329,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2333,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2337,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2338,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2338,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2341,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2343,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2345,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2348,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - hdr
    - keyslot
    - key_size
    argTypes:
    - struct luks2_hdr*
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2349
      start: 2325
    functionDepth: 1
    functionLinenumber: 2325
    functionLinenumberEnd: 2349
    functionName: LUKS2_get_keyslot_cipher
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_keyslot_jobj
    - json_object_get_int
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: char
    signature: char *LUKS2_get_keyslot_cipher(struct luks2_hdr *hdr, int keyslot,
      size_t *key_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2355,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2359,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2362,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2365,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2366
      start: 2351
    functionDepth: 2
    functionLinenumber: 2351
    functionLinenumberEnd: 2366
    functionName: LUKS2_get_integrity
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - json_object_object_get_ex
    - json_object_get_string
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: char
    signature: char *LUKS2_get_integrity(struct luks2_hdr *hdr, int segment)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2372,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2376,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2380,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2383,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2368
    functionDepth: 2
    functionLinenumber: 2368
    functionLinenumberEnd: 2384
    functionName: LUKS2_get_integrity_key_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_segment_jobj
    - json_object_get_int
    linkageType: ''
    returnType: int
    signature: int LUKS2_get_integrity_key_size(struct luks2_hdr *hdr, int segment)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2393,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2396,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2399,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2402,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2403,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2404,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2407,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2408,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2409,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2413
      start: 2388
    functionDepth: 2
    functionLinenumber: 2388
    functionLinenumberEnd: 2413
    functionName: LUKS2_integrity_compatible
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_object_get_string
    - json_object_object_get_ex
    - LUKS2_get_segment_jobj
    linkageType: ''
    returnType: int
    signature: int LUKS2_integrity_compatible(struct luks2_hdr *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2419,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2422,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2425,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - hdr
    - keyslot
    argTypes:
    - struct luks2_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2429
      start: 2415
    functionDepth: 0
    functionLinenumber: 2415
    functionLinenumberEnd: 2429
    functionName: LUKS2_keyslot_get_volume_key_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_get_int
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_get_volume_key_size(struct luks2_hdr *hdr, const
      char *keyslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2436,1
    - Dst: LUKS2_keyslot_get_volume_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - keyslot
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2440
      start: 2432
    functionDepth: 1
    functionLinenumber: 2432
    functionLinenumberEnd: 2440
    functionName: LUKS2_get_keyslot_stored_key_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - snprintf
    - LUKS2_keyslot_get_volume_key_size
    linkageType: ''
    returnType: int
    signature: int LUKS2_get_keyslot_stored_key_size(struct luks2_hdr *hdr, int keyslot)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_default_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2448,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2450,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2453,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2456,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2457,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2458,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2460,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2462,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2465,1
    - Dst: LUKS2_keyslot_get_volume_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2467,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2467,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2471
      start: 2442
    functionDepth: 6
    functionLinenumber: 2442
    functionLinenumberEnd: 2471
    functionName: LUKS2_get_volume_key_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - LUKS2_get_default_segment
    - json_object_object_get_ex
    - snprintf
    - json_object_array_length
    - json_object_array_get_idx
    - LUKS2_array_jobj
    - LUKS2_keyslot_get_volume_key_size
    - json_object_get_string
    - UNUSED
    linkageType: ''
    returnType: int
    signature: int LUKS2_get_volume_key_size(struct luks2_hdr *hdr, int segment)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2456,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2457,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2458,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2460,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2462,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2465,1
    - Dst: LUKS2_keyslot_get_volume_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2467,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2467,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2455
    functionDepth: 1
    functionLinenumber: 2455
    functionLinenumberEnd: 2468
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_array_length
    - json_object_array_get_idx
    - LUKS2_array_jobj
    - LUKS2_keyslot_get_volume_key_size
    - json_object_get_string
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_digests, key, val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2477,1
    - Dst: LUKS2_reencrypt_segment_old
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2479,1
    - Dst: LUKS2_get_volume_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts:
    - condition: (hdr)
      pos:
        line_end: 2476
        line_start: 2476
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 2484
      start: 2473
    functionDepth: 7
    functionLinenumber: 2473
    functionLinenumberEnd: 2484
    functionName: LUKS2_get_old_volume_key_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - LUKS2_reencrypt_segment_old
    - LUKS2_get_volume_key_size
    - assert
    linkageType: ''
    returnType: int
    signature: int LUKS2_get_old_volume_key_size(struct luks2_hdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2488,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2489
      start: 2486
    functionDepth: 2
    functionLinenumber: 2486
    functionLinenumberEnd: 2489
    functionName: LUKS2_get_sector_size
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 4
    functionsReached:
    - LUKS2_get_segment_jobj
    - json_segment_get_sector_size
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t LUKS2_get_sector_size(struct luks2_hdr *hdr)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_reencrypt_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2510,1
    - Dst: device_block_adjust
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2512,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2512,1
    - Dst: dm_targets_allocate
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2517,1
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2517,1
    - Dst: json_segments_get_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2524,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2526,1
    - Dst: json_segment_get_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2531,1
    - Dst: json_segment_get_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2532,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2537,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2542,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2542,1
    - Dst: crypt_volume_key_by_id
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2543,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2543,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2545,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2545,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2550,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2551,1
    - Dst: json_segment_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2552,1
    - Dst: json_segment_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2553,1
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2555,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2557,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2557,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2560,1
    - Dst: json_segment_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2560,1
    - Dst: dm_linear_target_set
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2561,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2561,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2563,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2563,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2578,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 67
    argCount: 5
    argNames:
    - cd
    - hdr
    - vks
    - jobj_segments
    - dmd
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct volume_key*
    - json_object*
    - struct crypt_dm_active_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2491
    functionDepth: 7
    functionLinenumber: 2491
    functionLinenumberEnd: 2580
    functionName: LUKS2_assembly_multisegment_dmd
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - json_segment_get_cipher
    - dm_crypt_target_set
    - dm_linear_target_set
    - dm_targets_allocate
    - json_segments_get_segment
    - json_segments_count
    - json_segment_type
    - crypt_volume_key_by_id
    - device_block_adjust
    - log_dbg
    - strcmp
    - LUKS2_reencrypt_data_offset
    - LUKS2_digest_by_segment
    - json_segment_get_sector_size
    - dm_targets_free
    - log_err
    - crypt_data_device
    - json_segment_get_iv_offset
    - _
    - json_segment_get_size
    - json_segment_get_offset
    linkageType: ''
    returnType: int
    signature: "int LUKS2_assembly_multisegment_dmd(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tstruct volume_key *vks,\n\tjson_object *jobj_segments,\n\tstruct
      crypt_dm_active_device *dmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2591,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2593,1
    - Dst: LUKS2_unmet_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2598,1
    - Dst: LUKS2_config_get_flags
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2603,1
    - Dst: LUKS2_assembly_multisegment_dmd
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2607,1
    - Dst: dm_reload_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2609,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2611,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 6
    argNames:
    - cd
    - name
    - vks
    - jobj_segments
    - device_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - json_object*
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2583
    functionDepth: 8
    functionLinenumber: 2583
    functionLinenumberEnd: 2613
    functionName: _reload_custom_multi
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - LUKS2_config_get_flags
    - crypt_get_hdr
    - dm_targets_free
    - dm_reload_device
    - LUKS2_assembly_multisegment_dmd
    - LUKS2_unmet_requirements
    linkageType: ''
    returnType: int
    signature: "int _reload_custom_multi(struct crypt_device *cd,\n\tconst char *name,\n\tstruct
      volume_key *vks,\n\tjson_object *jobj_segments,\n\tuint64_t device_size,\n\tuint32_t
      flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2621,1
    - Dst: _reload_custom_multi
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2624,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2625,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2625,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - cd
    - name
    - vks
    - device_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2615
    functionDepth: 9
    functionLinenumber: 2615
    functionLinenumberEnd: 2626
    functionName: LUKS2_reload
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - LUKS2_get_segments_jobj
    - crypt_get_integrity_tag_size
    - crypt_get_hdr
    - _reload_custom_multi
    linkageType: ''
    returnType: int
    signature: "int LUKS2_reload(struct crypt_device *cd,\n\tconst char *name,\n\tstruct
      volume_key *vks,\n\tuint64_t device_size,\n\tuint32_t flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2634,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2635,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2639,1
    - Dst: LUKS2_unmet_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2643,1
    - Dst: LUKS2_config_get_flags
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2648,1
    - Dst: LUKS2_assembly_multisegment_dmd
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2652,1
    - Dst: dm_create_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2654,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2656,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - cd
    - name
    - vks
    - device_size
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2658
      start: 2628
    functionDepth: 8
    functionLinenumber: 2628
    functionLinenumberEnd: 2658
    functionName: LUKS2_activate_multi
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - crypt_get_uuid
    - crypt_get_hdr
    - LUKS2_config_get_flags
    - dm_create_device
    - dm_targets_free
    - LUKS2_get_segments_jobj
    - LUKS2_assembly_multisegment_dmd
    - LUKS2_unmet_requirements
    linkageType: ''
    returnType: int
    signature: "int LUKS2_activate_multi(struct crypt_device *cd,\n\tconst char *name,\n\tstruct
      volume_key *vks,\n\tuint64_t device_size,\n\tuint32_t flags)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2670,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2672,1
    - Dst: LUKS2_unmet_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2677,1
    - Dst: crypt_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2682,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2683,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2683,1
    - Dst: LUKS2_get_data_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2687,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2691,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2691,1
    - Dst: crypt_opal_supported
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2699,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2699,1
    - Dst: LUKS2_get_opal_segment_number
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2703,1
    - Dst: LUKS2_opal_segment_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2707,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2709,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2711,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2711,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2716,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2716,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2721,1
    - Dst: crypt_dev_partition_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2721,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2721,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2721,1
    - Dst: opal_exclusive_lock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2722,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2722,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2724,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2724,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2724,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2724,1
    - Dst: opal_range_check_attributes_and_get_lock_state
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2728,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2728,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2736,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2736,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2737,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2737,1
    - Dst: opal_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2739,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2739,1
    - Dst: LUKS2_segment_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2744,1
    - Dst: LUKS2_segment_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2745,1
    - Dst: dm_crypt_target_set
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2746,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2747,1
    - Dst: crypt_get_cipher_spec
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2748,1
    - Dst: crypt_get_iv_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2749,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2749,1
    - Dst: crypt_get_integrity
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2750,1
    - Dst: crypt_get_integrity_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2751,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2751,1
    - Dst: crypt_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2752,1
    - Dst: dm_linear_target_set
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2754,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2755,1
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2756,1
    - Dst: LUKS2_config_get_flags
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2763,1
    - Dst: crypt_persistent_flags_get
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2767,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2772,1
    - Dst: LUKS2_integrity_compatible
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2774,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2775,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2775,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2781,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2781,1
    - Dst: INTEGRITY_create_dmd_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2786,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2791,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2791,1
    - Dst: create_or_reload_device_with_integrity
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2802,1
    - Dst: create_or_reload_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2806,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2810,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2811,1
    - Dst: opal_lock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2814,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2814,1
    - Dst: opal_exclusive_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2816,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 106
    argCount: 5
    argNames:
    - cd
    - name
    - crypt_key
    - opal_key
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct volume_key*
    - struct volume_key*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2819
      start: 2660
    functionDepth: 7
    functionLinenumber: 2660
    functionLinenumberEnd: 2819
    functionName: LUKS2_activate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - LUKS2_get_opal_segment_number
    - crypt_get_iv_offset
    - LUKS2_config_get_flags
    - dm_crypt_target_set
    - crypt_persistent_flags_get
    - crypt_opal_supported
    - dm_linear_target_set
    - opal_exclusive_lock
    - LUKS2_unmet_requirements
    - INTEGRITY_create_dmd_device
    - LUKS2_opal_segment_size
    - crypt_get_integrity_tag_size
    - crypt_get_sector_size
    - LUKS2_segment_is_type
    - crypt_get_hdr
    - log_std
    - LUKS2_integrity_compatible
    - crypt_get_cipher_spec
    - dm_targets_free
    - opal_lock
    - log_err
    - crypt_get_integrity
    - opal_unlock
    - opal_range_check_attributes_and_get_lock_state
    - crypt_get_data_offset
    - crypt_data_device
    - crypt_get_uuid
    - _
    - crypt_get_integrity_key_size
    - crypt_get_cipher
    - LUKS2_get_data_size
    - opal_exclusive_unlock
    - create_or_reload_device_with_integrity
    - device_path
    - create_or_reload_device
    - crypt_dev_partition_offset
    linkageType: ''
    returnType: int
    signature: "int LUKS2_activate(struct crypt_device *cd,\n\tconst char *name,\n\tstruct
      volume_key *crypt_key,\n\tstruct volume_key *opal_key,\n\tuint32_t flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2828,1
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2829,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2830,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2832
      start: 2821
    functionDepth: 0
    functionLinenumber: 2821
    functionLinenumberEnd: 2832
    functionName: is_reencryption_helper
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - strlen
    - strcmp
    - strncmp
    linkageType: ''
    returnType: bool
    signature: bool is_reencryption_helper(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_reencryption_helper
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2837,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - names
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2842
      start: 2834
    functionDepth: 1
    functionLinenumber: 2834
    functionLinenumberEnd: 2842
    functionName: contains_reencryption_helper
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 0
    functionsReached:
    - is_reencryption_helper
    linkageType: ''
    returnType: bool
    signature: bool contains_reencryption_helper(char **names)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2856,1
    - Dst: dm_uuid_cmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2860,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2863,1
    - Dst: dm_uuid_type_cmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2868,1
    - Dst: LUKS2_segment_is_hw_opal
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2869,1
    - Dst: dm_get_active_iname
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2876,1
    - Dst: dm_device_deps
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2878,1
    - Dst: ARRAY_SIZE
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2878,1
    - Dst: contains_reencryption_helper
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2882,1
    - Dst: LUKS2_reencrypt_lock_by_dm_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2883,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2886,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2886,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2888,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2888,1
    - Dst: is_reencryption_helper
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2895,1
    - Dst: dm_status_suspended
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2895,1
    - Dst: dm_error_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2896,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2897,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2897,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2902,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2904,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2909,1
    - Dst: crypt_volume_key_drop_kernel_key
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2914,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2918,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2922,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2923,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2937,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2942,1
    - Dst: dm_query_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2943,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2945,1
    - Dst: dm_remove_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2949,1
    - Dst: crypt_status
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2951,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2953,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2953,1
    - Dst: crypt_volume_key_drop_kernel_key
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2961,1
    - Dst: dm_targets_free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2965,1
    - Dst: LUKS2_get_opal_segment_number
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2975,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2976,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2976,1
    - Dst: crypt_dev_get_partition_number
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2984,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2984,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2984,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2989,1
    - Dst: opal_exclusive_lock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2990,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2990,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2992,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2992,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2992,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2992,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2997,1
    - Dst: opal_lock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2997,1
    - Dst: crypt_data_device
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2997,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2998,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:2998,1
    - Dst: opal_exclusive_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3001,1
    - Dst: LUKS2_reencrypt_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3002,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3003,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3006,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 126
    argCount: 5
    argNames:
    - cd
    - name
    - hdr
    - dmd
    - flags
    argTypes:
    - struct crypt_device*
    - char*
    - struct luks2_hdr*
    - struct crypt_dm_active_device*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3009
      start: 2844
    functionDepth: 9
    functionLinenumber: 2844
    functionLinenumberEnd: 3009
    functionName: LUKS2_deactivate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - memset
    - LUKS2_get_opal_segment_number
    - dm_remove_device
    - contains_reencryption_helper
    - LUKS2_reencrypt_lock_by_dm_uuid
    - opal_exclusive_lock
    - dm_uuid_cmp
    - free
    - is_reencryption_helper
    - dm_status_suspended
    - log_dbg
    - dm_query_device
    - crypt_status
    - LUKS2_reencrypt_unlock
    - strcmp
    - crypt_volume_key_drop_kernel_key
    - dm_targets_free
    - opal_lock
    - log_err
    - dm_error_device
    - dm_device_deps
    - crypt_data_device
    - LUKS2_segment_is_hw_opal
    - _
    - snprintf
    - opal_exclusive_unlock
    - ARRAY_SIZE
    - strncmp
    - dm_uuid_type_cmp
    - device_path
    - crypt_dev_get_partition_number
    - dm_get_active_iname
    linkageType: ''
    returnType: int
    signature: int LUKS2_deactivate(struct crypt_device *cd, const char *name, struct
      luks2_hdr *hdr, struct crypt_dm_active_device *dmd, uint32_t flags)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_config_get_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3015,1
    - Dst: reqs_unknown
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3018,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3020,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3020,1
    - Dst: reqs_reencrypt
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3027,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3028,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3028,1
    - Dst: reqs_reencrypt_online
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3029,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3030,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3030,1
    - Dst: reqs_opal
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3031,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3032,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3032,1
    - Dst: reqs_inline_hw_tags
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3033,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3034,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3034,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 4
    argNames:
    - cd
    - hdr
    - reqs_mask
    - quiet
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3038
      start: 3011
    functionDepth: 2
    functionLinenumber: 3011
    functionLinenumberEnd: 3038
    functionName: LUKS2_unmet_requirements
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 7
    functionsReached:
    - LUKS2_config_get_requirements
    - reqs_unknown
    - _
    - reqs_inline_hw_tags
    - reqs_opal
    - reqs_reencrypt_online
    - reqs_reencrypt
    - log_err
    linkageType: ''
    returnType: int
    signature: int LUKS2_unmet_requirements(struct crypt_device *cd, struct luks2_hdr
      *hdr, uint64_t reqs_mask, int quiet)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3055,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3057,1
    - Dst: LUKS2_keyslots_repair
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3060,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3061
      start: 3051
    functionDepth: 1
    functionLinenumber: 3051
    functionLinenumberEnd: 3061
    functionName: LUKS2_hdr_repair
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 1
    functionsReached:
    - json_object_is_type
    - json_object_object_get_ex
    - LUKS2_keyslots_repair
    linkageType: ''
    returnType: void
    signature: void LUKS2_hdr_repair(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3067,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3069,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jobj
    - key
    argTypes:
    - json_object*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3070
      start: 3063
    functionDepth: 0
    functionLinenumber: 3063
    functionLinenumberEnd: 3070
    functionName: json_object_object_del_by_uint
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 3
    functionsReached:
    - json_object_object_del
    - snprintf
    linkageType: ''
    returnType: void
    signature: void json_object_object_del_by_uint(json_object *jobj, unsigned key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3076,1
    - Dst: json_object_object_add_ex
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3080,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3082,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - jobj
    - key
    - jobj_val
    argTypes:
    - json_object*
    - unsigned
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3085
      start: 3072
    functionDepth: 0
    functionLinenumber: 3072
    functionLinenumberEnd: 3085
    functionName: json_object_object_add_by_uint
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 11
    functionsReached:
    - json_object_object_add_ex
    - snprintf
    - json_object_object_add
    linkageType: ''
    returnType: int
    signature: int json_object_object_add_by_uint(json_object *jobj, unsigned key,
      json_object *jobj_val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3091,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3092,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3094,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - jobj
    - key
    - jobj_val_ref
    argTypes:
    - json_object*
    - unsigned
    - json_object**
    assertStmts:
    - condition: (jobj)
      pos:
        line_end: 3090
        line_start: 3090
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    - condition: (jobj_val_ref)
      pos:
        line_end: 3091
        line_start: 3091
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 3099
      start: 3087
    functionDepth: 1
    functionLinenumber: 3087
    functionLinenumberEnd: 3099
    functionName: json_object_object_add_by_uint_by_ref
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 9
    functionsReached:
    - json_object_object_add_by_uint
    - assert
    linkageType: ''
    returnType: int
    signature: int json_object_object_add_by_uint_by_ref(json_object *jobj, unsigned
      key, json_object **jobj_val_ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_deep_copy
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3108,1
    - Dst: json_tokener_parse
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3110,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - jobj_src
    - jobj_dst
    argTypes:
    - json_object*
    - json_object**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3113
      start: 3102
    functionDepth: 0
    functionLinenumber: 3102
    functionLinenumberEnd: 3113
    functionName: json_object_copy
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 9
    functionsReached:
    - json_tokener_parse
    - json_object_deep_copy
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int json_object_copy(json_object *jobj_src, json_object **jobj_dst)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3127,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3128,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3129,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3131,1
    - Dst: json_segment_get_opal_segment_id
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3135,1
    - Dst: json_segment_get_opal_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3139,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3143,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3147,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3153,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3153,1
    - Dst: crypt_alloc_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3157,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3157,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3158,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_json_metadata.c:3160,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 5
    argNames:
    - cd
    - hdr
    - vk
    - ret_crypt_key
    - ret_opal_key
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct volume_key*
    - struct volume_key**
    - struct volume_key**
    assertStmts:
    - condition: (vk)
      pos:
        line_end: 3126
        line_start: 3126
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    - condition: (ret_opal_key)
      pos:
        line_end: 3128
        line_start: 3128
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    - condition: (ret_crypt_key)
      pos:
        line_end: 3127
        line_start: 3127
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    constantsTouched: []
    func_position:
      end: 3168
      start: 3115
    functionDepth: 2
    functionLinenumber: 3115
    functionLinenumberEnd: 3168
    functionName: LUKS2_split_crypt_and_opal_keys
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    functionUses: 2
    functionsReached:
    - crypt_volume_key_length
    - crypt_free_volume_key
    - crypt_volume_key_get_key
    - json_segment_get_opal_key_size
    - assert
    - LUKS2_get_segment_jobj
    - crypt_alloc_volume_key
    - json_segment_get_opal_segment_id
    linkageType: ''
    returnType: int
    signature: "int LUKS2_split_crypt_and_opal_keys(struct crypt_device *cd __attribute__((unused)),\n\t\tstruct
      luks2_hdr *hdr,\n\t\tconst struct volume_key *vk,\n\t\tstruct volume_key **ret_crypt_key,\n\t\tstruct
      volume_key **ret_opal_key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: crypt_token_external_disable
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_token_external_disable(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: crypt_token_external_path
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *crypt_token_external_path(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:61,1
    - Dst: strcpy
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 68
    functionName: crypt_token_set_external_path
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 8
    functionsReached:
    - strcpy
    - snprintf
    linkageType: ''
    returnType: int
    signature: int crypt_token_set_external_path(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: crypt_token_set_external_path
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_token_set_external_path(const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:83,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - cd
    - h
    argTypes:
    - struct crypt_device*
    - crypt_token_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 93
    functionName: token_validate_v1
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - log_dbg
    linkageType: ''
    returnType: bool
    signature: bool token_validate_v1(struct crypt_device *cd, const crypt_token_handler
      *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:105,1
    - Dst: dlvsym
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:106,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:108,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:109,1
    - Dst: dlsym
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:110,1
    - Dst: dlerror
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:112,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - cd
    - handle
    - symbol
    - version
    argTypes:
    - struct crypt_device*
    - void*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 118
    functionName: token_dlvsym
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - dlvsym
    - dlerror
    - log_dbg
    - dlsym
    - UNUSED
    linkageType: ''
    returnType: void
    signature: "void *token_dlvsym(struct crypt_device *cd,\n\t\tvoid *handle,\n\t\tconst
      char *symbol,\n\t\tconst char *version)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: token_validate_v1
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:125,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:129,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - h
    argTypes:
    - struct crypt_device*
    - struct crypt_token_handler_internal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: token_validate_v2
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - token_validate_v1
    linkageType: ''
    returnType: bool
    signature: bool token_validate_v2(struct crypt_device *cd, const struct crypt_token_handler_internal
      *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:138,1
    - Dst: isalnum
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:142,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 148
    functionName: external_token_name_valid
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - strlen
    - isalnum
    linkageType: ''
    returnType: bool
    signature: bool external_token_name_valid(const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: external_token_name_valid
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:164,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:165,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:171,1
    - Dst: crypt_token_external_path
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:171,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:175,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:177,1
    - Dst: dlopen
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:179,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:181,1
    - Dst: dlerror
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:181,1
    - Dst: dlerror
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:184,1
    - Dst: strdup
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:186,1
    - Dst: token_dlvsym
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:187,1
    - Dst: token_dlvsym
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:188,1
    - Dst: token_dlvsym
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:189,1
    - Dst: token_dlvsym
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:190,1
    - Dst: token_dlvsym
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:191,1
    - Dst: token_dlvsym
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:192,1
    - Dst: token_validate_v2
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:194,1
    - Dst: dlclose
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:196,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:197,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:202,1
    - Dst: struct crypt_token_handler_v2*::version
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:202,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:206,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 3
    argNames:
    - cd
    - name
    - ret
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_token_handler_internal*
    assertStmts:
    - condition: (*buf == '/')
      pos:
        line_end: 174
        line_start: 174
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
    constantsTouched: []
    func_position:
      end: 212
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 212
    functionName: crypt_token_load_external
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - memset
    - struct crypt_token_handler_v2*::version
    - snprintf
    - dlopen
    - assert
    - log_dbg
    - dlerror
    - strdup
    - token_validate_v2
    - dlclose
    - crypt_token_external_path
    - external_token_name_valid
    - token_dlvsym
    linkageType: ''
    returnType: int
    signature: int crypt_token_load_external(struct crypt_device *cd, const char *name,
      struct crypt_token_handler_internal *ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:222,1
    - Dst: dlerror
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 229
    functionName: crypt_token_unload_external_all
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached:
    - log_dbg
    - dlerror
    linkageType: ''
    returnType: void
    signature: void crypt_token_unload_external_all(struct crypt_device *cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - name
    - ret
    argTypes:
    - struct crypt_device*
    - char*
    - struct crypt_token_handler_internal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 238
    functionName: crypt_token_load_external
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int crypt_token_load_external(struct crypt_device *cd __attribute__((unused)),\n\t\t\t\t
      \    const char *name __attribute__((unused)),\n\t\t\t\t     struct crypt_token_handler_internal
      *ret __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: crypt_token_unload_external_all
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void crypt_token_unload_external_all(struct crypt_device *cd __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: is_builtin_candidate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int is_builtin_candidate(const char *type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_builtin_candidate
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:255,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:256,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:261,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:262,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - cd
    - name
    - index
    argTypes:
    - struct crypt_device*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 274
    functionName: crypt_token_find_free
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - strcmp
    - is_builtin_candidate
    linkageType: ''
    returnType: int
    signature: int crypt_token_find_free(struct crypt_device *cd, const char *name,
      int *index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: token_validate_v1
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:280,1
    - Dst: crypt_token_find_free
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - handler
    argTypes:
    - crypt_token_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 290
    functionName: crypt_token_register
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached:
    - token_validate_v1
    - crypt_token_find_free
    linkageType: ''
    returnType: int
    signature: int crypt_token_register(const crypt_token_handler *handler)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:298,1
    - Dst: is_builtin_candidate
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:304,1
    - Dst: crypt_token_load_external
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:307,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - cd
    - type
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 292
    functionDepth: 3
    functionLinenumber: 292
    functionLinenumberEnd: 311
    functionName: LUKS2_token_handler_type
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - strcmp
    - is_builtin_candidate
    - crypt_token_load_external
    linkageType: ''
    returnType: void
    signature: void *LUKS2_token_handler_type(struct crypt_device *cd, const char
      *type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:322,1
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:325,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:328,1
    - Dst: LUKS2_token_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:331,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - token
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 313
    functionDepth: 4
    functionLinenumber: 313
    functionLinenumberEnd: 332
    functionName: LUKS2_token_handler
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - json_object_object_get_ex
    - LUKS2_get_token_jobj
    - LUKS2_token_handler_type
    - json_object_get_string
    linkageType: ''
    returnType: void
    signature: void *LUKS2_token_handler(struct crypt_device *cd, int token)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 343
    functionName: LUKS2_token_find_free
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_token_jobj
    linkageType: ''
    returnType: int
    signature: int LUKS2_token_find_free(struct luks2_hdr *hdr)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_token_find_free
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:359,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:365,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:368,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:373,1
    - Dst: json_tokener_parse_verbose
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:376,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:378,1
    - Dst: LUKS2_token_validate
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:382,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:383,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:387,1
    - Dst: LUKS2_token_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:388,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:388,1
    - Dst: is_builtin_candidate
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:390,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:390,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:391,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:392,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:393,1
    - Dst: crypt_token_handler*::validate
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:397,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:398,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:399,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:403,1
    - Dst: LUKS2_check_json_size
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:404,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:405,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:406,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:412,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 5
    argNames:
    - cd
    - hdr
    - token
    - json
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 345
    functionDepth: 8
    functionLinenumber: 345
    functionLinenumberEnd: 415
    functionName: LUKS2_token_create
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 2
    functionsReached:
    - LUKS2_hdr_write
    - is_builtin_candidate
    - snprintf
    - json_object_object_get_ex
    - crypt_token_handler*::validate
    - json_object_object_add
    - json_object_object_del
    - LUKS2_check_json_size
    - LUKS2_token_validate
    - LUKS2_token_find_free
    - log_dbg
    - json_object_get_string
    - LUKS2_token_handler_type
    - json_object_put
    - json_tokener_parse_verbose
    linkageType: ''
    returnType: int
    signature: "int LUKS2_token_create(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tint token,\n\tconst char *json,\n\tint commit)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:429,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:432,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:433,1
    - Dst: LUKS2_token_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:435,1
    - Dst: is_builtin_candidate
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:438,1
    - Dst: is_builtin_candidate
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:444,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - cd
    - hdr
    - token
    - type
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 417
    functionDepth: 4
    functionLinenumber: 417
    functionLinenumberEnd: 445
    functionName: LUKS2_token_status
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 2
    functionsReached:
    - is_builtin_candidate
    - json_object_object_get_ex
    - LUKS2_get_token_jobj
    - json_object_get_string
    - LUKS2_token_handler_type
    linkageType: ''
    returnType: crypt_token_info
    signature: "crypt_token_info LUKS2_token_status(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint token,\n\tconst char **type)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:457,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:464,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:475,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:475,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:475,1
    - Dst: LUKS2_keyslot_priority_get
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:480,1
    - Dst: LUKS2_keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:487,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 6
    argNames:
    - hdr
    - jobj_token
    - keyslot
    - segment
    - minimal_priority
    - requires_keyslot
    argTypes:
    - struct luks2_hdr*
    - json_object*
    - int
    - int
    - crypt_keyslot_priority
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 493
    functionName: token_is_usable
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - LUKS2_keyslot_priority_get
    - json_object_object_get_ex
    - json_object_array_length
    - json_object_array_get_idx
    - json_object_get_string
    - atoi
    - LUKS2_keyslot_for_segment
    linkageType: ''
    returnType: int
    signature: "int token_is_usable(struct luks2_hdr *hdr, json_object *jobj_token,
      int keyslot, int segment,\n\t\t\t   crypt_keyslot_priority minimal_priority,
      bool requires_keyslot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_builtin_candidate
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:497,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:498,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - cd
    - ret_val
    - type
    argTypes:
    - struct crypt_device*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 503
    functionName: translate_errno
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 4
    functionsReached:
    - log_dbg
    - is_builtin_candidate
    linkageType: ''
    returnType: int
    signature: int translate_errno(struct crypt_device *cd, int ret_val, const char
      *type)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:524,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:525,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:526,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:529,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:531,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:531,1
    - Dst: token_is_usable
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:535,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:538,1
    - Dst: LUKS2_token_handler
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:543,1
    - Dst: struct crypt_token_handler_v2*::validate
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:546,1
    - Dst: crypt_jobj_to_string_on_disk
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:546,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:547,1
    - Dst: translate_errno
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:554,1
    - Dst: struct crypt_token_handler_v2*::open_pin
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:554,1
    - Dst: translate_errno
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:556,1
    - Dst: struct crypt_token_handler_v2*::open
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:556,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:558,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 14
    argNames:
    - cd
    - hdr
    - keyslot
    - token
    - jobj_token
    - type
    - segment
    - priority
    - pin
    - pin_size
    - buffer
    - buffer_len
    - usrptr
    - requires_keyslot
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - json_object*
    - char*
    - int
    - crypt_keyslot_priority
    - char*
    - size_t
    - char**
    - size_t*
    - void*
    - bool
    assertStmts:
    - condition: (token >= 0)
      pos:
        line_end: 523
        line_start: 523
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
    - condition: (jobj_token)
      pos:
        line_end: 524
        line_start: 524
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
    - condition: (priority >= 0)
      pos:
        line_end: 525
        line_start: 525
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
    constantsTouched: []
    func_position:
      end: 561
      start: 505
    functionDepth: 5
    functionLinenumber: 505
    functionLinenumberEnd: 561
    functionName: token_open
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - struct crypt_token_handler_v2*::validate
    - json_object_object_get_ex
    - token_is_usable
    - translate_errno
    - struct crypt_token_handler_v2*::open
    - struct crypt_token_handler_v2*::open_pin
    - LUKS2_token_handler
    - assert
    - log_dbg
    - crypt_jobj_to_string_on_disk
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int token_open(struct crypt_device *cd,\n\tstruct luks2_hdr *hdr,\n\tint
      keyslot,\n\tint token,\n\tjson_object *jobj_token,\n\tconst char *type,\n\tint
      segment,\n\tcrypt_keyslot_priority priority,\n\tconst char *pin,\n\tsize_t pin_size,\n\tchar
      **buffer,\n\tsize_t *buffer_len,\n\tvoid *usrptr,\n\tbool requires_keyslot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_token_handler
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:568,1
    - Dst: crypt_token_handler*::buffer_free
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:571,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:573,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - cd
    - token
    - buffer
    - buffer_len
    argTypes:
    - struct crypt_device*
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 563
    functionDepth: 5
    functionLinenumber: 563
    functionLinenumberEnd: 576
    functionName: LUKS2_token_buffer_free
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - crypt_token_handler*::buffer_free
    - crypt_safe_memzero
    - free
    - LUKS2_token_handler
    linkageType: ''
    returnType: void
    signature: "void LUKS2_token_buffer_free(struct crypt_device *cd,\n\t\tint token,\n\t\tvoid
      *buffer,\n\t\tsize_t buffer_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - r
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 583
    functionName: break_loop_retval
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool break_loop_retval(int r)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - r
    - stored
    argTypes:
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 595
    functionName: update_return_errno
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void update_return_errno(int r, int *stored)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:613,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:614,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:615,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:615,1
    - Dst: LUKS2_keyslot_priority_get
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:616,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:621,1
    - Dst: LUKS2_keyslot_open
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:623,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 10
    argNames:
    - cd
    - hdr
    - type
    - jobj_token_keyslots
    - token
    - segment
    - priority
    - buffer
    - buffer_len
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char*
    - json_object*
    - int
    - int
    - crypt_keyslot_priority
    - char*
    - size_t
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 636
    functionName: try_token_keyslot_unlock
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - LUKS2_keyslot_priority_get
    - json_object_array_length
    - json_object_array_get_idx
    - log_dbg
    - LUKS2_keyslot_open
    - json_object_get_string
    - atoi
    linkageType: ''
    returnType: int
    signature: "int try_token_keyslot_unlock(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tconst char *type,\n\tjson_object *jobj_token_keyslots,\n\tint token,\n\tint
      segment,\n\tcrypt_keyslot_priority priority,\n\tconst char *buffer,\n\tsize_t
      buffer_len,\n\tstruct volume_key **r_vk)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:652,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:656,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:659,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:665,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:666,1
    - Dst: LUKS2_keyslot_open
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:667,1
    - Dst: try_token_keyslot_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:672,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:672,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 9
    argNames:
    - cd
    - hdr
    - keyslot
    - token
    - segment
    - min_priority
    - buffer
    - buffer_len
    - vk
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - int
    - crypt_keyslot_priority
    - char*
    - size_t
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 638
    functionDepth: 2
    functionLinenumber: 638
    functionLinenumberEnd: 683
    functionName: LUKS2_keyslot_open_by_token
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_token_jobj
    - log_dbg
    - LUKS2_keyslot_open
    - try_token_keyslot_unlock
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_open_by_token(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint keyslot,\n\tint token,\n\tint segment,\n\tcrypt_keyslot_priority
      min_priority,\n\tconst char *buffer,\n\tsize_t buffer_len,\n\tstruct volume_key
      **vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:688,1
    - Dst: BITFIELD_SIZE
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:688,1
    - Dst: UINT32_C
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - token
    - block_list
    argTypes:
    - int
    - uint32_t*
    assertStmts:
    - condition: (token >= 0 && (size_t)token < BITFIELD_SIZE(block_list))
      pos:
        line_end: 687
        line_start: 687
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
    constantsTouched: []
    func_position:
      end: 691
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 691
    functionName: token_is_blocked
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - UINT32_C
    - BITFIELD_SIZE
    - assert
    linkageType: ''
    returnType: bool
    signature: bool token_is_blocked(int token, uint32_t *block_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:696,1
    - Dst: BITFIELD_SIZE
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:696,1
    - Dst: UINT32_C
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - token
    - block_list
    argTypes:
    - int
    - uint32_t*
    assertStmts:
    - condition: (token >= 0 && (size_t)token < BITFIELD_SIZE(block_list))
      pos:
        line_end: 695
        line_start: 695
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
    constantsTouched: []
    func_position:
      end: 699
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 699
    functionName: token_block
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - UINT32_C
    - BITFIELD_SIZE
    - assert
    linkageType: ''
    returnType: void
    signature: void token_block(int token, uint32_t *block_list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:719,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:720,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:723,1
    - Dst: token_is_blocked
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:724,1
    - Dst: token_open
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:726,1
    - Dst: LUKS2_keyslot_open_by_token
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:729,1
    - Dst: LUKS2_token_buffer_free
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:731,1
    - Dst: token_block
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:735,1
    - Dst: break_loop_retval
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:737,1
    - Dst: update_return_errno
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:740,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 13
    argNames:
    - cd
    - hdr
    - jobj_tokens
    - type
    - keyslot
    - segment
    - priority
    - pin
    - pin_size
    - usrptr
    - stored_retval
    - block_list
    - vk
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - json_object*
    - char*
    - int
    - int
    - crypt_keyslot_priority
    - char*
    - size_t
    - void*
    - int*
    - uint32_t*
    - struct volume_key**
    assertStmts:
    - condition: (stored_retval)
      pos:
        line_end: 718
        line_start: 718
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
    - condition: (block_list)
      pos:
        line_end: 719
        line_start: 719
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
    constantsTouched: []
    func_position:
      end: 744
      start: 701
    functionDepth: 6
    functionLinenumber: 701
    functionLinenumberEnd: 744
    functionName: token_open_priority
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - break_loop_retval
    - update_return_errno
    - assert
    - token_block
    - token_is_blocked
    - token_open
    - LUKS2_keyslot_open_by_token
    - LUKS2_token_buffer_free
    - atoi
    linkageType: ''
    returnType: int
    signature: "int token_open_priority(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tjson_object *jobj_tokens,\n\tconst char *type,\n\tint keyslot,\n\tint
      segment,\n\tcrypt_keyslot_priority priority,\n\tconst char *pin,\n\tsize_t pin_size,\n\tvoid
      *usrptr,\n\tint *stored_retval,\n\tuint32_t *block_list,\n\tstruct volume_key
      **vk)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:723,1
    - Dst: token_is_blocked
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:724,1
    - Dst: token_open
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:726,1
    - Dst: LUKS2_keyslot_open_by_token
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:729,1
    - Dst: LUKS2_token_buffer_free
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:731,1
    - Dst: token_block
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:735,1
    - Dst: break_loop_retval
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:737,1
    - Dst: update_return_errno
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:740,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 722
    functionDepth: 6
    functionLinenumber: 722
    functionLinenumberEnd: 741
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - break_loop_retval
    - update_return_errno
    - token_block
    - token_is_blocked
    - token_open
    - LUKS2_keyslot_open_by_token
    - LUKS2_token_buffer_free
    - atoi
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_tokens, slot, val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:754,1
    - Dst: token_open_priority
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:761,1
    - Dst: token_open_priority
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:764,1
    - Dst: break_loop_retval
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:766,1
    - Dst: token_open_priority
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:769,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 9
    argNames:
    - cd
    - hdr
    - type
    - keyslot
    - segment
    - pin
    - pin_size
    - usrptr
    - vk
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - char*
    - int
    - int
    - char*
    - size_t
    - void*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 746
    functionDepth: 7
    functionLinenumber: 746
    functionLinenumberEnd: 771
    functionName: token_open_any
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - break_loop_retval
    - json_object_object_get_ex
    - token_open_priority
    linkageType: ''
    returnType: int
    signature: "int token_open_any(struct crypt_device *cd, struct luks2_hdr *hdr,
      const char *type,\n\t\t\t  int keyslot, int segment, const char *pin, size_t
      pin_size, void *usrptr,\n\t\t\t  struct volume_key **vk)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:790,1
    - Dst: LUKS2_get_default_segment
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:793,1
    - Dst: LUKS2_keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:804,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:807,1
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:813,1
    - Dst: token_open
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:814,1
    - Dst: LUKS2_keyslot_open_by_token
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:817,1
    - Dst: LUKS2_token_buffer_free
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:819,1
    - Dst: token_open_any
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:833,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 10
    argNames:
    - cd
    - hdr
    - keyslot
    - token
    - type
    - pin
    - pin_size
    - segment
    - usrptr
    - vk
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - char*
    - char*
    - size_t
    - int
    - void*
    - struct volume_key**
    assertStmts:
    - condition: (vk)
      pos:
        line_end: 789
        line_start: 789
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
    constantsTouched: []
    func_position:
      end: 838
      start: 773
    functionDepth: 8
    functionLinenumber: 773
    functionLinenumberEnd: 838
    functionName: LUKS2_token_unlock_key
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached:
    - LUKS2_get_default_segment
    - token_open_any
    - LUKS2_get_token_jobj
    - assert
    - log_dbg
    - token_open
    - LUKS2_keyslot_open_by_token
    - LUKS2_token_buffer_free
    - LUKS2_keyslot_for_segment
    linkageType: ''
    returnType: int
    signature: "int LUKS2_token_unlock_key(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tint keyslot,\n\tint token,\n\tconst char *type,\n\tconst char *pin,\n\tsize_t
      pin_size,\n\tint segment,\n\tvoid *usrptr,\n\tstruct volume_key **vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_token_handler
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:845,1
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:847,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:847,1
    - Dst: crypt_token_handler*::dump
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:849,1
    - Dst: crypt_jobj_to_string_on_disk
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:849,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - cd
    - token
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 840
    functionDepth: 5
    functionLinenumber: 840
    functionLinenumberEnd: 851
    functionName: LUKS2_token_dump
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached:
    - crypt_get_hdr
    - LUKS2_get_token_jobj
    - crypt_token_handler*::dump
    - crypt_jobj_to_string_on_disk
    - LUKS2_token_handler
    linkageType: ''
    returnType: void
    signature: void LUKS2_token_dump(struct crypt_device *cd, int token)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:857,1
    - Dst: crypt_jobj_to_string_on_disk
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:861,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - hdr
    - token
    - json
    argTypes:
    - struct luks2_hdr*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 853
    functionDepth: 2
    functionLinenumber: 853
    functionLinenumberEnd: 863
    functionName: LUKS2_token_json_get
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached:
    - crypt_jobj_to_string_on_disk
    - LUKS2_get_token_jobj
    linkageType: ''
    returnType: int
    signature: int LUKS2_token_json_get(struct luks2_hdr *hdr, int token, const char
      **json)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:871,1
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:873,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:877,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:881,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:885,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:887,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:887,1
    - Dst: LUKS2_array_remove
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:889,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:891,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - cd
    - hdr
    - token
    - keyslot
    - assign
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 865
    functionDepth: 2
    functionLinenumber: 865
    functionLinenumberEnd: 895
    functionName: assign_one_keyslot
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - snprintf
    - json_object_object_get_ex
    - LUKS2_get_token_jobj
    - json_object_array_add
    - json_object_object_add
    - json_object_new_string
    - log_dbg
    - LUKS2_array_jobj
    - LUKS2_array_remove
    linkageType: ''
    returnType: int
    signature: "int assign_one_keyslot(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\t\t
      \     int token, int keyslot, int assign)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:903,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:907,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:910,1
    - Dst: assign_one_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:911,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:911,1
    - Dst: assign_one_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:916,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot
    - token
    - assign
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 897
    functionDepth: 3
    functionLinenumber: 897
    functionLinenumberEnd: 919
    functionName: assign_one_token
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_token_jobj
    - UNUSED
    - atoi
    - assign_one_keyslot
    linkageType: ''
    returnType: int
    signature: "int assign_one_token(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\t\t
      \   int keyslot, int token, int assign)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:910,1
    - Dst: assign_one_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:911,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:911,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 909
    functionDepth: 3
    functionLinenumber: 909
    functionLinenumberEnd: 914
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - UNUSED
    - atoi
    - assign_one_keyslot
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_keyslots, key, val)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:932,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:935,1
    - Dst: assign_one_token
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:936,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:936,1
    - Dst: assign_one_token
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:941,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:947,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 6
    argNames:
    - cd
    - hdr
    - keyslot
    - token
    - assign
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 921
    functionDepth: 8
    functionLinenumber: 921
    functionLinenumberEnd: 950
    functionName: LUKS2_token_assign
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 4
    functionsReached:
    - LUKS2_hdr_write
    - json_object_object_get_ex
    - assign_one_token
    - UNUSED
    - atoi
    linkageType: ''
    returnType: int
    signature: "int LUKS2_token_assign(struct crypt_device *cd, struct luks2_hdr *hdr,\n\t\t\tint
      keyslot, int token, int assign, int commit)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:935,1
    - Dst: assign_one_token
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:936,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:936,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 934
    functionDepth: 4
    functionLinenumber: 934
    functionLinenumberEnd: 939
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - UNUSED
    - atoi
    - assign_one_token
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_tokens, key, val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:956,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:961,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:963,1
    - Dst: json_object_array_get_idx
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:964,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:965,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:965,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - hdr
    - keyslot
    - token
    argTypes:
    - struct luks2_hdr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 952
    functionDepth: 2
    functionLinenumber: 952
    functionLinenumberEnd: 970
    functionName: token_is_assigned
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 9
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_token_jobj
    - json_object_array_length
    - json_object_array_get_idx
    - json_object_get_string
    - atoi
    linkageType: ''
    returnType: int
    signature: int token_is_assigned(struct luks2_hdr *hdr, int keyslot, int token)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: token_is_assigned
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:977,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - hdr
    - keyslot
    - token
    argTypes:
    - struct luks2_hdr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 972
    functionDepth: 3
    functionLinenumber: 972
    functionLinenumberEnd: 978
    functionName: LUKS2_token_is_assigned
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached:
    - token_is_assigned
    linkageType: ''
    returnType: int
    signature: int LUKS2_token_is_assigned(struct luks2_hdr *hdr, int keyslot, int
      token)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_tokens_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:982,1
    - Dst: json_object_object_length
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:986,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 987
    functionName: LUKS2_tokens_count
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_tokens_jobj
    - json_object_object_length
    linkageType: ''
    returnType: int
    signature: int LUKS2_tokens_count(struct luks2_hdr *hdr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_tokens_count
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1000,1
    - Dst: token_is_assigned
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1005,1
    - Dst: assign_one_token
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1006,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1011,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot_from
    - keyslot_to
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 989
    functionDepth: 8
    functionLinenumber: 989
    functionLinenumberEnd: 1012
    functionName: LUKS2_token_assignment_copy
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached:
    - token_is_assigned
    - LUKS2_hdr_write
    - LUKS2_tokens_count
    - assign_one_token
    linkageType: ''
    returnType: int
    signature: "int LUKS2_token_assignment_copy(struct crypt_device *cd,\n\t\t\tstruct
      luks2_hdr *hdr,\n\t\t\tint keyslot_from,\n\t\t\tint keyslot_to,\n\t\t\tint commit)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_token_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1033,1
    - Dst: token_open
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1034,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1038,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1044,1
    - Dst: token_open
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1045,1
    - Dst: break_loop_retval
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1057,1
    - Dst: update_return_errno
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1060,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1067,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1069,1
    - Dst: LUKS2_token_buffer_free
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1073,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 9
    argNames:
    - cd
    - hdr
    - token
    - type
    - pin
    - pin_size
    - usrptr
    - passphrase
    - passphrase_size
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - char*
    - char*
    - size_t
    - void*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1014
    functionDepth: 6
    functionLinenumber: 1014
    functionLinenumberEnd: 1080
    functionName: LUKS2_token_unlock_passphrase
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 1
    functionsReached:
    - crypt_safe_alloc
    - json_object_object_get_ex
    - LUKS2_get_token_jobj
    - crypt_safe_memcpy
    - LUKS2_token_buffer_free
    - token_open
    - update_return_errno
    - break_loop_retval
    - atoi
    linkageType: ''
    returnType: int
    signature: "int LUKS2_token_unlock_passphrase(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint token,\n\tconst char *type,\n\tconst char *pin,\n\tsize_t
      pin_size,\n\tvoid *usrptr,\n\tchar **passphrase,\n\tsize_t *passphrase_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1044,1
    - Dst: token_open
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1045,1
    - Dst: break_loop_retval
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1057,1
    - Dst: update_return_errno
      Src: /src/cryptsetup/lib/luks2/luks2_token.c:1060,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1043
    functionDepth: 6
    functionLinenumber: 1043
    functionLinenumberEnd: 1061
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_token.c
    functionUses: 0
    functionsReached:
    - update_return_errno
    - break_loop_retval
    - atoi
    - token_open
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_tokens, slot, val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:24,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:26,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:31,1
    - Dst: crypt_storage_init
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:35,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:39,1
    - Dst: crypt_storage_decrypt
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:40,1
    - Dst: crypt_storage_destroy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:41,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:43,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:44,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - cd
    - keylength
    - cipher
    - cipher_mode
    argTypes:
    - struct crypt_device*
    - size_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 15
    functionDepth: 4
    functionLinenumber: 15
    functionLinenumberEnd: 46
    functionName: LUKS2_check_cipher
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 1
    functionsReached:
    - memset
    - crypt_safe_alloc
    - crypt_storage_destroy
    - crypt_storage_decrypt
    - crypt_random_get
    - log_dbg
    - crypt_storage_init
    - crypt_safe_free
    - crypt_safe_memzero
    linkageType: ''
    returnType: int
    signature: "int LUKS2_check_cipher(struct crypt_device *cd,\n\t\t      size_t
      keylength,\n\t\t      const char *cipher,\n\t\t      const char *cipher_mode)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:56,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:62,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:62,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:63,1
    - Dst: json_object_new_int64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:63,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:66,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:72,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:72,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:73,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:73,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:74,1
    - Dst: json_object_new_int64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:74,1
    - Dst: crypt_base64_encode
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:76,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:78,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:79,1
    - Dst: json_object_new_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:82,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:83,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:84,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:85,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:88,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:94,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:94,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:95,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:95,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:97,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:97,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:98,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:101,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:107,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:107,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:111,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:112,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:113,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:116,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:116,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:118,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:118,1
    - Dst: LUKS_keyslot_area
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:121,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:122,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:123,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:126,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:127,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:127,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:128,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:128,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:129,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:129,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:130,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:135,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 70
    argCount: 3
    argNames:
    - hdr_v1
    - keyslot
    - keyslot_object
    argTypes:
    - struct luks_phdr*
    - int
    - json_object**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 137
    functionName: json_luks1_keyslot
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_new_uint64
    - free
    - snprintf
    - json_object_object_add
    - json_object_new_string_len
    - json_object_new_string
    - LUKS_keyslot_area
    - json_object_new_object
    - json_object_new_int
    - size_round_up
    - json_object_new_int64
    - crypt_base64_encode
    - json_object_put
    linkageType: ''
    returnType: int
    signature: int json_luks1_keyslot(const struct luks_phdr *hdr_v1, int keyslot,
      json_object **keyslot_object)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:144,1
    - Dst: json_luks1_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:151,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:153,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:156,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:158,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:159,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - hdr_v1
    - keyslots_object
    argTypes:
    - struct luks_phdr*
    - json_object**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 166
    functionName: json_luks1_keyslots
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - json_luks1_keyslot
    - json_object_put
    - json_object_new_object
    - json_object_object_add_by_uint
    linkageType: ''
    returnType: int
    signature: int json_luks1_keyslots(const struct luks_phdr *hdr_v1, json_object
      **keyslots_object)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:175,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:180,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:182,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:185,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:190,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:192,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:195,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:198,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:200,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:203,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:206,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:208,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:211,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:215,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:216,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:223,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:225,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:228,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:231,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:233,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:236,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 51
    argCount: 2
    argNames:
    - hdr_v1
    - segment_object
    argTypes:
    - struct luks_phdr*
    - json_object**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 240
    functionName: json_luks1_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_new_uint64
    - snprintf
    - json_object_object_add
    - json_object_new_string
    - json_object_new_object
    - json_object_new_int
    - json_object_put
    linkageType: ''
    returnType: int
    signature: int json_luks1_segment(const struct luks_phdr *hdr_v1, json_object
      **segment_object)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:247,1
    - Dst: json_luks1_segment
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:251,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:253,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:256,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:258,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - hdr_v1
    - segments_object
    argTypes:
    - struct luks_phdr*
    - json_object**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 265
    functionName: json_luks1_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - json_object_object_add_by_uint
    - json_object_put
    - json_object_new_object
    - json_luks1_segment
    linkageType: ''
    returnType: int
    signature: int json_luks1_segments(const struct luks_phdr *hdr_v1, json_object
      **segments_object)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:274,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:279,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:281,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:284,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:287,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:289,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:292,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:292,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:297,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:298,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:299,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:300,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:304,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:305,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:306,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:307,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:308,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:313,1
    - Dst: json_object_new_array
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:316,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:318,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:321,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:321,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:323,1
    - Dst: json_object_array_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:324,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:325,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:326,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:327,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:331,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:334,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:336,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:339,1
    - Dst: crypt_base64_encode
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:342,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:344,1
    - Dst: json_object_new_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:348,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:349,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:351,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:354,1
    - Dst: crypt_base64_encode
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:357,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:359,1
    - Dst: json_object_new_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:363,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:364,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:366,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:369,1
    - Dst: json_object_new_int64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:372,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:374,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:377,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 86
    argCount: 2
    argNames:
    - hdr_v1
    - digest_object
    argTypes:
    - struct luks_phdr*
    - json_object**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 381
    functionName: json_luks1_digest
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - snprintf
    - free
    - json_object_object_add
    - json_object_array_add
    - json_object_new_string_len
    - json_object_new_string
    - json_object_new_object
    - json_object_get
    - json_object_new_int64
    - crypt_base64_encode
    - json_object_put
    linkageType: ''
    returnType: int
    signature: int json_luks1_digest(const struct luks_phdr *hdr_v1, json_object **digest_object)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:388,1
    - Dst: json_luks1_digest
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:392,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:394,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - hdr_v1
    - digests_object
    argTypes:
    - struct luks_phdr*
    - json_object**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 401
    functionName: json_luks1_digests
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - json_luks1_digest
    - json_object_put
    - json_object_new_object
    - json_object_object_add
    linkageType: ''
    returnType: int
    signature: int json_luks1_digests(const struct luks_phdr *hdr_v1, json_object
      **digests_object)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:409,1
    - Dst: json_luks1_keyslots
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:414,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:416,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:419,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:422,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:424,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:427,1
    - Dst: json_luks1_segments
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:430,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:432,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:435,1
    - Dst: json_luks1_digests
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:438,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:440,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:443,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:447,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:449,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:452,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:455,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:455,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:457,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:457,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 3
    argNames:
    - hdr_v1
    - luks1_object
    - keyslots_size
    argTypes:
    - struct luks_phdr*
    - json_object**
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 403
    functionDepth: 4
    functionLinenumber: 403
    functionLinenumberEnd: 461
    functionName: json_luks1_object
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_new_uint64
    - json_luks1_keyslots
    - json_object_object_add
    - json_object_new_object
    - json_luks1_segments
    - json_luks1_digests
    - json_object_put
    linkageType: ''
    returnType: int
    signature: int json_luks1_object(struct luks_phdr *hdr_v1, json_object **luks1_object,
      uint64_t keyslots_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:468,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:470,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:471,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:472,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:473,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:474,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - jobj
    - offset_add
    argTypes:
    - json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 463
    functionDepth: 2
    functionLinenumber: 463
    functionLinenumberEnd: 476
    functionName: move_keyslot_offset
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_new_uint64
    - json_object_object_get_ex
    - json_object_object_add
    - crypt_jobj_get_uint64
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void move_keyslot_offset(json_object *jobj, int offset_add)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:470,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:471,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:472,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:473,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:474,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 469
    functionDepth: 2
    functionLinenumber: 469
    functionLinenumberEnd: 475
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - crypt_jobj_new_uint64
    - json_object_object_get_ex
    - json_object_object_add
    - crypt_jobj_get_uint64
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj1, key, val)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:482,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:485,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:488,1
    - Dst: crypt_getpagesize
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:488,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:491,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:493,1
    - Dst: posix_fallocate
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:498,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:499,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:502,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:502,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:503,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:507,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:507,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:508,1
    - Dst: write_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:512,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:512,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:513,1
    - Dst: device_sync
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:519,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:520,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:521,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 4
    argNames:
    - cd
    - offset_from
    - offset_to
    - buf_size
    argTypes:
    - struct crypt_device*
    - off_t
    - off_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 478
    functionDepth: 4
    functionLinenumber: 478
    functionLinenumberEnd: 524
    functionName: move_keyslot_areas
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - device_open
    - device_sync
    - free
    - posix_memalign
    - crypt_metadata_device
    - crypt_getpagesize
    - log_dbg
    - read_lseek_blockwise
    - posix_fallocate
    - write_lseek_blockwise
    - device_alignment
    - crypt_safe_memzero
    - device_block_size
    linkageType: ''
    returnType: int
    signature: "int move_keyslot_areas(struct crypt_device *cd, off_t offset_from,\n\t\t\t
      \     off_t offset_to, size_t buf_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup_dm_dev_by_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:530,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:530,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:530,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:532,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:532,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cd
    argTypes:
    - struct crypt_device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 526
    functionDepth: 3
    functionLinenumber: 526
    functionLinenumberEnd: 535
    functionName: luks_header_in_use
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - crypt_get_uuid
    - _
    - log_err
    - lookup_dm_dev_by_uuid
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: int luks_header_in_use(struct crypt_device *cd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:542,1
    - Dst: posix_memalign
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:545,1
    - Dst: crypt_getpagesize
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:545,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:548,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:550,1
    - Dst: read_lseek_blockwise
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:555,1
    - Dst: device_block_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:555,1
    - Dst: device_alignment
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:555,1
    - Dst: memcmp
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:557,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:558,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:558,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:562,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - cd
    - luks1_size
    argTypes:
    - struct crypt_device*
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 538
    functionDepth: 4
    functionLinenumber: 538
    functionLinenumberEnd: 564
    functionName: luksmeta_header_present
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - device_open
    - memcmp
    - free
    - _
    - posix_memalign
    - crypt_metadata_device
    - crypt_getpagesize
    - log_err
    - read_lseek_blockwise
    - device_alignment
    - device_block_size
    linkageType: ''
    returnType: int
    signature: int luksmeta_header_present(struct crypt_device *cd, off_t luks1_size)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_data_offset
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:572,1
    - Dst: device_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:576,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:576,1
    - Dst: LUKS_device_sectors
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:579,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:580,1
    - Dst: LUKS_keyslots_offset
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:584,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:585,1
    - Dst: LUKS_keyslots_offset
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:585,1
    - Dst: LUKS2_check_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:589,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:590,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:590,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:595,1
    - Dst: LUKS2_keyslot_cipher_incompatible
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:598,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:599,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:599,1
    - Dst: luksmeta_header_present
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:604,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:607,1
    - Dst: device_fallocate
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:613,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:613,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:614,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:614,1
    - Dst: json_luks1_object
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:625,1
    - Dst: move_keyslot_offset
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:629,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:632,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:636,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:637,1
    - Dst: crypt_random_get
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:638,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:639,1
    - Dst: crypt_get_uuid
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:639,1
    - Dst: LUKS2_hdr_and_areas_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:646,1
    - Dst: LUKS2_hdr_validate
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:652,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:653,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:653,1
    - Dst: luks_header_in_use
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:658,1
    - Dst: LUKS2_keyslots_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:669,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:670,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:670,1
    - Dst: move_keyslot_areas
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:675,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:676,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:676,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:681,1
    - Dst: LUKS2_hdr_free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:683,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 82
    argCount: 3
    argNames:
    - cd
    - hdr1
    - hdr2
    argTypes:
    - struct crypt_device*
    - struct luks_phdr*
    - struct luks2_hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 567
    functionDepth: 8
    functionLinenumber: 567
    functionLinenumberEnd: 686
    functionName: LUKS2_luks1_to_luks2
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 1
    functionsReached:
    - LUKS2_keyslot_cipher_incompatible
    - memset
    - LUKS2_keyslots_size
    - LUKS2_hdr_write
    - LUKS2_hdr_free
    - LUKS2_hdr_validate
    - LUKS_device_sectors
    - strncpy
    - log_dbg
    - LUKS2_check_cipher
    - device_size
    - log_err
    - crypt_get_data_offset
    - LUKS_keyslots_offset
    - move_keyslot_offset
    - json_luks1_object
    - move_keyslot_areas
    - crypt_get_uuid
    - LUKS2_hdr_and_areas_size
    - _
    - snprintf
    - luks_header_in_use
    - crypt_metadata_device
    - luksmeta_header_present
    - device_fallocate
    - size_round_up
    - crypt_random_get
    linkageType: ''
    returnType: int
    signature: int LUKS2_luks1_to_luks2(struct crypt_device *cd, struct luks_phdr
      *hdr1, struct luks2_hdr *hdr2)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:696,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:701,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:703,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:703,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:704,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:705,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:711,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:712,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:714,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:714,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:715,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:721,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:723,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:723,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:724,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:725,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:731,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:732,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:734,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:735,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:741,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:743,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:743,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:744,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:745,1
    - Dst: LUKS2_get_keyslot_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:749,1
    - Dst: LUKS2_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:750,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:751,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:752,1
    - Dst: LUKS2_keyslot_area
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:756,1
    - Dst: size_round_up
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:759,1
    - Dst: AF_split_sectors
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:759,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:760,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 51
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot
    - key_size
    - hash
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 688
    functionDepth: 7
    functionLinenumber: 688
    functionLinenumberEnd: 765
    functionName: keyslot_LUKS1_compatible
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_get_keyslot_cipher
    - AF_split_sectors
    - LUKS2_get_cipher
    - log_dbg
    - size_round_up
    - LUKS2_get_keyslot_jobj
    - json_object_get_int
    - LUKS2_keyslot_area
    - strcmp
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int keyslot_LUKS1_compatible(struct crypt_device *cd, struct luks2_hdr
      *hdr,\n\t\t\t\t    int keyslot, uint32_t key_size, const char *hash)"
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:782,1
    - Dst: LUKS2_get_segment_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:786,1
    - Dst: json_segment_get_sector_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:790,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:791,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:791,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:795,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:796,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:797,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:797,1
    - Dst: json_object_object_length
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:798,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:799,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:799,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:802,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:804,1
    - Dst: crypt_hash_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:805,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:808,1
    - Dst: LUKS2_get_cipher
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:808,1
    - Dst: crypt_cipher_wrapped_key
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:812,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:813,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:813,1
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:817,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:817,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:818,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:818,1
    - Dst: LUKS2_tokens_count
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:822,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:826,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:826,1
    - Dst: LUKS2_get_volume_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:830,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:832,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:832,1
    - Dst: LUKS2_keyslot_info
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:838,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:844,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:844,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:849,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:849,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:854,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:854,1
    - Dst: keyslot_LUKS1_compatible
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:858,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:859,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:859,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:864,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:870,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:873,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:875,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:877,1
    - Dst: LUKS2_find_area_gap
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:879,1
    - Dst: placeholder_keyslot_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:886,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:904,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:907,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:909,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:911,1
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:914,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:914,1
    - Dst: json_object_get_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:915,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:918,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:921,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:922,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:926,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:931,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:933,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:935,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:935,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:939,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:941,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:944,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:946,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:948,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:948,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:952,1
    - Dst: crypt_jobj_get_uint32
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:954,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:956,1
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:958,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:958,1
    - Dst: json_object_get_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:959,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:964,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:967,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:968,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:970,1
    - Dst: crypt_base64_decode
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:972,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:972,1
    - Dst: json_object_get_string_len
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:973,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:977,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:980,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:981,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:983,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:985,1
    - Dst: strncpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:990,1
    - Dst: memcpy
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:993,1
    - Dst: luks_header_in_use
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:997,1
    - Dst: LUKS2_keyslots_size
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:1003,1
    - Dst: move_keyslot_areas
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:1004,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:1006,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:1006,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:1010,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:1010,1
    - Dst: LUKS_write_phdr
      Src: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c:1014,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 177
    argCount: 3
    argNames:
    - cd
    - hdr2
    - hdr1
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks_phdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 768
    functionDepth: 8
    functionLinenumber: 768
    functionLinenumberEnd: 1015
    functionName: LUKS2_luks2_to_luks1
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
    functionUses: 1
    functionsReached:
    - memset
    - LUKS2_keyslots_size
    - crypt_hash_size
    - memcpy
    - crypt_base64_decode
    - crypt_jobj_get_uint32
    - keyslot_LUKS1_compatible
    - crypt_cipher_wrapped_key
    - LUKS2_get_keyslot_jobj
    - placeholder_keyslot_alloc
    - LUKS2_get_digest_jobj
    - json_segments_count
    - free
    - crypt_wipe_device
    - strncpy
    - crypt_parse_name_and_mode
    - strcmp
    - LUKS2_get_volume_key_size
    - LUKS2_keyslot_info
    - json_segment_get_sector_size
    - LUKS2_get_segments_jobj
    - json_object_get_string_len
    - LUKS2_tokens_count
    - log_err
    - crypt_jobj_get_uint64
    - move_keyslot_areas
    - json_object_object_length
    - _
    - json_object_object_get_ex
    - LUKS2_find_area_gap
    - LUKS_write_phdr
    - luks_header_in_use
    - crypt_metadata_device
    - LUKS2_get_cipher
    - LUKS2_get_segment_jobj
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int LUKS2_luks2_to_luks1(struct crypt_device *cd, struct luks2_hdr
      *hdr2, struct luks_phdr *hdr1)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:30,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 35
    functionName: LUKS2_keyslot_handler_type
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: keyslot_handler
    signature: keyslot_handler *LUKS2_keyslot_handler_type(const char *type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:46,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:49,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:52,1
    - Dst: LUKS2_keyslot_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:55,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:55,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 56
    functionName: LUKS2_keyslot_handler
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - crypt_get_hdr
    - json_object_object_get_ex
    - LUKS2_keyslot_handler_type
    - LUKS2_get_keyslot_jobj
    - json_object_get_string
    linkageType: ''
    returnType: keyslot_handler
    signature: keyslot_handler *LUKS2_keyslot_handler(struct crypt_device *cd, int
      keyslot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:63,1
    - Dst: LUKS2_find_area_gap
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 3
    argNames:
    - cd
    - hdr
    - keylength
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 74
    functionName: LUKS2_keyslot_find_empty
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 4
    functionsReached:
    - LUKS2_get_keyslot_jobj
    - LUKS2_find_area_gap
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_find_empty(struct crypt_device *cd, struct luks2_hdr
      *hdr, size_t keylength)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:89,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:92,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:95,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:98,1
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:103,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:103,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:105,1
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:112,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:117,1
    - Dst: json_segments_count
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:119,1
    - Dst: LUKS2_get_segments_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:119,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:120,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 3
    argNames:
    - hdr
    - keyslot
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    - int
    assertStmts:
    - condition: (keyslot >= 0 || segment >= 0)
      pos:
        line_end: 88
        line_start: 88
        source_file: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    constantsTouched: []
    func_position:
      end: 125
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 125
    functionName: _keyslot_for_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 3
    functionsReached:
    - LUKS2_digest_by_segment
    - json_object_object_get_ex
    - json_segments_count
    - LUKS2_get_segments_jobj
    - assert
    - json_object_get_int
    - LUKS2_digest_by_keyslot
    - atoi
    linkageType: ''
    returnType: int
    signature: int _keyslot_for_segment(struct luks2_hdr *hdr, int keyslot, int segment)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:95,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:98,1
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:103,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:103,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:105,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 107
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - LUKS2_digest_by_segment
    - json_object_object_get_ex
    - json_object_get_int
    - LUKS2_digest_by_keyslot
    - atoi
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_keyslots, slot, val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_default_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:135,1
    - Dst: _keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:140,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - hdr
    - keyslot
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 127
    functionDepth: 6
    functionLinenumber: 127
    functionLinenumberEnd: 145
    functionName: LUKS2_keyslot_for_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 3
    functionsReached:
    - LUKS2_get_default_segment
    - _keyslot_for_segment
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_for_segment(struct luks2_hdr *hdr, int keyslot, int
      segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:153,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:156,1
    - Dst: LUKS2_keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:157,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - hdr
    - segment
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 148
    functionDepth: 7
    functionLinenumber: 148
    functionLinenumberEnd: 162
    functionName: LUKS2_keyslot_active_count
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 1
    functionsReached:
    - atoi
    - UNUSED
    - json_object_object_get_ex
    - LUKS2_keyslot_for_segment
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_active_count(struct luks2_hdr *hdr, int segment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:156,1
    - Dst: LUKS2_keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:157,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 7
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - UNUSED
    - atoi
    - LUKS2_keyslot_for_segment
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_keyslots, slot, val)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:175,1
    - Dst: crypt_is_cipher_null
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:178,1
    - Dst: crypt_parse_name_and_mode
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:181,1
    - Dst: crypt_get_integrity_tag_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:185,1
    - Dst: crypt_cipher_wrapped_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:189,1
    - Dst: crypt_cipher_ivsize
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:193,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - cd
    - cipher_spec
    argTypes:
    - struct crypt_device*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 164
    functionDepth: 4
    functionLinenumber: 164
    functionLinenumberEnd: 197
    functionName: LUKS2_keyslot_cipher_incompatible
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 3
    functionsReached:
    - strncmp
    - crypt_cipher_ivsize
    - crypt_get_integrity_tag_size
    - crypt_cipher_wrapped_key
    - crypt_parse_name_and_mode
    - crypt_is_cipher_null
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_cipher_incompatible(struct crypt_device *cd, const
      char *cipher_spec)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_pbkdf_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:202,1
    - Dst: crypt_keyslot_get_encryption
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:214,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:219,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:228,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 3
    argNames:
    - cd
    - hdr
    - params
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - struct luks2_keyslot_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 199
    functionDepth: 4
    functionLinenumber: 199
    functionLinenumberEnd: 234
    functionName: LUKS2_keyslot_params_default
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 2
    functionsReached:
    - crypt_keyslot_get_encryption
    - crypt_get_pbkdf_type
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_params_default(struct crypt_device *cd, struct luks2_hdr
      *hdr,\n\t\t\t\t struct luks2_keyslot_params *params)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_keyslot_info
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:243,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:246,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:250,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:253,1
    - Dst: memset
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:256,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:258,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:259,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:260,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:261,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:262,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:263,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:264,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:265,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:266,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:267,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:268,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 3
    argNames:
    - hdr
    - keyslot
    - pbkdf
    argTypes:
    - struct luks2_hdr*
    - int
    - struct crypt_pbkdf_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 271
    functionName: LUKS2_keyslot_pbkdf
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 1
    functionsReached:
    - memset
    - json_object_object_get_ex
    - LUKS2_get_keyslot_jobj
    - json_object_get_int
    - json_object_get_string
    - LUKS2_keyslot_info
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_pbkdf(struct luks2_hdr *hdr, int keyslot, struct
      crypt_pbkdf_type *pbkdf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:276,1
    - Dst: LUKS2_get_digest_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:281,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:284,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:285,1
    - Dst: json_object_array_length
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:286,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - hdr
    - keyslot
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 290
    functionName: LUKS2_keyslot_unbound
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - json_object_array_length
    - LUKS2_digest_by_keyslot
    - json_object_is_type
    - LUKS2_get_digest_jobj
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_unbound(struct luks2_hdr *hdr, int keyslot)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:297,1
    - Dst: LUKS2_digest_by_keyslot
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:300,1
    - Dst: LUKS2_keyslot_unbound
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:301,1
    - Dst: LUKS2_keyslot_active_count
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:304,1
    - Dst: LUKS2_keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:305,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 2
    argNames:
    - hdr
    - keyslot
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 292
    functionDepth: 8
    functionLinenumber: 292
    functionLinenumberEnd: 309
    functionName: LUKS2_keyslot_info
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 4
    functionsReached:
    - LUKS2_get_keyslot_jobj
    - LUKS2_keyslot_active_count
    - LUKS2_digest_by_keyslot
    - LUKS2_keyslot_unbound
    - LUKS2_keyslot_for_segment
    linkageType: ''
    returnType: crypt_keyslot_info
    signature: crypt_keyslot_info LUKS2_keyslot_info(struct luks2_hdr *hdr, int keyslot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:315,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:318,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:320,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:322,1
    - Dst: crypt_jobj_get_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - jobj_keyslot
    - offset
    - length
    argTypes:
    - json_object*
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 327
    functionName: LUKS2_keyslot_jobj_area
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 2
    functionsReached:
    - crypt_jobj_get_uint64
    - json_object_object_get_ex
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_jobj_area(json_object *jobj_keyslot, uint64_t *offset,
      uint64_t *length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_keyslot_info
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:336,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:339,1
    - Dst: LUKS2_keyslot_jobj_area
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:343,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - hdr
    - keyslot
    - offset
    - length
    argTypes:
    - struct luks2_hdr*
    - int
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 329
    functionDepth: 9
    functionLinenumber: 329
    functionLinenumberEnd: 344
    functionName: LUKS2_keyslot_area
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 7
    functionsReached:
    - LUKS2_keyslot_jobj_area
    - LUKS2_get_keyslot_jobj
    - LUKS2_keyslot_info
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_area(struct luks2_hdr *hdr,\n\tint keyslot,\n\tuint64_t
      *offset,\n\tuint64_t *length)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_stored_key_size
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:354,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:361,1
    - Dst: keyslot_handler*::open
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:365,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:367,1
    - Dst: crypt_alloc_volume_key_by_safe_alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:371,1
    - Dst: LUKS2_digest_verify
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:377,1
    - Dst: crypt_volume_key_set_id
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:381,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:385,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:386,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 7
    argNames:
    - cd
    - hdr
    - h
    - keyslot
    - password
    - password_len
    - r_vk
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - keyslot_handler*
    - int
    - char*
    - size_t
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 346
    functionDepth: 5
    functionLinenumber: 346
    functionLinenumberEnd: 389
    functionName: _open_and_verify
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - crypt_alloc_volume_key_by_safe_alloc
    - LUKS2_get_keyslot_stored_key_size
    - crypt_safe_alloc
    - crypt_volume_key_set_id
    - crypt_free_volume_key
    - crypt_safe_free
    - log_dbg
    - LUKS2_digest_verify
    - keyslot_handler*::open
    linkageType: ''
    returnType: int
    signature: "int _open_and_verify(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tconst keyslot_handler *h,\n\tint keyslot,\n\tconst char *password,\n\tsize_t
      password_len,\n\tstruct volume_key **r_vk)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_keyslot_handler
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:402,1
    - Dst: keyslot_handler*::validate
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:405,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:405,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:407,1
    - Dst: LUKS2_keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:411,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:414,1
    - Dst: _open_and_verify
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:418,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 7
    argNames:
    - cd
    - hdr
    - keyslot
    - segment
    - password
    - password_len
    - vk
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    - char*
    - size_t
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 391
    functionDepth: 7
    functionLinenumber: 391
    functionLinenumberEnd: 419
    functionName: LUKS2_open_and_verify
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - _open_and_verify
    - keyslot_handler*::validate
    - log_dbg
    - LUKS2_get_keyslot_jobj
    - LUKS2_keyslot_handler
    - LUKS2_keyslot_for_segment
    linkageType: ''
    returnType: int
    signature: "int LUKS2_open_and_verify(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tint keyslot,\n\tint segment,\n\tconst char *password,\n\tsize_t password_len,\n\tstruct
      volume_key **vk)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:433,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:438,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:441,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:443,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:445,1
    - Dst: LUKS2_open_and_verify
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:450,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 7
    argNames:
    - cd
    - hdr
    - priority
    - password
    - password_len
    - segment
    - vk
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - crypt_keyslot_priority
    - char*
    - size_t
    - int
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 421
    functionDepth: 8
    functionLinenumber: 421
    functionLinenumberEnd: 462
    functionName: LUKS2_keyslot_open_priority
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - log_dbg
    - json_object_get_int
    - LUKS2_open_and_verify
    - atoi
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_open_priority(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tcrypt_keyslot_priority priority,\n\tconst char *password,\n\tsize_t
      password_len,\n\tint segment,\n\tstruct volume_key **vk)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:438,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:441,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:443,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:445,1
    - Dst: LUKS2_open_and_verify
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:450,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 435
    functionDepth: 8
    functionLinenumber: 435
    functionLinenumberEnd: 459
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - log_dbg
    - json_object_get_int
    - LUKS2_open_and_verify
    - atoi
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_keyslots, slot, val)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:475,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:476,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:477,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:478,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:480,1
    - Dst: LUKS2_reencrypt_segment_old
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:482,1
    - Dst: LUKS2_reencrypt_segment_new
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:483,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:488,1
    - Dst: LUKS2_digest_by_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:489,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:495,1
    - Dst: LUKS2_keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:500,1
    - Dst: struct crypt_keyslot_context*::get_luks2_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:505,1
    - Dst: crypt_volume_key_add_next
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:508,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:509,1
    - Dst: LUKS2_digest_verify_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:509,1
    - Dst: crypt_volume_key_set_id
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:510,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:511,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:518,1
    - Dst: LUKS2_keyslot_for_segment
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:523,1
    - Dst: struct crypt_keyslot_context*::get_luks2_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:528,1
    - Dst: crypt_volume_key_add_next
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:531,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:532,1
    - Dst: LUKS2_digest_verify_by_digest
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:532,1
    - Dst: crypt_volume_key_set_id
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:533,1
    - Dst: crypt_volume_key_get_id
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:534,1
    - Dst: crypt_free_volume_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:539,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:543,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:543,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:545,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:545,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 64
    argCount: 6
    argNames:
    - cd
    - keyslot_old
    - keyslot_new
    - kc_old
    - kc_new
    - r_vks
    argTypes:
    - struct crypt_device*
    - int
    - int
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - struct volume_key**
    assertStmts:
    - condition: (!kc_new || kc_new->get_luks2_key)
      pos:
        line_end: 476
        line_start: 476
        source_file: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    - condition: (!kc_old || kc_old->get_luks2_key)
      pos:
        line_end: 475
        line_start: 475
        source_file: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    - condition: (r_vks)
      pos:
        line_end: 477
        line_start: 477
        source_file: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    - condition: (cd)
      pos:
        line_end: 474
        line_start: 474
        source_file: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    constantsTouched: []
    func_position:
      end: 548
      start: 464
    functionDepth: 7
    functionLinenumber: 464
    functionLinenumberEnd: 548
    functionName: keyslot_context_open_all_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 6
    functionsReached:
    - LUKS2_reencrypt_segment_new
    - LUKS2_digest_by_segment
    - crypt_get_hdr
    - struct crypt_keyslot_context*::get_luks2_key
    - crypt_volume_key_set_id
    - _
    - crypt_free_volume_key
    - LUKS2_reencrypt_segment_old
    - assert
    - log_dbg
    - crypt_volume_key_add_next
    - crypt_volume_key_get_id
    - log_err
    - LUKS2_digest_verify_by_digest
    - LUKS2_keyslot_for_segment
    linkageType: ''
    returnType: int
    signature: "int keyslot_context_open_all_segments(struct crypt_device *cd,\n\tint
      keyslot_old,\n\tint keyslot_new,\n\tstruct crypt_keyslot_context *kc_old,\n\tstruct
      crypt_keyslot_context *kc_new,\n\tstruct volume_key **r_vks)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: keyslot_context_open_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:559,1
    - Dst: keyslot_context_open_all_segments
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:561,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 6
    argNames:
    - cd
    - keyslot1
    - keyslot2
    - kc1
    - kc2
    - r_vks
    argTypes:
    - struct crypt_device*
    - int
    - int
    - struct crypt_keyslot_context*
    - struct crypt_keyslot_context*
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 550
    functionDepth: 8
    functionLinenumber: 550
    functionLinenumberEnd: 567
    functionName: LUKS2_keyslot_context_open_all_segments
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 6
    functionsReached:
    - keyslot_context_open_all_segments
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_context_open_all_segments(struct crypt_device *cd,\n\tint
      keyslot1,\n\tint keyslot2,\n\tstruct crypt_keyslot_context *kc1,\n\tstruct crypt_keyslot_context
      *kc2,\n\tstruct volume_key **r_vks)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:579,1
    - Dst: LUKS2_keyslot_open_priority
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:584,1
    - Dst: LUKS2_keyslot_open_priority
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:591,1
    - Dst: LUKS2_open_and_verify
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:597,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:601,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:601,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:603,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:603,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 6
    argNames:
    - cd
    - keyslot
    - segment
    - password
    - password_len
    - vk
    argTypes:
    - struct crypt_device*
    - int
    - int
    - char*
    - size_t
    - struct volume_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 569
    functionDepth: 9
    functionLinenumber: 569
    functionLinenumberEnd: 607
    functionName: LUKS2_keyslot_open
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 6
    functionsReached:
    - _
    - crypt_get_hdr
    - log_err
    - LUKS2_open_and_verify
    - LUKS2_keyslot_open_priority
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_open(struct crypt_device *cd,\n\tint keyslot,\n\tint
      segment,\n\tconst char *password,\n\tsize_t password_len,\n\tstruct volume_key
      **vk)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_keyslot_handler
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:618,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:618,1
    - Dst: keyslot_handler*::validate
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:621,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:621,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:623,1
    - Dst: keyslot_handler*::store
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:627,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot
    - buffer
    - buffer_length
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 609
    functionDepth: 3
    functionLinenumber: 609
    functionLinenumberEnd: 629
    functionName: LUKS2_keyslot_reencrypt_store
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 1
    functionsReached:
    - keyslot_handler*::validate
    - keyslot_handler*::store
    - log_dbg
    - LUKS2_get_keyslot_jobj
    - LUKS2_keyslot_handler
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_reencrypt_store(struct crypt_device *cd,\n\tstruct
      luks2_hdr *hdr,\n\tint keyslot,\n\tconst void *buffer,\n\tsize_t buffer_length)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:645,1
    - Dst: LUKS2_keyslot_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:647,1
    - Dst: keyslot_handler*::alloc
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:651,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:651,1
    - Dst: LUKS2_keyslot_handler
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:655,1
    - Dst: keyslot_handler*::update
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:658,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:660,1
    - Dst: keyslot_handler*::validate
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:665,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:665,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:667,1
    - Dst: LUKS2_hdr_validate
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:671,1
    - Dst: keyslot_handler*::store
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:674,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:675,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:675,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 7
    argNames:
    - cd
    - hdr
    - keyslot
    - password
    - password_len
    - vk
    - params
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - char*
    - size_t
    - struct volume_key*
    - struct luks2_keyslot_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 631
    functionDepth: 4
    functionLinenumber: 631
    functionLinenumberEnd: 676
    functionName: LUKS2_keyslot_store
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 2
    functionsReached:
    - crypt_volume_key_length
    - keyslot_handler*::validate
    - keyslot_handler*::store
    - keyslot_handler*::update
    - LUKS2_hdr_validate
    - crypt_volume_key_get_key
    - log_dbg
    - LUKS2_keyslot_handler_type
    - LUKS2_get_keyslot_jobj
    - keyslot_handler*::alloc
    - LUKS2_keyslot_handler
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_store(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tint keyslot,\n\tconst char *password,\n\tsize_t password_len,\n\tconst
      struct volume_key *vk,\n\tconst struct luks2_keyslot_params *params)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:682,1
    - Dst: LUKS2_keyslot_handler
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:688,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:690,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:693,1
    - Dst: LUKS2_device_write_lock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:697,1
    - Dst: crypt_keyslot_area
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:702,1
    - Dst: crypt_wipe_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:707,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:711,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:711,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:712,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:715,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:715,1
    - Dst: device_path
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:715,1
    - Dst: keyslot_handler*::wipe
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:722,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:726,1
    - Dst: json_object_object_del_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:728,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:730,1
    - Dst: device_write_unlock
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:732,1
    - Dst: crypt_metadata_device
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:732,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 3
    argNames:
    - cd
    - hdr
    - keyslot
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 678
    functionDepth: 8
    functionLinenumber: 678
    functionLinenumberEnd: 734
    functionName: LUKS2_keyslot_wipe
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 1
    functionsReached:
    - LUKS2_hdr_write
    - _
    - json_object_object_get_ex
    - LUKS2_device_write_lock
    - crypt_metadata_device
    - crypt_keyslot_area
    - json_object_object_del_by_uint
    - log_err
    - device_path
    - keyslot_handler*::wipe
    - LUKS2_get_keyslot_jobj
    - log_dbg
    - device_write_unlock
    - LUKS2_keyslot_handler
    - crypt_wipe_device
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_wipe(struct crypt_device *cd,\n\tstruct luks2_hdr
      *hdr,\n\tint keyslot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_keyslot_handler
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:740,1
    - Dst: keyslot_handler*::dump
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:743,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cd
    - keyslot
    argTypes:
    - struct crypt_device*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 736
    functionDepth: 3
    functionLinenumber: 736
    functionLinenumberEnd: 744
    functionName: LUKS2_keyslot_dump
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 1
    functionsReached:
    - keyslot_handler*::dump
    - LUKS2_keyslot_handler
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslot_dump(struct crypt_device *cd, int keyslot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:750,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:754,1
    - Dst: json_object_get_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:757,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - hdr
    - keyslot
    argTypes:
    - struct luks2_hdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 758
    functionName: LUKS2_keyslot_priority_get
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 3
    functionsReached:
    - LUKS2_get_keyslot_jobj
    - json_object_object_get_ex
    - json_object_get_int
    linkageType: ''
    returnType: crypt_keyslot_priority
    signature: crypt_keyslot_priority LUKS2_keyslot_priority_get(struct luks2_hdr
      *hdr, int keyslot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:765,1
    - Dst: json_object_object_del
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:770,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:772,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:772,1
    - Dst: LUKS2_hdr_write
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:774,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - cd
    - hdr
    - keyslot
    - priority
    - commit
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - crypt_keyslot_priority
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 760
    functionDepth: 8
    functionLinenumber: 760
    functionLinenumberEnd: 775
    functionName: LUKS2_keyslot_priority_set
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 2
    functionsReached:
    - LUKS2_hdr_write
    - json_object_object_add
    - json_object_object_del
    - json_object_new_int
    - LUKS2_get_keyslot_jobj
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_priority_set(struct crypt_device *cd, struct luks2_hdr
      *hdr,\n\t\t\t       int keyslot, crypt_keyslot_priority priority, int commit)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:785,1
    - Dst: crypt_get_hdr
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:787,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:793,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:796,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:799,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:803,1
    - Dst: json_object_new_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:803,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:809,1
    - Dst: json_object_new_int
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:809,1
    - Dst: json_object_new_object
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:812,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:814,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:818,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:818,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:819,1
    - Dst: crypt_jobj_new_uint64
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:819,1
    - Dst: json_object_object_add
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:820,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:822,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:823,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - cd
    - keyslot
    - area_offset
    - area_length
    argTypes:
    - struct crypt_device*
    - int
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 777
    functionDepth: 2
    functionLinenumber: 777
    functionLinenumberEnd: 828
    functionName: placeholder_keyslot_alloc
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 1
    functionsReached:
    - crypt_get_hdr
    - json_object_object_get_ex
    - crypt_jobj_new_uint64
    - json_object_object_add
    - json_object_new_string
    - json_object_new_object
    - json_object_new_int
    - log_dbg
    - LUKS2_get_keyslot_jobj
    - json_object_object_add_by_uint
    - json_object_put
    linkageType: ''
    returnType: int
    signature: "int placeholder_keyslot_alloc(struct crypt_device *cd,\n\tint keyslot,\n\tuint64_t
      area_offset,\n\tuint64_t area_length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:836,1
    - Dst: snprintf
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:839,1
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:843,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:844,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:845,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - hdr_jobj
    - keyslot
    argTypes:
    - json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 850
    functionName: LUKS2_get_keyslot_digests_count
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - snprintf
    - UNUSED
    - json_object_object_get_ex
    - LUKS2_array_jobj
    linkageType: ''
    returnType: unsigned
    signature: unsigned LUKS2_get_keyslot_digests_count(json_object *hdr_jobj, int
      keyslot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:843,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:844,1
    - Dst: LUKS2_array_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:845,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 847
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - UNUSED
    - json_object_object_get_ex
    - LUKS2_array_jobj
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_digests, key, val)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:863,1
    - Dst: LUKS2_config_get_requirements
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:866,1
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:869,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:870,1
    - Dst: LUKS2_keyslot_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:871,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:871,1
    - Dst: keyslot_handler*::validate
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:874,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:875,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:879,1
    - Dst: LUKS2_get_keyslot_digests_count
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:879,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:880,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:884,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:889,1
    - Dst: LUKS2_reencrypt_requirement_candidate
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:893,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:894,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:899,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 2
    argNames:
    - cd
    - hdr_jobj
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 853
    functionDepth: 2
    functionLinenumber: 853
    functionLinenumberEnd: 904
    functionName: LUKS2_keyslots_validate
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 1
    functionsReached:
    - LUKS2_config_get_requirements
    - LUKS2_get_keyslot_digests_count
    - json_object_object_get_ex
    - keyslot_handler*::validate
    - LUKS2_reencrypt_requirement_candidate
    - log_dbg
    - LUKS2_keyslot_handler_type
    - strcmp
    - json_object_get_string
    - atoi
    linkageType: ''
    returnType: int
    signature: int LUKS2_keyslots_validate(struct crypt_device *cd, json_object *hdr_jobj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:869,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:870,1
    - Dst: LUKS2_keyslot_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:871,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:871,1
    - Dst: validate
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:874,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:875,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:879,1
    - Dst: LUKS2_get_keyslot_digests_count
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:879,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:880,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:884,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 868
    functionDepth: 2
    functionLinenumber: 868
    functionLinenumberEnd: 886
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - LUKS2_get_keyslot_digests_count
    - json_object_object_get_ex
    - log_dbg
    - LUKS2_keyslot_handler_type
    - validate
    - strcmp
    - json_object_get_string
    - atoi
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_keyslots, slot, val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:912,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:913,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:914,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:915,1
    - Dst: LUKS2_keyslot_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:918,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:918,1
    - Dst: keyslot_handler*::repair
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:920,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - cd
    - jobj_keyslots
    argTypes:
    - struct crypt_device*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 922
    functionName: LUKS2_keyslots_repair
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 1
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_keyslot_handler_type
    - json_object_is_type
    - json_object_get_string
    - UNUSED
    - keyslot_handler*::repair
    linkageType: ''
    returnType: void
    signature: void LUKS2_keyslots_repair(struct crypt_device *cd __attribute__((unused)),
      json_object *jobj_keyslots)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNUSED
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:912,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:913,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:914,1
    - Dst: json_object_is_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:915,1
    - Dst: LUKS2_keyslot_handler_type
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:918,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:918,1
    - Dst: repair
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:920,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 911
    functionDepth: 1
    functionLinenumber: 911
    functionLinenumberEnd: 921
    functionName: json_object_object_foreach
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 0
    functionsReached:
    - json_object_object_get_ex
    - LUKS2_keyslot_handler_type
    - repair
    - json_object_is_type
    - json_object_get_string
    - UNUSED
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(jobj_keyslots, slot, val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:934,1
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:938,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:939,1
    - Dst: json_object_get_string
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:939,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - hdr
    - type
    argTypes:
    - struct luks2_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 944
    functionName: LUKS2_find_keyslot
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 12
    functionsReached:
    - strcmp
    - LUKS2_get_keyslot_jobj
    - json_object_object_get_ex
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int LUKS2_find_keyslot(struct luks2_hdr *hdr, const char *type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:953,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:956,1
    - Dst: LUKS2_get_keyslot_jobj
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:960,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:965,1
    - Dst: json_object_get
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:966,1
    - Dst: json_object_object_del_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:968,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:969,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:971,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:972,1
    - Dst: json_object_object_del_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:976,1
    - Dst: json_object_object_add_by_uint
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:977,1
    - Dst: json_object_put
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:979,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/luks2_keyslot.c:980,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - cd
    - hdr
    - keyslot
    - keyslot2
    argTypes:
    - struct crypt_device*
    - struct luks2_hdr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 984
    functionName: LUKS2_keyslot_swap
    functionSourceFile: /src/cryptsetup/lib/luks2/luks2_keyslot.c
    functionUses: 1
    functionsReached:
    - json_object_object_get_ex
    - json_object_object_del_by_uint
    - log_dbg
    - json_object_get
    - LUKS2_get_keyslot_jobj
    - json_object_object_add_by_uint
    - json_object_put
    linkageType: ''
    returnType: int
    signature: "int LUKS2_keyslot_swap(struct crypt_device *cd, struct luks2_hdr *hdr,\n\tint
      keyslot, int keyslot2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strerror
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 102
    functionName: opal_status_to_string
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - strerror
    linkageType: ''
    returnType: char
    signature: char *opal_status_to_string(int t)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 1
    argNames:
    - rq
    argTypes:
    - unsigned long
    assertStmts:
    - condition: (false && "unknown OPAL ioctl")
      pos:
        line_end: 122
        line_start: 122
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 125
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 125
    functionName: opal_ioctl_to_string
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *opal_ioctl_to_string(unsigned long rq)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: opal_ioctl_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:133,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:136,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:136,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:143,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:148,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:154,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:162,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:167,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:173,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:182,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:188,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:194,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:202,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:208,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:216,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:224,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:232,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 80
    argCount: 5
    argNames:
    - cd
    - rq
    - args
    - post
    - ret
    argTypes:
    - struct crypt_device*
    - unsigned long
    - void*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 237
    functionName: opal_ioctl_debug
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - log_dbg
    - opal_ioctl_to_string
    - opal_status_to_string
    linkageType: ''
    returnType: void
    signature: "void opal_ioctl_debug(struct crypt_device *cd,\n\t\t\t\t    unsigned
      long rq,\n\t\t\t\t    void *args,\n\t\t\t\t    bool post,\n\t\t\t\t    int ret)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: opal_ioctl_debug
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:243,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:244,1
    - Dst: opal_ioctl_debug
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - cd
    - fd
    - rq
    - args
    argTypes:
    - struct crypt_device*
    - int
    - unsigned long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 250
    functionName: opal_ioctl
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - opal_ioctl_debug
    - ioctl
    linkageType: ''
    returnType: int
    signature: int opal_ioctl(struct crypt_device *cd, int fd, unsigned long rq, void
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:262,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:264,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 6
    argNames:
    - cd
    - fd
    - ret_align
    - ret_block_size
    - ret_alignment_granularity_blocks
    - ret_lowest_lba_blocks
    argTypes:
    - struct crypt_device*
    - int
    - bool*
    - uint32_t*
    - uint64_t*
    - uint64_t*
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 261
        line_start: 261
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 278
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 278
    functionName: opal_geometry_fd
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - opal_ioctl
    - assert
    linkageType: ''
    returnType: int
    signature: "int opal_geometry_fd(struct crypt_device *cd,\n\t\t\t    int fd,\n\t\t\t
      \   bool *ret_align,\n\t\t\t    uint32_t *ret_block_size,\n\t\t\t    uint64_t
      *ret_alignment_granularity_blocks,\n\t\t\t    uint64_t *ret_lowest_lba_blocks)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:298,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:299,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:300,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:301,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:302,1
    - Dst: opal_geometry_fd
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:304,1
    - Dst: ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:309,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:311,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:311,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:313,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:321,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:326,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:326,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:327,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:329,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:331,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:332,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:341,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:341,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:348,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:348,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:354,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:354,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:362,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:364,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:364,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:369,1
    - Dst: log_err
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:371,1
    - Dst: _
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:371,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:380,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 10
    argNames:
    - cd
    - fd
    - segment_number
    - vk
    - check_offset_sectors
    - check_length_sectors
    - check_read_locked
    - check_write_locked
    - ret_read_locked
    - ret_write_locked
    argTypes:
    - struct crypt_device*
    - int
    - uint32_t
    - struct volume_key*
    - uint64_t*
    - uint64_t*
    - bool*
    - bool*
    - bool*
    - bool*
    assertStmts:
    - condition: (vk)
      pos:
        line_end: 299
        line_start: 299
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (cd)
      pos:
        line_end: 298
        line_start: 298
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (check_length_sectors)
      pos:
        line_end: 301
        line_start: 301
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (fd >= 0)
      pos:
        line_end: 297
        line_start: 297
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (check_offset_sectors)
      pos:
        line_end: 300
        line_start: 300
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 383
      start: 280
    functionDepth: 4
    functionLinenumber: 280
    functionLinenumberEnd: 383
    functionName: opal_range_check_attributes_fd
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - opal_geometry_fd
    - _
    - ioctl
    - crypt_safe_alloc
    - crypt_volume_key_length
    - crypt_safe_memcpy
    - crypt_volume_key_get_key
    - opal_ioctl
    - assert
    - log_err
    - log_dbg
    - crypt_safe_free
    - crypt_get_device_name
    linkageType: ''
    returnType: int
    signature: "int opal_range_check_attributes_fd(struct crypt_device *cd,\n\tint
      fd,\n\tuint32_t segment_number,\n\tconst struct volume_key *vk,\n\tconst uint64_t
      *check_offset_sectors,\n\tconst uint64_t *check_length_sectors,\n\tbool *check_read_locked,\n\tbool
      *check_write_locked,\n\tbool *ret_read_locked,\n\tbool *ret_write_locked)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:390,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:391,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:393,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - cd
    - dev
    - expected
    argTypes:
    - struct crypt_device*
    - struct device*
    - unsigned
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 389
        line_start: 389
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (dev)
      pos:
        line_end: 390
        line_start: 390
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 400
      start: 385
    functionDepth: 4
    functionLinenumber: 385
    functionLinenumberEnd: 400
    functionName: opal_query_status
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - device_open
    - opal_ioctl
    - assert
    linkageType: ''
    returnType: int
    signature: int opal_query_status(struct crypt_device *cd, struct device *dev,
      unsigned expected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: opal_query_status
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cd
    - dev
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 5
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: opal_enabled
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - opal_query_status
    linkageType: ''
    returnType: int
    signature: int opal_enabled(struct crypt_device *cd, struct device *dev)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:411,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:423,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:425,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:428,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:433,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:434,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:438,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:439,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:439,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:444,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:448,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:449,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:449,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:453,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 4
    argNames:
    - cd
    - fd
    - admin_key
    - admin_key_len
    argTypes:
    - struct crypt_device*
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 407
    functionDepth: 3
    functionLinenumber: 407
    functionLinenumberEnd: 456
    functionName: opal_activate_lsp
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_safe_memcpy
    - opal_ioctl
    - crypt_safe_free
    - log_dbg
    - crypt_get_device_name
    - opal_status_to_string
    linkageType: ''
    returnType: int
    signature: "int opal_activate_lsp(struct crypt_device *cd, int fd,\n\t\t\t     const
      void *admin_key, size_t admin_key_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:463,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:477,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:479,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:483,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:484,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:484,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:488,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - cd
    - fd
    - segment_number
    - admin_key
    - admin_key_len
    argTypes:
    - struct crypt_device*
    - int
    - uint32_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 458
    functionDepth: 3
    functionLinenumber: 458
    functionLinenumberEnd: 491
    functionName: opal_reuse_active_lsp
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_safe_memcpy
    - opal_ioctl
    - crypt_safe_free
    - log_dbg
    - crypt_get_device_name
    - opal_status_to_string
    linkageType: ''
    returnType: int
    signature: "int opal_reuse_active_lsp(struct crypt_device *cd, int fd,\n\t\t\t
      \  uint32_t segment_number,\n\t\t\t   const void *admin_key, size_t admin_key_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:498,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:520,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:522,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:526,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:527,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:528,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:532,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 7
    argNames:
    - cd
    - fd
    - segment_number
    - range_start_blocks
    - range_length_blocks
    - admin_key
    - admin_key_len
    argTypes:
    - struct crypt_device*
    - int
    - uint32_t
    - uint64_t
    - uint64_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 493
    functionDepth: 3
    functionLinenumber: 493
    functionLinenumberEnd: 535
    functionName: opal_setup_range
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_safe_memcpy
    - opal_ioctl
    - crypt_safe_free
    - log_dbg
    - crypt_get_device_name
    - opal_status_to_string
    linkageType: ''
    returnType: int
    signature: "int opal_setup_range(struct crypt_device *cd, int fd, uint32_t segment_number,\n\t\t\t
      \   uint64_t range_start_blocks, uint64_t range_length_blocks,\n\t\t\t    const
      void *admin_key, size_t admin_key_len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:541,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:557,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:559,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:563,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:564,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:564,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:569,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:573,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:574,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:574,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:581,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:585,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:586,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:586,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:590,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 5
    argNames:
    - cd
    - fd
    - segment_number
    - admin_key
    - admin_key_len
    argTypes:
    - struct crypt_device*
    - int
    - uint32_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 537
    functionDepth: 3
    functionLinenumber: 537
    functionLinenumberEnd: 593
    functionName: opal_setup_user
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - crypt_safe_alloc
    - crypt_safe_memcpy
    - opal_ioctl
    - crypt_safe_free
    - log_dbg
    - crypt_get_device_name
    - opal_status_to_string
    linkageType: ''
    returnType: int
    signature: "int opal_setup_user(struct crypt_device *cd, int fd, uint32_t segment_number,\n\t\t\t
      \  const void *admin_key, size_t admin_key_len)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:610,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:611,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:612,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:613,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:614,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:614,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:615,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:624,1
    - Dst: opal_enabled
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:628,1
    - Dst: opal_activate_lsp
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:634,1
    - Dst: opal_reuse_active_lsp
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:636,1
    - Dst: opal_setup_user
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:640,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:644,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:660,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:665,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:665,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:666,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:667,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:669,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:673,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:674,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:674,1
    - Dst: opal_setup_range
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:679,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:686,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:696,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:701,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:701,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:702,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:704,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:708,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:709,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:709,1
    - Dst: opal_range_check_attributes_fd
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:715,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:720,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:721,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 74
    argCount: 9
    argNames:
    - cd
    - dev
    - vk
    - range_start_blocks
    - range_length_blocks
    - opal_block_bytes
    - segment_number
    - admin_key
    - admin_key_len
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct volume_key*
    - uint64_t
    - uint64_t
    - uint32_t
    - uint32_t
    - void*
    - size_t
    assertStmts:
    - condition: (admin_key)
      pos:
        line_end: 612
        line_start: 612
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (opal_block_bytes >= SECTOR_SIZE)
      pos:
        line_end: 614
        line_start: 614
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (vk)
      pos:
        line_end: 611
        line_start: 611
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (dev)
      pos:
        line_end: 610
        line_start: 610
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (crypt_volume_key_length(vk) <= OPAL_KEY_MAX)
      pos:
        line_end: 613
        line_start: 613
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (cd)
      pos:
        line_end: 609
        line_start: 609
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 724
      start: 596
    functionDepth: 6
    functionLinenumber: 596
    functionLinenumberEnd: 724
    functionName: opal_setup_ranges
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 1
    functionsReached:
    - opal_activate_lsp
    - crypt_volume_key_length
    - device_open
    - crypt_safe_alloc
    - crypt_safe_memcpy
    - opal_setup_range
    - opal_enabled
    - crypt_volume_key_get_key
    - opal_ioctl
    - assert
    - log_dbg
    - opal_setup_user
    - opal_range_check_attributes_fd
    - crypt_safe_free
    - crypt_get_device_name
    - opal_status_to_string
    - opal_reuse_active_lsp
    linkageType: ''
    returnType: int
    signature: "int opal_setup_ranges(struct crypt_device *cd,\n\t\t      struct device
      *dev,\n\t\t      const struct volume_key *vk,\n\t\t      uint64_t range_start_blocks,\n\t\t
      \     uint64_t range_length_blocks,\n\t\t      uint32_t opal_block_bytes,\n\t\t
      \     uint32_t segment_number,\n\t\t      const void *admin_key,\n\t\t      size_t
      admin_key_len)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: opal_supported
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:743,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:748,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:753,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:753,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:755,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:756,1
    - Dst: crypt_volume_key_get_key
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:756,1
    - Dst: crypt_volume_key_length
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:757,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:760,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:763,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:768,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:769,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:773,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:774,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:774,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:791,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:796,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:797,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:797,1
    - Dst: log_std
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:799,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:800,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:800,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:805,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 49
    argCount: 5
    argNames:
    - cd
    - dev
    - segment_number
    - vk
    - lock
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint32_t
    - struct volume_key*
    - bool
    assertStmts:
    - condition: (crypt_volume_key_length(vk) <= OPAL_KEY_MAX)
      pos:
        line_end: 752
        line_start: 752
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 808
      start: 726
    functionDepth: 4
    functionLinenumber: 726
    functionLinenumberEnd: 808
    functionName: opal_lock_unlock
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - crypt_volume_key_length
    - device_open
    - log_std
    - crypt_safe_memcpy
    - crypt_volume_key_get_key
    - opal_ioctl
    - assert
    - log_dbg
    - crypt_get_device_name
    - opal_status_to_string
    - crypt_safe_memzero
    - opal_supported
    linkageType: ''
    returnType: int
    signature: "int opal_lock_unlock(struct crypt_device *cd,\n\t\t\t    struct device
      *dev,\n\t\t\t    uint32_t segment_number,\n\t\t\t    const struct volume_key
      *vk,\n\t\t\t    bool lock)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: opal_lock_unlock
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - dev
    - segment_number
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 811
    functionDepth: 5
    functionLinenumber: 811
    functionLinenumberEnd: 814
    functionName: opal_lock
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 5
    functionsReached:
    - opal_lock_unlock
    linkageType: ''
    returnType: int
    signature: int opal_lock(struct crypt_device *cd, struct device *dev, uint32_t
      segment_number)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: opal_lock_unlock
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - dev
    - segment_number
    - vk
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint32_t
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 817
    functionDepth: 5
    functionLinenumber: 817
    functionLinenumberEnd: 823
    functionName: opal_unlock
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 3
    functionsReached:
    - opal_lock_unlock
    linkageType: ''
    returnType: int
    signature: "int opal_unlock(struct crypt_device *cd,\n\t\tstruct device *dev,\n\t\tuint32_t
      segment_number,\n\t\tconst struct volume_key *vk)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:840,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:841,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:842,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:851,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:855,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:857,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:860,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:865,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:866,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:871,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:872,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:872,1
    - Dst: crypt_safe_memzero
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:876,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 4
    argNames:
    - cd
    - dev
    - password
    - password_len
    argTypes:
    - struct crypt_device*
    - struct device*
    - char*
    - size_t
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 839
        line_start: 839
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (password)
      pos:
        line_end: 841
        line_start: 841
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (dev)
      pos:
        line_end: 840
        line_start: 840
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 879
      start: 830
    functionDepth: 4
    functionLinenumber: 830
    functionLinenumberEnd: 879
    functionName: opal_factory_reset
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 1
    functionsReached:
    - device_open
    - crypt_safe_memcpy
    - opal_ioctl
    - assert
    - log_dbg
    - crypt_get_device_name
    - opal_status_to_string
    - crypt_safe_memzero
    linkageType: ''
    returnType: int
    signature: "int opal_factory_reset(struct crypt_device *cd,\n\t\t       struct
      device *dev,\n\t\t       const char *password,\n\t\t       size_t password_len)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:892,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:893,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:894,1
    - Dst: opal_enabled
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:899,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:902,1
    - Dst: crypt_safe_memcpy
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:912,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:914,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:920,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:924,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:925,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:925,1
    - Dst: crypt_safe_alloc
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:931,1
    - Dst: opal_ioctl
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:945,1
    - Dst: log_dbg
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:949,1
    - Dst: crypt_get_device_name
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:950,1
    - Dst: opal_status_to_string
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:950,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:955,1
    - Dst: crypt_safe_free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:956,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 5
    argNames:
    - cd
    - dev
    - segment_number
    - password
    - password_len
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint32_t
    - char*
    - size_t
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 891
        line_start: 891
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (dev)
      pos:
        line_end: 892
        line_start: 892
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (password)
      pos:
        line_end: 893
        line_start: 893
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 959
      start: 882
    functionDepth: 6
    functionLinenumber: 882
    functionLinenumberEnd: 959
    functionName: opal_reset_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 2
    functionsReached:
    - crypt_safe_alloc
    - device_open
    - crypt_safe_memcpy
    - opal_enabled
    - opal_ioctl
    - assert
    - log_dbg
    - crypt_safe_free
    - crypt_get_device_name
    - opal_status_to_string
    linkageType: ''
    returnType: int
    signature: "int opal_reset_segment(struct crypt_device *cd,\n\t\t       struct
      device *dev,\n\t\t       uint32_t segment_number,\n\t\t       const char *password,\n\t\t
      \      size_t password_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: opal_query_status
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cd
    - dev
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 964
    functionDepth: 5
    functionLinenumber: 964
    functionLinenumberEnd: 967
    functionName: opal_supported
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 5
    functionsReached:
    - opal_query_status
    linkageType: ''
    returnType: int
    signature: int opal_supported(struct crypt_device *cd, struct device *dev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:981,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:982,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:984,1
    - Dst: opal_geometry_fd
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:988,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - cd
    - dev
    - ret_align
    - ret_block_size
    - ret_alignment_granularity_blocks
    - ret_lowest_lba_blocks
    argTypes:
    - struct crypt_device*
    - struct device*
    - bool*
    - uint32_t*
    - uint64_t*
    - uint64_t*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 980
        line_start: 980
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (dev)
      pos:
        line_end: 981
        line_start: 981
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 990
      start: 972
    functionDepth: 4
    functionLinenumber: 972
    functionLinenumberEnd: 990
    functionName: opal_geometry
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 1
    functionsReached:
    - opal_geometry_fd
    - device_open
    - assert
    linkageType: ''
    returnType: int
    signature: "int opal_geometry(struct crypt_device *cd,\n\t\t  struct device *dev,\n\t\t
      \ bool *ret_align,\n\t\t  uint32_t *ret_block_size,\n\t\t  uint64_t *ret_alignment_granularity_blocks,\n\t\t
      \ uint64_t *ret_lowest_lba_blocks)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1004,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1005,1
    - Dst: assert
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1006,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1008,1
    - Dst: opal_range_check_attributes_fd
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1012,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 8
    argNames:
    - cd
    - dev
    - segment_number
    - vk
    - check_offset_sectors
    - check_length_sectors
    - ret_read_locked
    - ret_write_locked
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint32_t
    - struct volume_key*
    - uint64_t*
    - uint64_t*
    - bool*
    - bool*
    assertStmts:
    - condition: (cd)
      pos:
        line_end: 1003
        line_start: 1003
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (dev)
      pos:
        line_end: 1004
        line_start: 1004
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    - condition: (vk)
      pos:
        line_end: 1005
        line_start: 1005
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    constantsTouched: []
    func_position:
      end: 1015
      start: 993
    functionDepth: 5
    functionLinenumber: 993
    functionLinenumberEnd: 1015
    functionName: opal_range_check_attributes_and_get_lock_state
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 1
    functionsReached:
    - device_open
    - opal_range_check_attributes_fd
    - assert
    linkageType: ''
    returnType: int
    signature: "int opal_range_check_attributes_and_get_lock_state(struct crypt_device
      *cd,\n\t\t     struct device *dev,\n\t\t     uint32_t segment_number,\n\t\t
      \    const struct volume_key *vk,\n\t\t     const uint64_t *check_offset_sectors,\n\t\t
      \    const uint64_t *check_length_sectors,\n\t\t     bool *ret_read_locked,\n\t\t
      \    bool *ret_write_locked)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypt_metadata_locking_enabled
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1023,1
    - Dst: device_open
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1032,1
    - Dst: fstat
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1036,1
    - Dst: S_ISBLK
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1036,1
    - Dst: asprintf
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1039,1
    - Dst: major
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1039,1
    - Dst: minor
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1039,1
    - Dst: crypt_write_lock
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1043,1
    - Dst: free
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1045,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - cd
    - opal_device
    - opal_lock
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct crypt_lock_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1017
    functionDepth: 6
    functionLinenumber: 1017
    functionLinenumberEnd: 1048
    functionName: opal_lock_internal
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 0
    functionsReached:
    - device_open
    - free
    - fstat
    - crypt_write_lock
    - minor
    - major
    - crypt_metadata_locking_enabled
    - asprintf
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int opal_lock_internal(struct crypt_device *cd, struct device *opal_device,
      struct crypt_lock_handle **opal_lock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypt_get_type
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1052,1
    - Dst: strcmp
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1052,1
    - Dst: crypt_get_type
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1052,1
    - Dst: opal_lock_internal
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1055,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - cd
    - opal_device
    - opal_lock
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct crypt_lock_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1050
    functionDepth: 7
    functionLinenumber: 1050
    functionLinenumberEnd: 1056
    functionName: opal_exclusive_lock
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 6
    functionsReached:
    - opal_lock_internal
    - strcmp
    - crypt_get_type
    linkageType: ''
    returnType: int
    signature: int opal_exclusive_lock(struct crypt_device *cd, struct device *opal_device,
      struct crypt_lock_handle **opal_lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt_unlock_internal
      Src: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c:1060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cd
    - opal_lock
    argTypes:
    - struct crypt_device*
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1058
    functionDepth: 4
    functionLinenumber: 1058
    functionLinenumberEnd: 1061
    functionName: opal_exclusive_unlock
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 6
    functionsReached:
    - crypt_unlock_internal
    linkageType: ''
    returnType: void
    signature: void opal_exclusive_unlock(struct crypt_device *cd, struct crypt_lock_handle
      *opal_lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - cd
    - dev
    - vk
    - range_start_blocks
    - range_length_blocks
    - opal_block_bytes
    - segment_number
    - admin_key
    - admin_key_len
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct volume_key*
    - uint64_t
    - uint64_t
    - uint32_t
    - uint32_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1066
    functionDepth: 0
    functionLinenumber: 1066
    functionLinenumberEnd: 1077
    functionName: opal_setup_ranges
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int opal_setup_ranges(struct crypt_device *cd,\n\t\t      struct device
      *dev,\n\t\t      const struct volume_key *vk,\n\t\t      uint64_t range_start_blocks,\n\t\t
      \     uint64_t range_length_blocks,\n\t\t      uint32_t opal_block_bytes,\n\t\t
      \     uint32_t segment_number,\n\t\t      const void *admin_key,\n\t\t      size_t
      admin_key_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - dev
    - segment_number
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1079
    functionDepth: 0
    functionLinenumber: 1079
    functionLinenumberEnd: 1082
    functionName: opal_lock
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int opal_lock(struct crypt_device *cd, struct device *dev, uint32_t
      segment_number)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - dev
    - segment_number
    - vk
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint32_t
    - struct volume_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1084
    functionDepth: 0
    functionLinenumber: 1084
    functionLinenumberEnd: 1090
    functionName: opal_unlock
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int opal_unlock(struct crypt_device *cd,\n\t\tstruct device *dev,\n\t\tuint32_t
      segment_number,\n\t\tconst struct volume_key *vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cd
    - dev
    argTypes:
    - struct crypt_device*
    - struct device*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1092
    functionDepth: 0
    functionLinenumber: 1092
    functionLinenumberEnd: 1095
    functionName: opal_supported
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int opal_supported(struct crypt_device *cd, struct device *dev)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cd
    - dev
    - password
    - password_len
    argTypes:
    - struct crypt_device*
    - struct device*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1097
    functionDepth: 0
    functionLinenumber: 1097
    functionLinenumberEnd: 1103
    functionName: opal_factory_reset
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int opal_factory_reset(struct crypt_device *cd,\n\t\t       struct
      device *dev,\n\t\t       const char *password,\n\t\t       size_t password_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - cd
    - dev
    - segment_number
    - password
    - password_len
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1105
    functionDepth: 0
    functionLinenumber: 1105
    functionLinenumberEnd: 1112
    functionName: opal_reset_segment
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int opal_reset_segment(struct crypt_device *cd,\n\t\t       struct
      device *dev,\n\t\t       uint32_t segment_number,\n\t\t       const char *password,\n\t\t
      \      size_t password_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - cd
    - dev
    - ret_align
    - ret_block_size
    - ret_alignment_granularity_blocks
    - ret_lowest_lba_blocks
    argTypes:
    - struct crypt_device*
    - struct device*
    - bool*
    - uint32_t*
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1114
    functionDepth: 0
    functionLinenumber: 1114
    functionLinenumberEnd: 1122
    functionName: opal_geometry
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int opal_geometry(struct crypt_device *cd,\n\t\t  struct device *dev,\n\t\t
      \ bool *ret_align,\n\t\t  uint32_t *ret_block_size,\n\t\t  uint64_t *ret_alignment_granularity_blocks,\n\t\t
      \ uint64_t *ret_lowest_lba_blocks)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - cd
    - dev
    - segment_number
    - vk
    - check_offset_sectors
    - check_length_sectors
    - ret_read_locked
    - ret_write_locked
    argTypes:
    - struct crypt_device*
    - struct device*
    - uint32_t
    - struct volume_key*
    - uint64_t*
    - uint64_t*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1124
    functionDepth: 0
    functionLinenumber: 1124
    functionLinenumberEnd: 1134
    functionName: opal_range_check_attributes_and_get_lock_state
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int opal_range_check_attributes_and_get_lock_state(struct crypt_device
      *cd,\n\t\t     struct device *dev,\n\t\t     uint32_t segment_number,\n\t\t
      \    const struct volume_key *vk,\n\t\t     const uint64_t *check_offset_sectors,\n\t\t
      \    const uint64_t *check_length_sectors,\n\t\t     bool *ret_read_locked,\n\t\t
      \    bool *ret_write_locked)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cd
    - opal_device
    - opal_lock
    argTypes:
    - struct crypt_device*
    - struct device*
    - struct crypt_lock_handle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1136
    functionDepth: 0
    functionLinenumber: 1136
    functionLinenumberEnd: 1139
    functionName: opal_exclusive_lock
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int opal_exclusive_lock(struct crypt_device *cd, struct device *opal_device,
      struct crypt_lock_handle **opal_lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - cd
    - opal_lock
    argTypes:
    - struct crypt_device*
    - struct crypt_lock_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1141
    functionDepth: 0
    functionLinenumber: 1141
    functionLinenumberEnd: 1143
    functionName: opal_exclusive_unlock
    functionSourceFile: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void opal_exclusive_unlock(struct crypt_device *cd, struct crypt_lock_handle
      *opal_lock)
Fuzzer filename: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc
Fuzzing method: LLVMFuzzerTestOneInput
included-header-files:
- ctype.h
- lib/utils_blkid.h
- openssl/kdf.h
- veritysetup_arg_list.h
- regex.h
- argon2.h
- utils_keyring.h
- loopaes/loopaes.h
- utils_io.h
- luks2/luks2.h
- blake2/blamka-round-ref.h
- fvault2/fvault2.h
- immintrin.h
- linux/if_alg.h
- openssl/hmac.h
- strings.h
- sys/utsname.h
- libintl.h
- keyslot_context.h
- argon2/argon2.h
- mbedtls/version.h
- luks2/hw_opal/hw_opal.h
- sys/param.h
- json_proto_converter.h
- ../lib/nls.h
- sys/sysmacros.h
- nettle/sha.h
- errno.h
- FuzzerInterface.h
- lib/libcryptsetup_macros.h
- openssl/thread.h
- luks2_internal.h
- nettle/hmac.h
- ../luks1/af.h
- utils_arg_macros.h
- argp.h
- ../luks1/luks.h
- string
- luks1/luks.h
- luks2/luks2_internal.h
- mbedtls/md.h
- integrity.h
- crypto_backend.h
- utils_blkid.h
- byteswap.h
- nettle/pbkdf2.h
- stdarg.h
- alloca.h
- mbedtls/ccm.h
- unistd.h
- veritysetup_args.h
- libcryptsetup_macros.h
- crypto_backend_internal.h
- sys/socket.h
- sys/time.h
- blake2/blake2.h
- uchar.h
- blake2/blamka-round-opt.h
- string.h
- x86intrin.h
- bitlk/bitlk.h
- LUKS2.pb.h
- integritysetup_arg_list.h
- process.h
- plain_json_proto_to_luks2_converter.h
- sys/stat.h
- sys/syscall.h
- LUKS2_plain_JSON.pb.h
- sys/prctl.h
- sys/ioctl.h
- lib/nls.h
- stdbool.h
- sys/types.h
- time.h
- uuid/uuid.h
- lib/utils_io.h
- nettle/memops.h
- passwdqc.h
- inttypes.h
- sys/select.h
- winbase.h
- lib/utils_crypt.h
- utils_dm.h
- utils_device_locking.h
- openssl/rand.h
- proto_to_luks2_converter.h
- libcryptsetup.h
- sys/endian.h
- crypto_backend/crypto_backend.h
- pthread.h
- ssh-utils.h
- integritysetup_args.h
- fvault2.h
- cryptsetup.h
- nettle/version.h
- stddef.h
- mbedtls/entropy.h
- genkat.h
- termios.h
- lib/utils_loop.h
- blkid/blkid.h
- limits.h
- nss.h
- popt.h
- openssl/provider.h
- bitops.h
- bitlk.h
- blake2/blake2-impl.h
- pk11pub.h
- libgen.h
- sys/mman.h
- utils_arg_names.h
- mbedtls/constant_time.h
- openssl/evp.h
- linux/keyctl.h
- verity.h
- utils_crypt.h
- lib/bitops.h
- internal.h
- ../argon2.h
- luks.h
- dlfcn.h
- linux/sed-opal.h
- sys/resource.h
- core.h
- nettle/sha3.h
- mbedtls/cipher.h
- cryptsetup_args.h
- ../src/cryptsetup.h
- syslog.h
- nls.h
- google/protobuf/io/zero_copy_stream_impl.h
- utils_storage_wrappers.h
- blake2.h
- rs.h
- stdint.h
- stdlib.h
- test-symbols-list.h
- sstream
- libcryptsetup_symver.h
- openssl/crypto.h
- signal.h
- endian.h
- google/protobuf/text_format.h
- libssh/sftp.h
- assert.h
- utils_loop.h
- ../integrity/integrity.h
- tmmintrin.h
- cryptsetup_arg_list.h
- verity/verity.h
- mbedtls/ctr_drbg.h
- emmintrin.h
- linux/fs.h
- libfuzzer/libfuzzer_macro.h
- utils_luks.h
- thread.h
- json-c/json.h
- linux/loop.h
- dirent.h
- sys/statvfs.h
- locale.h
- loopaes.h
- sys/file.h
- luks2.h
- linux/limits.h
- openssl/core_names.h
- tcrypt.h
- openssl/err.h
- gcrypt.h
- stdio.h
- tcrypt/tcrypt.h
- iostream
- linux/types.h
- mbedtls/pkcs5.h
- libdevmapper.h
- src/cryptsetup.h
- windows.h
- libssh/libssh.h
- sys/wait.h
- api_test.h
- integrity/integrity.h
- err.h
- encoding.h
- blake2-impl.h
- pwquality.h
- fcntl.h
- af.h
- math.h
report: name
sources:
- function_names:
  - ARRAY_SIZE
  - test_parse_mode
  - test_parse_integrity_mode
  - test_cipher_null
  - test_hex_conversion
  - exit_test
  - main
  source_file: /src/cryptsetup/tests/unit-utils-crypt.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*cipher'
        type: char
      - name: '*mode'
        type: char
      - name: keys
        type: int
      item_type: struct
      name: mode_test_vector
      pos:
        line_end: 26
        line_start: 21
        source_file: /src/cryptsetup/tests/unit-utils-crypt.c
    - fields:
      - name: int_mode
        type: bool
      - name: '*input'
        type: char
      - name: '*integrity'
        type: char
      - name: key_size
        type: int
      item_type: struct
      name: integrity_test_vector
      pos:
        line_end: 79
        line_start: 74
        source_file: /src/cryptsetup/tests/unit-utils-crypt.c
    - fields:
      - name: '*cipher'
        type: char
      - name: ok
        type: bool
      item_type: struct
      name: null_test_vector
      pos:
        line_end: 128
        line_start: 125
        source_file: /src/cryptsetup/tests/unit-utils-crypt.c
    - fields:
      - name: '*hex'
        type: char
      - name: '*bytes'
        type: char
      - name: bytes_size
        type: ssize_t
      - name: ok
        type: bool
      item_type: struct
      name: hex_test_vector
      pos:
        line_end: 161
        line_start: 156
        source_file: /src/cryptsetup/tests/unit-utils-crypt.c
    typedefs: []
    union: []
- function_names:
  - register_cleanup
  - check_ok
  - check_ok_return
  - check_ko
  - check_equal
  - check_ge_equal
  - check_null
  - check_notnull
  - xlog
  - t_device_size
  - t_set_readahead
  - fips_mode
  - fips_mode_kernel
  - create_dmdevice_over_loop
  - create_dmdevice_over_device
  - _snprintf
  - dmdevice_error_io
  - get_key_dm
  - prepare_keyfile
  - crypt_decode_key
  - global_log_callback
  - reset_log
  - _system
  - _keyring_check
  - t_dm_satisfies_version
  - t_dm_set_crypt_compat
  - t_dm_set_verity_compat
  - t_dm_set_integrity_compat
  - t_dm_check_versions
  - t_dm_crypt_keyring_support
  - t_dm_crypt_cpu_switch_support
  - t_dm_crypt_discard_support
  - t_dm_integrity_resize_support
  - t_dm_integrity_recalculate_support
  - t_dm_capi_string_supported
  - loop_device
  - crypt_loop_get_device_old
  - crypt_loop_get_device
  - loop_attach
  - loop_detach
  - t_get_devno
  - _read_uint64
  - _sysfs_get_uint64
  - t_device_size_by_devno
  source_file: /src/cryptsetup/tests/test_utils.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOOP_CONFIGURE
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/tests/test_utils.c
      type_or_value: '0x4C0A'
    - item_type: preproc_def
      name: LOOP_DEV_MAJOR
      pos:
        line_end: 701
        line_start: 700
        source_file: /src/cryptsetup/tests/test_utils.c
      type_or_value: '7'
    - item_type: preproc_def
      name: LO_FLAGS_AUTOCLEAR
      pos:
        line_end: 704
        line_start: 703
        source_file: /src/cryptsetup/tests/test_utils.c
      type_or_value: '4'
    - item_type: preproc_def
      name: LOOP_CTL_GET_FREE
      pos:
        line_end: 708
        line_start: 707
        source_file: /src/cryptsetup/tests/test_utils.c
      type_or_value: '0x4C82'
    - item_type: preproc_def
      name: LOOP_SET_CAPACITY
      pos:
        line_end: 712
        line_start: 711
        source_file: /src/cryptsetup/tests/test_utils.c
      type_or_value: '0x4C07'
    structs:
    - fields:
      - name: fd
        type: __u32
      - name: block_size
        type: __u32
      - name: info
        type: struct loop_info64
      - name: __reserved[8]
        type: __u64
      item_type: struct
      name: loop_config
      pos:
        line_end: 38
        line_start: 33
        source_file: /src/cryptsetup/tests/test_utils.c
    typedefs: []
    union: []
- function_names:
  - tpm2_find_device_auto
  source_file: /src/cryptsetup/tests/fake_systemd_tpm_path.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - parse_u64
  - parse_input_params
  - main
  source_file: /src/cryptsetup/tests/unit-wipe.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cpus_online
  - adjusted_pbkdf_memory
  - _min
  - get_luks2_offsets
  - get_luks_pbkdf_defaults
  - _remove_keyfiles
  - _cleanup_dmdevices
  - _setup
  - set_fast_pbkdf
  - add_key
  - keyctl_unlink
  - keyctl_link
  - keyctl_update
  - keyctl_read
  - request_key
  - add_key_set_perm
  - _kernel_key_by_segment_and_type
  - _kernel_key_by_segment
  - _volume_key_in_keyring
  - _drop_keyring_key_from_keyring_name
  - _drop_keyring_key_from_keyring_type
  - _drop_keyring_key
  - _cleanup
  - test_open
  - test_open_pass
  - test_open_pass1
  - test_validate
  - UseLuks2Device
  - SuspendDevice
  - AddDeviceLuks2
  - Luks2MetadataSize
  - UseTempVolumes
  - Luks2HeaderRestore
  - Luks2HeaderLoad
  - Luks2HeaderBackup
  - ResizeDeviceLuks2
  - TokenActivationByKeyring
  - Tokens
  - TEST_TOKEN_JSON
  - TEST_TOKEN_JSON_INVALID
  - TEST_TOKEN1_JSON
  - TEST_TOKEN1_JSON_INVALID
  - LUKS2_KEYRING_TOKEN_JSON
  - LUKS2_KEYRING_TOKEN_JSON_BAD
  - TEST_TOKEN2_JSON
  - TEST_TOKEN3_JSON
  - LuksConvert
  - Pbkdf
  - Luks2KeyslotAdd
  - Luks2KeyslotParams
  - Luks2ActivateByKeyring
  - Luks2Requirements
  - Luks2Integrity
  - check_flag
  - Luks2Refresh
  - Luks2Flags
  - test_progress
  - Luks2Reencryption
  - LuksKeyslotAdd
  - VolumeKeyGet
  - KeyslotContextAndKeyringLink
  - _crypt_load_check
  - Luks2Repair
  - int_handler
  - main
  source_file: /src/cryptsetup/tests/api-test-2.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DEVICE_1_UUID
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"28632274-8c8a-493f-835b-da802e1c576b"'
    - item_type: preproc_def
      name: DEVICE_EMPTY_name
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"crypt_zero"'
    - item_type: preproc_def
      name: DEVICE_EMPTY
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: DMDIR DEVICE_EMPTY_name
    - item_type: preproc_def
      name: DEVICE_ERROR_name
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"crypt_error"'
    - item_type: preproc_def
      name: DEVICE_ERROR
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: DMDIR DEVICE_ERROR_name
    - item_type: preproc_def
      name: CDEVICE_1
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"ctest1"'
    - item_type: preproc_def
      name: CDEVICE_2
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"ctest2"'
    - item_type: preproc_def
      name: CDEVICE_WRONG
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"O_o"'
    - item_type: preproc_def
      name: H_DEVICE
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"head_ok"'
    - item_type: preproc_def
      name: H_DEVICE_WRONG
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"head_wr"'
    - item_type: preproc_def
      name: L_DEVICE_1S
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"luks_onesec"'
    - item_type: preproc_def
      name: L_DEVICE_0S
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"luks_zerosec"'
    - item_type: preproc_def
      name: L_DEVICE_WRONG
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"luks_wr"'
    - item_type: preproc_def
      name: L_DEVICE_OK
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"luks_ok"'
    - item_type: preproc_def
      name: L_PLACEHOLDER
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"bdev_reference_placeholder"'
    - item_type: preproc_def
      name: REQS_LUKS2_HEADER
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"luks2_header_requirements"'
    - item_type: preproc_def
      name: NO_REQS_LUKS2_HEADER
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"luks2_header_requirements_free"'
    - item_type: preproc_def
      name: BACKUP_FILE
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"csetup_backup_file"'
    - item_type: preproc_def
      name: IMAGE1
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"compatimage2.img"'
    - item_type: preproc_def
      name: EMPTY_HEADER
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"empty.hdr"'
    - item_type: preproc_def
      name: IMAGE_EMPTY
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"empty.img"'
    - item_type: preproc_def
      name: IMAGE_EMPTY_SMALL
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"empty_small.img"'
    - item_type: preproc_def
      name: IMAGE_EMPTY_SMALL_2
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"empty_small2.img"'
    - item_type: preproc_def
      name: IMAGE_PV_LUKS2_SEC
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"blkid-luks2-pv.img"'
    - item_type: preproc_def
      name: KEYFILE1
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"key1.file"'
    - item_type: preproc_def
      name: KEY1
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"compatkey"'
    - item_type: preproc_def
      name: KEYFILE2
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"key2.file"'
    - item_type: preproc_def
      name: KEY2
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"0123456789abcdef"'
    - item_type: preproc_def
      name: PASSPHRASE
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"blablabl"'
    - item_type: preproc_def
      name: PASSPHRASE1
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"albalbal"'
    - item_type: preproc_def
      name: DEVICE_TEST_UUID
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"12345678-1234-1234-1234-123456789abc"'
    - item_type: preproc_def
      name: DEVICE_WRONG
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"/dev/Ooo_"'
    - item_type: preproc_def
      name: DEVICE_CHAR
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"/dev/zero"'
    - item_type: preproc_def
      name: THE_LFILE_TEMPLATE
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"cryptsetup-tstlp.XXXXXX"'
    - item_type: preproc_def
      name: TEST_KEYRING_USER
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"cs_apitest2_keyring_in_user"'
    - item_type: preproc_def
      name: TEST_KEYRING_USER_NAME
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"%keyring:" TEST_KEYRING_USER'
    - item_type: preproc_def
      name: TEST_KEYRING_SESSION
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"cs_apitest2_keyring_in_session"'
    - item_type: preproc_def
      name: TEST_KEYRING_SESSION_NAME
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"%keyring:" TEST_KEYRING_SESSION'
    - item_type: preproc_def
      name: TEST_KEY_VK_USER
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"api_test_user_vk1"'
    - item_type: preproc_def
      name: TEST_KEY_VK_USER_NAME
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"\%user:" TEST_KEY_VK_USER'
    - item_type: preproc_def
      name: TEST_KEY_VK_LOGON
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"cs_api_test_prefix:api_test_logon_vk1"'
    - item_type: preproc_def
      name: TEST_KEY_VK_LOGON_NAME
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"\%logon:" TEST_KEY_VK_LOGON'
    - item_type: preproc_def
      name: TEST_KEY_VK_USER2
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"api_test_user_vk2"'
    - item_type: preproc_def
      name: TEST_KEY_VK_USER2_NAME
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"\%user:" TEST_KEY_VK_USER2'
    - item_type: preproc_def
      name: TEST_KEY_VK_LOGON2
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"cs_api_test_prefix:api_test_logon_vk2"'
    - item_type: preproc_def
      name: TEST_KEY_VK_LOGON2_NAME
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"\%logon:" TEST_KEY_VK_LOGON'
    - item_type: preproc_def
      name: KEY_DESC_TEST0
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"cs_token_test:test_key0"'
    - item_type: preproc_def
      name: KEY_DESC_TEST1
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"cs_token_test:test_key1"'
    - item_type: preproc_def
      name: CONV_DIR
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"conversion_imgs"'
    - item_type: preproc_def
      name: CONV_L1_128
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l1_128b"'
    - item_type: preproc_def
      name: CONV_L1_256
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l1_256b"'
    - item_type: preproc_def
      name: CONV_L1_512
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l1_512b"'
    - item_type: preproc_def
      name: CONV_L2_128
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_128b"'
    - item_type: preproc_def
      name: CONV_L2_128_FULL
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_128b_full"'
    - item_type: preproc_def
      name: CONV_L2_256
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_256b"'
    - item_type: preproc_def
      name: CONV_L2_256_FULL
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_256b_full"'
    - item_type: preproc_def
      name: CONV_L2_512
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_512b"'
    - item_type: preproc_def
      name: CONV_L2_512_FULL
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_512b_full"'
    - item_type: preproc_def
      name: CONV_L1_128_DET
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l1_128b_det"'
    - item_type: preproc_def
      name: CONV_L1_256_DET
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l1_256b_det"'
    - item_type: preproc_def
      name: CONV_L1_512_DET
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l1_512b_det"'
    - item_type: preproc_def
      name: CONV_L2_128_DET
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_128b_det"'
    - item_type: preproc_def
      name: CONV_L2_128_DET_FULL
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_128b_det_full"'
    - item_type: preproc_def
      name: CONV_L2_256_DET
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_256b_det"'
    - item_type: preproc_def
      name: CONV_L2_256_DET_FULL
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_256b_det_full"'
    - item_type: preproc_def
      name: CONV_L2_512_DET
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_512b_det"'
    - item_type: preproc_def
      name: CONV_L2_512_DET_FULL
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l2_512b_det_full"'
    - item_type: preproc_def
      name: CONV_L1_256_LEGACY
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l1_256b_legacy_offset"'
    - item_type: preproc_def
      name: CONV_L1_256_UNMOVABLE
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"l1_256b_unmovable"'
    - item_type: preproc_def
      name: PASS0
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"aaablabl"'
    - item_type: preproc_def
      name: PASS1
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"hhhblabl"'
    - item_type: preproc_def
      name: PASS2
      pos:
        line_end: 114
        line_start: 113
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"cccblabl"'
    - item_type: preproc_def
      name: PASS3
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"dddblabl"'
    - item_type: preproc_def
      name: PASS4
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"eeeblabl"'
    - item_type: preproc_def
      name: PASS5
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"fffblabl"'
    - item_type: preproc_def
      name: PASS6
      pos:
        line_end: 118
        line_start: 117
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"gggblabl"'
    - item_type: preproc_def
      name: PASS7
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"bbbblabl"'
    - item_type: preproc_def
      name: PASS8
      pos:
        line_end: 120
        line_start: 119
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"iiiblabl"'
    - item_type: preproc_def
      name: DM_RETRY
      pos:
        line_end: 276
        line_start: 275
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"--retry "'
    - item_type: preproc_def
      name: DM_RETRY
      pos:
        line_end: 278
        line_start: 277
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '""'
    - item_type: preproc_def
      name: DM_NOSTDERR
      pos:
        line_end: 281
        line_start: 280
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '" 2>/dev/null"'
    - item_type: preproc_def
      name: KEY_POS_ALL
      pos:
        line_end: 454
        line_start: 453
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '0x3f000000'
    - item_type: preproc_def
      name: KEY_USR_ALL
      pos:
        line_end: 455
        line_start: 454
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '0x003f0000'
    - item_type: preproc_def
      name: BOGUS_TOKEN0_JSON
      pos:
        line_end: 2060
        line_start: 2059
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"{\"type\":\"luks2-\",\"keyslots\":[]}"'
    - item_type: preproc_def
      name: BOGUS_TOKEN1_JSON
      pos:
        line_end: 2061
        line_start: 2060
        source_file: /src/cryptsetup/tests/api-test-2.c
      type_or_value: '"{\"type\":\"luks2-a\",\"keyslots\":[]}"'
    structs: []
    typedefs:
    - item_type: typedef
      name: key_serial_t
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/cryptsetup/tests/api-test-2.c
      type: int32_t
    - item_type: typedef
      name: key_perm_t
      pos:
        line_end: 452
        line_start: 452
        source_file: /src/cryptsetup/tests/api-test-2.c
      type: uint32_t
    union: []
- function_names:
  - check_cipher
  - check_hash
  - exit_help
  - main
  source_file: /src/cryptsetup/tests/crypto-check.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ARRAY_SIZE
  - printhex
  - pbkdf_test_vectors
  - crc32_test
  - hash_test
  - hmac_test
  - cipher_test
  - get_sha256
  - cipher_iv_test
  - check_hash
  - base64_test
  - utf8_16_test
  - default_alg_test
  - memcmp_test
  - kernel_capi_check_test
  - exit_test
  - main
  source_file: /src/cryptsetup/tests/crypto-vectors.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*type'
        type: char
      - name: '*hash'
        type: char
      - name: hash_block_length
        type: unsigned int
      - name: iterations
        type: unsigned int
      - name: memory
        type: unsigned int
      - name: parallelism
        type: unsigned int
      - name: '*password'
        type: char
      - name: password_length
        type: unsigned int
      - name: '*salt'
        type: char
      - name: salt_length
        type: unsigned int
      - name: '*output'
        type: char
      - name: output_length
        type: unsigned int
      - name: can_fail_fips
        type: bool
      item_type: struct
      name: kdf_test_vector
      pos:
        line_end: 48
        line_start: 34
        source_file: /src/cryptsetup/tests/crypto-vectors.c
    - fields:
      - name: '*data'
        type: char
      - name: data_length
        type: unsigned int
      - name: out[8]
        type: "struct {\n\t\tconst char *name;\n\t\tunsigned int length;\n\t\tconst
          char *out;\n\t}"
      item_type: struct
      name: hash_test_vector
      pos:
        line_end: 268
        line_start: 260
        source_file: /src/cryptsetup/tests/crypto-vectors.c
    - fields:
      - name: '*key'
        type: char
      - name: key_length
        type: unsigned int
      - name: '*data'
        type: char
      - name: data_length
        type: unsigned int
      - name: out[3]
        type: "struct {\n\t\tconst char *name;\n\t\tunsigned int length;\n\t\tconst
          char *out;\n\t}"
      item_type: struct
      name: hmac_test_vector
      pos:
        line_end: 436
        line_start: 426
        source_file: /src/cryptsetup/tests/crypto-vectors.c
    - fields:
      - name: '*key'
        type: char
      - name: key_length
        type: unsigned int
      - name: '*iv'
        type: char
      - name: iv_length
        type: unsigned int
      - name: '*plaintext'
        type: char
      - name: data_length
        type: unsigned int
      - name: out[2]
        type: "struct {\n\t\tconst char *name;\n\t\tconst char *mode;\n\t\tconst char
          *ciphertext;\n\t}"
      item_type: struct
      name: cipher_test_vector
      pos:
        line_end: 548
        line_start: 536
        source_file: /src/cryptsetup/tests/crypto-vectors.c
    - fields:
      - name: '*cipher_name'
        type: char
      - name: '*cipher_mode'
        type: char
      - name: '*key'
        type: char
      - name: key_length
        type: unsigned int
      - name: '*iv_name'
        type: char
      - name: iv_offset
        type: uint64_t
      - name: data_length
        type: unsigned int
      - name: '*in_sha256'
        type: char
      - name: out[7]
        type: "struct {\n\t\tsize_t sector_size;\n\t\tbool large_iv;\n\t\tconst char
          *out_sha256;\n\t}"
      item_type: struct
      name: cipher_iv_test_vector
      pos:
        line_end: 721
        line_start: 707
        source_file: /src/cryptsetup/tests/crypto-vectors.c
    - fields:
      - name: decoded_len
        type: size_t
      - name: '*decoded'
        type: char
      - name: '*encoded'
        type: char
      item_type: struct
      name: base64_test_vector
      pos:
        line_end: 933
        line_start: 929
        source_file: /src/cryptsetup/tests/crypto-vectors.c
    - fields:
      - name: len8
        type: size_t
      - name: len16
        type: size_t
      - name: '*utf8'
        type: char
      - name: '*utf16'
        type: char
      item_type: struct
      name: utf8_16_test_vector
      pos:
        line_end: 975
        line_start: 970
        source_file: /src/cryptsetup/tests/crypto-vectors.c
    - fields:
      - name: '*name'
        type: char
      - name: '*mode'
        type: char
      - name: '*integrity'
        type: char
      - name: key_length
        type: size_t
      - name: fips
        type: bool
      item_type: struct
      name: capi_test_vector
      pos:
        line_end: 1499
        line_start: 1493
        source_file: /src/cryptsetup/tests/crypto-vectors.c
    typedefs: []
    union: []
- function_names:
  - test_read_buffer
  - test_write_buffer
  - test_read_blockwise
  - test_write_blockwise
  - test_read_lseek_blockwise
  - test_write_lseek_blockwise
  - usage
  - parse_input_params
  - main
  source_file: /src/cryptsetup/tests/unit-utils-io.c
  types:
    enum:
    - enumerators:
      - name: READ_BUFFER
        value: '0'
      - name: WRITE_BUFFER
      - name: READ_LSEEK_BLOCKWISE
      - name: WRITE_BLOCKWISE
      - name: READ_BLOCKWISE
      - name: WRITE_LSEEK_BLOCKWISE
      item_type: enum
      name: fn_enum
      pos:
        line_end: 25
        line_start: 18
        source_file: /src/cryptsetup/tests/unit-utils-io.c
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - UNUSED
  - test_logf
  - log_dbg
  - log_std
  - log_err
  - check_dlvsym
  - check_dlsym
  - check_all_symbols
  - CHECK_SYMBOL
  - usage
  - main
  source_file: /src/cryptsetup/tests/all-symbols-test.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOG_MAX_LEN
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/tests/all-symbols-test.c
      type_or_value: '256'
    - item_type: preproc_def
      name: LOG_DEBUG
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/tests/all-symbols-test.c
      type_or_value: '1'
    - item_type: preproc_def
      name: LOG_NORMAL
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/tests/all-symbols-test.c
      type_or_value: '2'
    - item_type: preproc_def
      name: LOG_ERROR
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/tests/all-symbols-test.c
      type_or_value: '3'
    structs: []
    typedefs: []
    union: []
- function_names:
  - get_luks_offsets
  - _remove_keyfiles
  - _cleanup_dmdevices
  - _cleanup
  - _setup
  - AddDevicePlain
  - new_log
  - CallbacksTest
  - UseLuksDevice
  - SuspendDevice
  - AddDeviceLuks
  - UseTempVolumes
  - LuksHeaderRestore
  - LuksHeaderLoad
  - LuksHeaderBackup
  - ResizeDeviceLuks
  - HashDevicePlain
  - VerityTest
  - TcryptTest
  - ResizeIntegrity
  - ResizeIntegrityWithKey
  - IntegrityTest
  - WipeTest
  - LuksKeyslotAdd
  - VolumeKeyGet
  - NonFIPSAlg
  - int_handler
  - main
  source_file: /src/cryptsetup/tests/api-test.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DEVICE_1_UUID
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"28632274-8c8a-493f-835b-da802e1c576b"'
    - item_type: preproc_def
      name: DEVICE_EMPTY_name
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"crypt_zero"'
    - item_type: preproc_def
      name: DEVICE_EMPTY
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: DMDIR DEVICE_EMPTY_name
    - item_type: preproc_def
      name: DEVICE_ERROR_name
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"crypt_error"'
    - item_type: preproc_def
      name: DEVICE_ERROR
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: DMDIR DEVICE_ERROR_name
    - item_type: preproc_def
      name: CDEVICE_1
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"ctest1"'
    - item_type: preproc_def
      name: CDEVICE_2
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"ctest2"'
    - item_type: preproc_def
      name: CDEVICE_WRONG
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"O_o"'
    - item_type: preproc_def
      name: H_DEVICE
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"head_ok"'
    - item_type: preproc_def
      name: H_DEVICE_WRONG
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"head_wr"'
    - item_type: preproc_def
      name: L_DEVICE_1S
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"luks_onesec"'
    - item_type: preproc_def
      name: L_DEVICE_0S
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"luks_zerosec"'
    - item_type: preproc_def
      name: L_DEVICE_WRONG
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"luks_wr"'
    - item_type: preproc_def
      name: L_DEVICE_OK
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"luks_ok"'
    - item_type: preproc_def
      name: EVL_HEADER_1
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"evil_hdr-luks_hdr_damage"'
    - item_type: preproc_def
      name: EVL_HEADER_2
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"evil_hdr-payload_overwrite"'
    - item_type: preproc_def
      name: EVL_HEADER_3
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"evil_hdr-stripes_payload_dmg"'
    - item_type: preproc_def
      name: EVL_HEADER_4
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"evil_hdr-small_luks_device"'
    - item_type: preproc_def
      name: EVL_HEADER_5
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"evil_hdr-keyslot_overlap"'
    - item_type: preproc_def
      name: VALID_HEADER
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"valid_header_file"'
    - item_type: preproc_def
      name: BACKUP_FILE
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"csetup_backup_file"'
    - item_type: preproc_def
      name: IMAGE1
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"compatimage.img"'
    - item_type: preproc_def
      name: IMAGE_EMPTY
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"empty.img"'
    - item_type: preproc_def
      name: KEYFILE1
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"key1.file"'
    - item_type: preproc_def
      name: KEY1
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"compatkey"'
    - item_type: preproc_def
      name: KEYFILE2
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"key2.file"'
    - item_type: preproc_def
      name: KEY2
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"0123456789abcdef"'
    - item_type: preproc_def
      name: PASSPHRASE
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"blablabl"'
    - item_type: preproc_def
      name: PASSPHRASE1
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"albalbal"'
    - item_type: preproc_def
      name: DEVICE_TEST_UUID
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"12345678-1234-1234-1234-123456789abc"'
    - item_type: preproc_def
      name: DEVICE_WRONG
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"/dev/Ooo_"'
    - item_type: preproc_def
      name: DEVICE_CHAR
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"/dev/zero"'
    - item_type: preproc_def
      name: THE_LFILE_TEMPLATE
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"cryptsetup-tstlp.XXXXXX"'
    - item_type: preproc_def
      name: LUKS_PHDR_SIZE_B
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: DM_RETRY
      pos:
        line_end: 129
        line_start: 128
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '"--retry "'
    - item_type: preproc_def
      name: DM_RETRY
      pos:
        line_end: 131
        line_start: 130
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '""'
    - item_type: preproc_def
      name: DM_NOSTDERR
      pos:
        line_end: 134
        line_start: 133
        source_file: /src/cryptsetup/tests/api-test.c
      type_or_value: '" 2>/dev/null"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - OK_
  - NOTFAIL_
  - FAIL_
  - EQ_
  - GE_
  - NULL_
  - NOTNULL_
  - RUN_
  - CRYPT_FREE
  - VOIDP_CAST
  - DIV_ROUND_UP
  - DIV_ROUND_UP_MODULO
  source_file: /src/cryptsetup/tests/api_test.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DMDIR
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '"/dev/mapper/"'
    - item_type: preproc_def
      name: TST_SECTOR_SHIFT
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: 9L
    - item_type: preproc_def
      name: TST_SECTOR_SIZE
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '512'
    - item_type: preproc_def
      name: TST_LOOP_FILE_SIZE
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: (((1 << 20) * 100) >> TST_SECTOR_SHIFT)
    - item_type: preproc_def
      name: T_DM_KEY_WIPE_SUPPORTED
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: "(UINT64_C(1) << 0)\t"
    - item_type: preproc_def
      name: T_DM_LMK_SUPPORTED
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: "(UINT64_C(1) << 1)\t"
    - item_type: preproc_def
      name: T_DM_SECURE_SUPPORTED
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: "(UINT64_C(1) << 2)\t"
    - item_type: preproc_def
      name: T_DM_PLAIN64_SUPPORTED
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: "(UINT64_C(1) << 3)\t"
    - item_type: preproc_def
      name: T_DM_DISCARDS_SUPPORTED
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: "(UINT64_C(1) << 4)\t"
    - item_type: preproc_def
      name: T_DM_VERITY_SUPPORTED
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: "(UINT64_C(1) << 5)\t"
    - item_type: preproc_def
      name: T_DM_TCW_SUPPORTED
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: "(UINT64_C(1) << 6)\t"
    - item_type: preproc_def
      name: T_DM_SAME_CPU_CRYPT_SUPPORTED
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 7) '
    - item_type: preproc_def
      name: T_DM_SUBMIT_FROM_CRYPT_CPUS_SUPPORTED
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 8) '
    - item_type: preproc_def
      name: T_DM_VERITY_ON_CORRUPTION_SUPPORTED
      pos:
        line_end: 114
        line_start: 113
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 9) '
    - item_type: preproc_def
      name: T_DM_VERITY_FEC_SUPPORTED
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 10) '
    - item_type: preproc_def
      name: T_DM_KERNEL_KEYRING_SUPPORTED
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 11) '
    - item_type: preproc_def
      name: T_DM_INTEGRITY_SUPPORTED
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 12) '
    - item_type: preproc_def
      name: T_DM_SECTOR_SIZE_SUPPORTED
      pos:
        line_end: 118
        line_start: 117
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 13) '
    - item_type: preproc_def
      name: T_DM_CAPI_STRING_SUPPORTED
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 14) '
    - item_type: preproc_def
      name: T_DM_DEFERRED_SUPPORTED
      pos:
        line_end: 120
        line_start: 119
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 15) '
    - item_type: preproc_def
      name: T_DM_INTEGRITY_RECALC_SUPPORTED
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 16) '
    - item_type: preproc_def
      name: T_DM_INTEGRITY_BITMAP_SUPPORTED
      pos:
        line_end: 122
        line_start: 121
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 17) '
    - item_type: preproc_def
      name: T_DM_GET_TARGET_VERSION_SUPPORTED
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 18) '
    - item_type: preproc_def
      name: T_DM_INTEGRITY_FIX_PADDING_SUPPORTED
      pos:
        line_end: 124
        line_start: 123
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 19) '
    - item_type: preproc_def
      name: T_DM_BITLK_EBOIV_SUPPORTED
      pos:
        line_end: 125
        line_start: 124
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 20) '
    - item_type: preproc_def
      name: T_DM_BITLK_ELEPHANT_SUPPORTED
      pos:
        line_end: 126
        line_start: 125
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 21) '
    - item_type: preproc_def
      name: T_DM_VERITY_SIGNATURE_SUPPORTED
      pos:
        line_end: 127
        line_start: 126
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 22) '
    - item_type: preproc_def
      name: T_DM_INTEGRITY_DISCARDS_SUPPORTED
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 23) '
    - item_type: preproc_def
      name: T_DM_INTEGRITY_RESIZE_SUPPORTED
      pos:
        line_end: 129
        line_start: 128
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 23) '
    - item_type: preproc_def
      name: T_DM_VERITY_PANIC_CORRUPTION_SUPPORTED
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 24) '
    - item_type: preproc_def
      name: T_DM_CRYPT_NO_WORKQUEUE_SUPPORTED
      pos:
        line_end: 131
        line_start: 130
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 25) '
    - item_type: preproc_def
      name: T_DM_INTEGRITY_FIX_HMAC_SUPPORTED
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 26) '
    - item_type: preproc_def
      name: T_DM_INTEGRITY_RESET_RECALC_SUPPORTED
      pos:
        line_end: 133
        line_start: 132
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 27) '
    - item_type: preproc_def
      name: T_DM_VERITY_TASKLETS_SUPPORTED
      pos:
        line_end: 134
        line_start: 133
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 28) '
    - item_type: preproc_def
      name: T_DM_CRYPT_HIGH_PRIORITY_SUPPORTED
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 29) '
    - item_type: preproc_def
      name: T_DM_CRYPT_INTEGRITY_KEY_SIZE_OPT_SUPPORTED
      pos:
        line_end: 136
        line_start: 135
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 30) '
    - item_type: preproc_def
      name: T_DM_VERITY_ERROR_AS_CORRUPTION_SUPPORTED
      pos:
        line_end: 137
        line_start: 136
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 31) '
    - item_type: preproc_def
      name: T_DM_INTEGRITY_INLINE_MODE_SUPPORTED
      pos:
        line_end: 138
        line_start: 137
        source_file: /src/cryptsetup/tests/api_test.h
      type_or_value: '(UINT64_C(1) << 32) '
    structs: []
    typedefs: []
    union: []
- function_names:
  - print_diff
  - check
  - open_mmap
  - close_mmap
  - main
  source_file: /src/cryptsetup/tests/differ.c
  types:
    enum:
    - enumerators:
      - name: OK
      - name: FAIL
      item_type: enum
      name: df
      pos:
        line_end: 23
        line_start: 23
        source_file: /src/cryptsetup/tests/differ.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: fd
        type: int
      - name: '*addr'
        type: unsigned char
      - name: size
        type: size_t
      item_type: struct
      name: ffile
      pos:
        line_end: 21
        line_start: 16
        source_file: /src/cryptsetup/tests/differ.c
    typedefs: []
    union: []
- function_names:
  - fix_checksum_hdr
  - calculate_checksum
  - LLVMFuzzerTestOneInput
  source_file: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FILESIZE
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc
      type_or_value: (16777216)
    - item_type: preproc_def
      name: CHKSUM_ALG
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc
      type_or_value: '"sha256"'
    - item_type: preproc_def
      name: CHKSUM_SIZE
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/tests/fuzz/crypt2_load_fuzz.cc
      type_or_value: '32'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - empty_log
  - LLVMFuzzerTestOneInput
  source_file: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FILESIZE
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/cryptsetup/tests/fuzz/crypt2_load_ondisk_fuzz.cc
      type_or_value: (16777216)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/tests/fuzz/json_proto_converter.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEFINE_PROTO_FUZZER
  source_file: /src/cryptsetup/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_proto::JsonProtoConverter::AppendArray
  - json_proto::JsonProtoConverter::AppendNumber
  - json_proto::JsonProtoConverter::AppendObject
  - json_proto::JsonProtoConverter::AppendValue
  - json_proto::JsonProtoConverter::Convert
  - json_proto::JsonProtoConverter::Convert
  - json_proto::JsonProtoConverter::AppendArray
  - json_proto::JsonProtoConverter::AppendNumber
  - json_proto::JsonProtoConverter::AppendObject
  - json_proto::JsonProtoConverter::AppendValue
  - json_proto::JsonProtoConverter::Convert
  - json_proto::JsonProtoConverter::Convert
  source_file: /src/cryptsetup/tests/fuzz/json_proto_converter.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/tests/fuzz/FuzzerInterface.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FUZZER_INTERFACE_VISIBILITY
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/tests/fuzz/FuzzerInterface.h
      type_or_value: __declspec(dllexport)
    - item_type: preproc_def
      name: FUZZER_INTERFACE_VISIBILITY
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/cryptsetup/tests/fuzz/FuzzerInterface.h
      type_or_value: __attribute__((visibility("default")))
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
  - json_proto::LUKS2ProtoConverter::set_write_headers_only
  - json_proto::LUKS2ProtoConverter::convert
  - LUKS2ProtoConverter::~LUKS2ProtoConverter()
  - json_proto::LUKS2ProtoConverter::emit_luks2_binary_header
  - json_proto::LUKS2ProtoConverter::set_write_headers_only
  - json_proto::LUKS2ProtoConverter::convert
  - LUKS2ProtoConverter::~LUKS2ProtoConverter()
  source_file: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
  - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
  - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
  - LUKS2_proto::LUKS2ProtoConverter::keyslot_area_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_area
  - LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_kdf
  - LUKS2_proto::LUKS2ProtoConverter::keyslot_af_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_af
  - LUKS2_proto::LUKS2ProtoConverter::keyslot_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::reencrypt_keyslot_mode_to_string
  - LUKS2_proto::LUKS2ProtoConverter::reencrypt_keyslot_direction_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot
  - LUKS2_proto::LUKS2ProtoConverter::generate_token
  - LUKS2_proto::LUKS2ProtoConverter::generate_digest
  - LUKS2_proto::LUKS2ProtoConverter::segment_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::segment_flag_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_segment_integrity
  - LUKS2_proto::LUKS2ProtoConverter::generate_segment
  - LUKS2_proto::LUKS2ProtoConverter::create_jobj
  - LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
  - LUKS2_proto::LUKS2ProtoConverter::set_write_headers_only
  - LUKS2_proto::LUKS2ProtoConverter::convert
  - LUKS2_proto::LUKS2ProtoConverter::config_flag_to_string
  - LUKS2_proto::LUKS2ProtoConverter::config_requirement_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_config
  - LUKS2ProtoConverter::~LUKS2ProtoConverter()
  - LUKS2_proto::LUKS2ProtoConverter::string_uint64_to_string
  - LUKS2_proto::LUKS2ProtoConverter::object_id_to_string
  - LUKS2_proto::LUKS2ProtoConverter::hash_algorithm_to_string
  - LUKS2_proto::LUKS2ProtoConverter::keyslot_area_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_area
  - LUKS2_proto::LUKS2ProtoConverter::keyslot_kdf_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_kdf
  - LUKS2_proto::LUKS2ProtoConverter::keyslot_af_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot_af
  - LUKS2_proto::LUKS2ProtoConverter::keyslot_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::reencrypt_keyslot_mode_to_string
  - LUKS2_proto::LUKS2ProtoConverter::reencrypt_keyslot_direction_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_keyslot
  - LUKS2_proto::LUKS2ProtoConverter::generate_token
  - LUKS2_proto::LUKS2ProtoConverter::generate_digest
  - LUKS2_proto::LUKS2ProtoConverter::segment_type_to_string
  - LUKS2_proto::LUKS2ProtoConverter::segment_flag_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_segment_integrity
  - LUKS2_proto::LUKS2ProtoConverter::generate_segment
  - LUKS2_proto::LUKS2ProtoConverter::create_jobj
  - LUKS2_proto::LUKS2ProtoConverter::emit_luks2_binary_header
  - LUKS2_proto::LUKS2ProtoConverter::set_write_headers_only
  - LUKS2_proto::LUKS2ProtoConverter::convert
  - LUKS2_proto::LUKS2ProtoConverter::config_flag_to_string
  - LUKS2_proto::LUKS2ProtoConverter::config_requirement_to_string
  - LUKS2_proto::LUKS2ProtoConverter::generate_config
  - LUKS2ProtoConverter::~LUKS2ProtoConverter()
  source_file: /src/cryptsetup/tests/fuzz/proto_to_luks2_converter.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/tests/fuzz/plain_json_proto_to_luks2_converter.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEFINE_PROTO_FUZZER
  source_file: /src/cryptsetup/tests/fuzz/crypt2_load_proto_fuzz.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/cryptsetup/tests/fuzz/proto_to_luks2.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/tokens/ssh/ssh-utils.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - l_err
  - l_dbg
  - tools_cleanup
  - token_add
  - parse_opt
  - _log
  - get_keyslot_for_passphrase
  - main
  source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TOKEN_NAME
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
      type_or_value: '"ssh"'
    - item_type: preproc_def
      name: OPT_SSH_SERVER
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
      type_or_value: '1'
    - item_type: preproc_def
      name: OPT_SSH_USER
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
      type_or_value: '2'
    - item_type: preproc_def
      name: OPT_SSH_PATH
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
      type_or_value: '3'
    - item_type: preproc_def
      name: OPT_KEY_PATH
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
      type_or_value: '4'
    - item_type: preproc_def
      name: OPT_DEBUG
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
      type_or_value: '5'
    - item_type: preproc_def
      name: OPT_DEBUG_JSON
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
      type_or_value: '6'
    - item_type: preproc_def
      name: OPT_KEY_SLOT
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
      type_or_value: '7'
    - item_type: preproc_def
      name: OPT_TOKENS_PATH
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
      type_or_value: '8'
    structs:
    - fields:
      - name: '*device'
        type: char
      - name: '*action'
        type: char
      - name: '*ssh_server'
        type: char
      - name: '*ssh_user'
        type: char
      - name: '*ssh_path'
        type: char
      - name: '*ssh_keypath'
        type: char
      - name: '*ssh_plugin_path'
        type: char
      - name: keyslot
        type: int
      - name: verbose
        type: int
      - name: debug
        type: int
      - name: debug_json
        type: int
      item_type: struct
      name: arguments
      pos:
        line_end: 168
        line_start: 156
        source_file: /src/cryptsetup/tokens/ssh/cryptsetup-ssh.c
    typedefs: []
    union: []
- function_names:
  - l_dbg
  - cryptsetup_token_version
  - cryptsetup_token_buffer_free
  - get_token_jobj
  - cryptsetup_token_open_pin
  - cryptsetup_token_open
  - cryptsetup_token_dump
  - cryptsetup_token_validate
  source_file: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TOKEN_NAME
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
      type_or_value: '"ssh"'
    - item_type: preproc_def
      name: TOKEN_VERSION_MAJOR
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
      type_or_value: '"1"'
    - item_type: preproc_def
      name: TOKEN_VERSION_MINOR
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
      type_or_value: '"0"'
    - item_type: preproc_def
      name: SERVER_ARG
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
      type_or_value: '"plugin-ssh-server"'
    - item_type: preproc_def
      name: USER_ARG
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
      type_or_value: '"plugin-ssh-user"'
    - item_type: preproc_def
      name: PATH_ARG
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
      type_or_value: '"plugin-ssh-path"'
    - item_type: preproc_def
      name: KEYPATH_ARG
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/tokens/ssh/libcryptsetup-token-ssh.c
      type_or_value: '"plugin-ssh-keypath"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - sshplugin_download_password
  - sshplugin_session_init
  - sshplugin_public_key_auth
  source_file: /src/cryptsetup/tokens/ssh/ssh-utils.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: KEYFILE_LENGTH_MAX
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/tokens/ssh/ssh-utils.c
      type_or_value: '8192'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/src/veritysetup_arg_list.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/src/utils_arg_names.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: OPT_ACTIVE_NAME
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"active-name"'
    - item_type: preproc_def
      name: OPT_ALIGN_PAYLOAD
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"align-payload"'
    - item_type: preproc_def
      name: OPT_ALLOW_DISCARDS
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"allow-discards"'
    - item_type: preproc_def
      name: OPT_BATCH_MODE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"batch-mode"'
    - item_type: preproc_def
      name: OPT_BITMAP_FLUSH_TIME
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"bitmap-flush-time"'
    - item_type: preproc_def
      name: OPT_BITMAP_SECTORS_PER_BIT
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"bitmap-sectors-per-bit"'
    - item_type: preproc_def
      name: OPT_BLOCK_SIZE
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"block-size"'
    - item_type: preproc_def
      name: OPT_BUFFER_SECTORS
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"buffer-sectors"'
    - item_type: preproc_def
      name: OPT_CANCEL_DEFERRED
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"cancel-deferred"'
    - item_type: preproc_def
      name: OPT_CHECK_AT_MOST_ONCE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"check-at-most-once"'
    - item_type: preproc_def
      name: OPT_CIPHER
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"cipher"'
    - item_type: preproc_def
      name: OPT_DATA_BLOCK_SIZE
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"data-block-size"'
    - item_type: preproc_def
      name: OPT_DATA_BLOCKS
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"data-blocks"'
    - item_type: preproc_def
      name: OPT_DATA_DEVICE
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"data-device"'
    - item_type: preproc_def
      name: OPT_DEBUG
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"debug"'
    - item_type: preproc_def
      name: OPT_DEBUG_JSON
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"debug-json"'
    - item_type: preproc_def
      name: OPT_DEFERRED
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"deferred"'
    - item_type: preproc_def
      name: OPT_DEVICE_SIZE
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"device-size"'
    - item_type: preproc_def
      name: OPT_DECRYPT
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"decrypt"'
    - item_type: preproc_def
      name: OPT_DISABLE_BLKID
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"disable-blkid"'
    - item_type: preproc_def
      name: OPT_DISABLE_EXTERNAL_TOKENS
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"disable-external-tokens"'
    - item_type: preproc_def
      name: OPT_DISABLE_KEYRING
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"disable-keyring"'
    - item_type: preproc_def
      name: OPT_DISABLE_LOCKS
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"disable-locks"'
    - item_type: preproc_def
      name: OPT_DISABLE_VERACRYPT
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"disable-veracrypt"'
    - item_type: preproc_def
      name: OPT_DUMP_JSON
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"dump-json-metadata"'
    - item_type: preproc_def
      name: OPT_DUMP_MASTER_KEY
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"dump-master-key"'
    - item_type: preproc_def
      name: OPT_DUMP_VOLUME_KEY
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"dump-volume-key"'
    - item_type: preproc_def
      name: OPT_ENCRYPT
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"encrypt"'
    - item_type: preproc_def
      name: OPT_ERROR_AS_CORRUPTION
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"error-as-corruption"'
    - item_type: preproc_def
      name: OPT_EXTERNAL_TOKENS_PATH
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"external-tokens-path"'
    - item_type: preproc_def
      name: OPT_FEC_DEVICE
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"fec-device"'
    - item_type: preproc_def
      name: OPT_FEC_OFFSET
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"fec-offset"'
    - item_type: preproc_def
      name: OPT_FEC_ROOTS
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"fec-roots"'
    - item_type: preproc_def
      name: OPT_FORCE_PASSWORD
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"force-password"'
    - item_type: preproc_def
      name: OPT_FORCE_OFFLINE_REENCRYPT
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"force-offline-reencrypt"'
    - item_type: preproc_def
      name: OPT_FORCE_NO_KEYSLOTS
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"force-no-keyslots"'
    - item_type: preproc_def
      name: OPT_FORMAT
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"format"'
    - item_type: preproc_def
      name: OPT_HASH
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"hash"'
    - item_type: preproc_def
      name: OPT_HASH_BLOCK_SIZE
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"hash-block-size"'
    - item_type: preproc_def
      name: OPT_HASH_OFFSET
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"hash-offset"'
    - item_type: preproc_def
      name: OPT_HEADER
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"header"'
    - item_type: preproc_def
      name: OPT_HEADER_BACKUP_FILE
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"header-backup-file"'
    - item_type: preproc_def
      name: OPT_HOTZONE_SIZE
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"hotzone-size"'
    - item_type: preproc_def
      name: OPT_HW_OPAL
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"hw-opal"'
    - item_type: preproc_def
      name: OPT_HW_OPAL_ONLY
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"hw-opal-only"'
    - item_type: preproc_def
      name: OPT_HW_OPAL_FACTORY_RESET
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"hw-opal-factory-reset"'
    - item_type: preproc_def
      name: OPT_IGNORE_CORRUPTION
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"ignore-corruption"'
    - item_type: preproc_def
      name: OPT_IGNORE_ZERO_BLOCKS
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"ignore-zero-blocks"'
    - item_type: preproc_def
      name: OPT_INIT_ONLY
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"init-only"'
    - item_type: preproc_def
      name: OPT_INTEGRITY
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_BITMAP_MODE
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-bitmap-mode"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_KEY_FILE
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-key-file"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_KEY_SIZE
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-key-size"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_INLINE
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-inline"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_LEGACY_PADDING
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-legacy-padding"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_LEGACY_HMAC
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-legacy-hmac"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_LEGACY_RECALC
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-legacy-recalculate"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_NO_JOURNAL
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-no-journal"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_NO_WIPE
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-no-wipe"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_RECALCULATE
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-recalculate"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_RECALCULATE_RESET
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-recalculate-reset"'
    - item_type: preproc_def
      name: OPT_INTEGRITY_RECOVERY_MODE
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"integrity-recovery-mode"'
    - item_type: preproc_def
      name: OPT_INTERLEAVE_SECTORS
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"interleave-sectors"'
    - item_type: preproc_def
      name: OPT_ITER_TIME
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"iter-time"'
    - item_type: preproc_def
      name: OPT_IV_LARGE_SECTORS
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"iv-large-sectors"'
    - item_type: preproc_def
      name: OPT_JSON_FILE
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"json-file"'
    - item_type: preproc_def
      name: OPT_JOURNAL_COMMIT_TIME
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"journal-commit-time"'
    - item_type: preproc_def
      name: OPT_JOURNAL_CRYPT
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"journal-crypt"'
    - item_type: preproc_def
      name: OPT_JOURNAL_CRYPT_KEY_FILE
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"journal-crypt-key-file"'
    - item_type: preproc_def
      name: OPT_JOURNAL_CRYPT_KEY_SIZE
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"journal-crypt-key-size"'
    - item_type: preproc_def
      name: OPT_JOURNAL_INTEGRITY
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"journal-integrity"'
    - item_type: preproc_def
      name: OPT_JOURNAL_INTEGRITY_KEY_FILE
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"journal-integrity-key-file"'
    - item_type: preproc_def
      name: OPT_JOURNAL_INTEGRITY_KEY_SIZE
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"journal-integrity-key-size"'
    - item_type: preproc_def
      name: OPT_JOURNAL_SIZE
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"journal-size"'
    - item_type: preproc_def
      name: OPT_JOURNAL_WATERMARK
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"journal-watermark"'
    - item_type: preproc_def
      name: OPT_KEEP_KEY
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"keep-key"'
    - item_type: preproc_def
      name: OPT_KEY_DESCRIPTION
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"key-description"'
    - item_type: preproc_def
      name: OPT_KEY_FILE
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"key-file"'
    - item_type: preproc_def
      name: OPT_KEY_SIZE
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"key-size"'
    - item_type: preproc_def
      name: OPT_KEY_SLOT
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"key-slot"'
    - item_type: preproc_def
      name: OPT_KEYFILE_OFFSET
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"keyfile-offset"'
    - item_type: preproc_def
      name: OPT_KEYFILE_SIZE
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"keyfile-size"'
    - item_type: preproc_def
      name: OPT_KEYSLOT_CIPHER
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"keyslot-cipher"'
    - item_type: preproc_def
      name: OPT_KEYSLOT_KEY_SIZE
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"keyslot-key-size"'
    - item_type: preproc_def
      name: OPT_NO_SUPERBLOCK
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"no-superblock"'
    - item_type: preproc_def
      name: OPT_NO_WIPE
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"no-wipe"'
    - item_type: preproc_def
      name: OPT_WIPE
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"wipe"'
    - item_type: preproc_def
      name: OPT_LABEL
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"label"'
    - item_type: preproc_def
      name: OPT_LINK_VK_TO_KEYRING
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"link-vk-to-keyring"'
    - item_type: preproc_def
      name: OPT_LUKS2_KEYSLOTS_SIZE
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"luks2-keyslots-size"'
    - item_type: preproc_def
      name: OPT_LUKS2_METADATA_SIZE
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"luks2-metadata-size"'
    - item_type: preproc_def
      name: OPT_MASTER_KEY_FILE
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"master-key-file"'
    - item_type: preproc_def
      name: OPT_VOLUME_KEY_FILE
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"volume-key-file"'
    - item_type: preproc_def
      name: OPT_VOLUME_KEY_KEYRING
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"volume-key-keyring"'
    - item_type: preproc_def
      name: OPT_NEW
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new"'
    - item_type: preproc_def
      name: OPT_NEW_KEY_DESCRIPTION
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new-key-description"'
    - item_type: preproc_def
      name: OPT_NEW_KEY_SIZE
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new-key-size"'
    - item_type: preproc_def
      name: OPT_NEW_KEY_SLOT
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new-key-slot"'
    - item_type: preproc_def
      name: OPT_NEW_KEYFILE
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new-keyfile"'
    - item_type: preproc_def
      name: OPT_NEW_KEYFILE_OFFSET
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new-keyfile-offset"'
    - item_type: preproc_def
      name: OPT_NEW_KEYFILE_SIZE
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new-keyfile-size"'
    - item_type: preproc_def
      name: OPT_NEW_TOKEN_ID
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new-token-id"'
    - item_type: preproc_def
      name: OPT_NEW_VOLUME_KEY_FILE
      pos:
        line_end: 114
        line_start: 113
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new-volume-key-file"'
    - item_type: preproc_def
      name: OPT_NEW_VOLUME_KEY_KEYRING
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"new-volume-key-keyring"'
    - item_type: preproc_def
      name: OPT_OFFSET
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"offset"'
    - item_type: preproc_def
      name: OPT_PANIC_ON_CORRUPTION
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"panic-on-corruption"'
    - item_type: preproc_def
      name: OPT_PBKDF
      pos:
        line_end: 118
        line_start: 117
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"pbkdf"'
    - item_type: preproc_def
      name: OPT_PBKDF_FORCE_ITERATIONS
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"pbkdf-force-iterations"'
    - item_type: preproc_def
      name: OPT_PBKDF_MEMORY
      pos:
        line_end: 120
        line_start: 119
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"pbkdf-memory"'
    - item_type: preproc_def
      name: OPT_PBKDF_PARALLEL
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"pbkdf-parallel"'
    - item_type: preproc_def
      name: OPT_PERF_HIGH_PRIORITY
      pos:
        line_end: 122
        line_start: 121
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"perf-high_priority"'
    - item_type: preproc_def
      name: OPT_PERF_NO_READ_WORKQUEUE
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"perf-no_read_workqueue"'
    - item_type: preproc_def
      name: OPT_PERF_NO_WRITE_WORKQUEUE
      pos:
        line_end: 124
        line_start: 123
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"perf-no_write_workqueue"'
    - item_type: preproc_def
      name: OPT_PERF_SAME_CPU_CRYPT
      pos:
        line_end: 125
        line_start: 124
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"perf-same_cpu_crypt"'
    - item_type: preproc_def
      name: OPT_PERF_SUBMIT_FROM_CRYPT_CPUS
      pos:
        line_end: 126
        line_start: 125
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"perf-submit_from_crypt_cpus"'
    - item_type: preproc_def
      name: OPT_PERSISTENT
      pos:
        line_end: 127
        line_start: 126
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"persistent"'
    - item_type: preproc_def
      name: OPT_PLUGIN
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"plugin"'
    - item_type: preproc_def
      name: OPT_PRIORITY
      pos:
        line_end: 129
        line_start: 128
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"priority"'
    - item_type: preproc_def
      name: OPT_PROGRESS_JSON
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"progress-json"'
    - item_type: preproc_def
      name: OPT_PROGRESS_FREQUENCY
      pos:
        line_end: 131
        line_start: 130
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"progress-frequency"'
    - item_type: preproc_def
      name: OPT_READONLY
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"readonly"'
    - item_type: preproc_def
      name: OPT_REDUCE_DEVICE_SIZE
      pos:
        line_end: 133
        line_start: 132
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"reduce-device-size"'
    - item_type: preproc_def
      name: OPT_REFRESH
      pos:
        line_end: 134
        line_start: 133
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"refresh"'
    - item_type: preproc_def
      name: OPT_RESILIENCE
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"resilience"'
    - item_type: preproc_def
      name: OPT_RESILIENCE_HASH
      pos:
        line_end: 136
        line_start: 135
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"resilience-hash"'
    - item_type: preproc_def
      name: OPT_RESTART_ON_CORRUPTION
      pos:
        line_end: 137
        line_start: 136
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"restart-on-corruption"'
    - item_type: preproc_def
      name: OPT_RESUME_ONLY
      pos:
        line_end: 138
        line_start: 137
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"resume-only"'
    - item_type: preproc_def
      name: OPT_ROOT_HASH_FILE
      pos:
        line_end: 139
        line_start: 138
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"root-hash-file"'
    - item_type: preproc_def
      name: OPT_ROOT_HASH_SIGNATURE
      pos:
        line_end: 140
        line_start: 139
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"root-hash-signature"'
    - item_type: preproc_def
      name: OPT_SALT
      pos:
        line_end: 141
        line_start: 140
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"salt"'
    - item_type: preproc_def
      name: OPT_SECTOR_SIZE
      pos:
        line_end: 142
        line_start: 141
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"sector-size"'
    - item_type: preproc_def
      name: OPT_SERIALIZE_MEMORY_HARD_PBKDF
      pos:
        line_end: 143
        line_start: 142
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"serialize-memory-hard-pbkdf"'
    - item_type: preproc_def
      name: OPT_SHARED
      pos:
        line_end: 144
        line_start: 143
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"shared"'
    - item_type: preproc_def
      name: OPT_SIZE
      pos:
        line_end: 145
        line_start: 144
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"size"'
    - item_type: preproc_def
      name: OPT_SKIP
      pos:
        line_end: 146
        line_start: 145
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"skip"'
    - item_type: preproc_def
      name: OPT_SUBSYSTEM
      pos:
        line_end: 147
        line_start: 146
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"subsystem"'
    - item_type: preproc_def
      name: OPT_TAG_SIZE
      pos:
        line_end: 148
        line_start: 147
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"tag-size"'
    - item_type: preproc_def
      name: OPT_TCRYPT_BACKUP
      pos:
        line_end: 149
        line_start: 148
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"tcrypt-backup"'
    - item_type: preproc_def
      name: OPT_TCRYPT_HIDDEN
      pos:
        line_end: 150
        line_start: 149
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"tcrypt-hidden"'
    - item_type: preproc_def
      name: OPT_TCRYPT_SYSTEM
      pos:
        line_end: 151
        line_start: 150
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"tcrypt-system"'
    - item_type: preproc_def
      name: OPT_TEST_ARGS
      pos:
        line_end: 152
        line_start: 151
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"test-args"'
    - item_type: preproc_def
      name: OPT_TEST_PASSPHRASE
      pos:
        line_end: 153
        line_start: 152
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"test-passphrase"'
    - item_type: preproc_def
      name: OPT_TIMEOUT
      pos:
        line_end: 154
        line_start: 153
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"timeout"'
    - item_type: preproc_def
      name: OPT_TOKEN_ID
      pos:
        line_end: 155
        line_start: 154
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"token-id"'
    - item_type: preproc_def
      name: OPT_TOKEN_ONLY
      pos:
        line_end: 156
        line_start: 155
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"token-only"'
    - item_type: preproc_def
      name: OPT_TOKEN_REPLACE
      pos:
        line_end: 157
        line_start: 156
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"token-replace"'
    - item_type: preproc_def
      name: OPT_TOKEN_TYPE
      pos:
        line_end: 158
        line_start: 157
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"token-type"'
    - item_type: preproc_def
      name: OPT_TRIES
      pos:
        line_end: 159
        line_start: 158
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"tries"'
    - item_type: preproc_def
      name: OPT_TYPE
      pos:
        line_end: 160
        line_start: 159
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"type"'
    - item_type: preproc_def
      name: OPT_UNBOUND
      pos:
        line_end: 161
        line_start: 160
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"unbound"'
    - item_type: preproc_def
      name: OPT_USE_DIRECTIO
      pos:
        line_end: 162
        line_start: 161
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"use-directio"'
    - item_type: preproc_def
      name: OPT_USE_FSYNC
      pos:
        line_end: 163
        line_start: 162
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"use-fsync"'
    - item_type: preproc_def
      name: OPT_USE_RANDOM
      pos:
        line_end: 164
        line_start: 163
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"use-random"'
    - item_type: preproc_def
      name: OPT_USE_URANDOM
      pos:
        line_end: 165
        line_start: 164
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"use-urandom"'
    - item_type: preproc_def
      name: OPT_USE_TASKLETS
      pos:
        line_end: 166
        line_start: 165
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"use-tasklets"'
    - item_type: preproc_def
      name: OPT_UUID
      pos:
        line_end: 167
        line_start: 166
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"uuid"'
    - item_type: preproc_def
      name: OPT_VERACRYPT
      pos:
        line_end: 168
        line_start: 167
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"veracrypt"'
    - item_type: preproc_def
      name: OPT_VERACRYPT_PIM
      pos:
        line_end: 169
        line_start: 168
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"veracrypt-pim"'
    - item_type: preproc_def
      name: OPT_VERACRYPT_QUERY_PIM
      pos:
        line_end: 170
        line_start: 169
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"veracrypt-query-pim"'
    - item_type: preproc_def
      name: OPT_VERBOSE
      pos:
        line_end: 171
        line_start: 170
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"verbose"'
    - item_type: preproc_def
      name: OPT_VERIFY_PASSPHRASE
      pos:
        line_end: 172
        line_start: 171
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"verify-passphrase"'
    - item_type: preproc_def
      name: OPT_WRITE_LOG
      pos:
        line_end: 173
        line_start: 172
        source_file: /src/cryptsetup/src/utils_arg_names.h
      type_or_value: '"write-log"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/src/integritysetup_arg_list.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/src/cryptsetup_arg_list.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dm_prepare_uuid
  - lookup_holder_dm_name
  - tools_lookup_crypt_device
  - report_partition
  - report_superblock
  - tools_detect_signatures
  - tools_wipe_all_signatures
  - tools_superblock_block_size
  - tools_blkid_supported
  source_file: /src/cryptsetup/src/utils_blockdev.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: UUID_LEN
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/src/utils_blockdev.c
      type_or_value: '37 '
    structs: []
    typedefs: []
    union: []
- function_names:
  - _set_reencryption_flags
  - set_keyslot_params
  - get_active_device_name
  - reencrypt_get_active_name
  - decrypt_verify_and_set_params
  - reencrypt_verify_and_update_params
  - reencrypt_hint_force_offline_reencrypt
  - reencrypt_multi_key_unlock
  - reencrypt_single_key_unlock
  - reencrypt_luks2_load
  - luks2_reencrypt_in_progress
  - load_luks
  - luks2_reencrypt_eligible
  - check_luks_device
  - reencrypt_check_data_sb_block_size
  - reencrypt_check_active_device_sb_block_size
  - reencrypt_is_header_detached
  - encrypt_luks2_init
  - load_luks2_by_name
  - reencrypt_restore_header
  - decrypt_luks2_datashift_init
  - decrypt_luks2_init
  - try_token
  - reencrypt_keyslot_for_unlock
  - reencrypt_keyslot_is_unlocked
  - reencrypt_token_for_unlock
  - reencrypt_get_token_context
  - reencrypt_token_add_for_unlock
  - reencrypt_token_add
  - reencrypt_keyslot_unlocked_by_context
  - reencrypt_keyslot_add_for_unlock
  - reencrypt_token_unlocks_keyslot
  - reencrypt_keyslot_unlocked_by_context_new
  - single_token
  - reencrypt_unlock_keyslot
  - reencrypt_add_token_keyslot
  - reencrypt_add_single_token_keyslots
  - reencrypt_add_token_keyslots_for_unlock
  - reencrypt_add_keyslots_for_unlock
  - reencrypt_unlock_keyslots
  - assign_tokens
  - reencrypt_keyslot_contexts_destroy
  - token_error_unavailable
  - init_token_keyslot_context
  - reencrypt_unlock_keyslots_by_tokens
  - reencrypt_initialize_keyslot_contexts
  - reencrypt_active_keyslots_count
  - reencrypt_add_new_keyslots
  - reencrypt_luks2_init
  - reencrypt_luks2_resume
  - check_broken_luks_signature
  - _encrypt
  - _decrypt
  - _reencrypt
  - reencrypt
  source_file: /src/cryptsetup/src/utils_reencrypt.c
  types:
    enum:
    - enumerators:
      - name: DEVICE_LUKS2
        value: '0'
      - name: DEVICE_LUKS1_UNUSABLE
      - name: DEVICE_LUKS1
      - name: DEVICE_NOT_LUKS
      - name: DEVICE_LUKS2_REENCRYPT
      - name: DEVICE_INVALID
      item_type: enum
      name: device_status_info
      pos:
        line_end: 26
        line_start: 19
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*p_kc'
        type: struct crypt_keyslot_context
      - name: id
        type: int
      item_type: struct
      name: unlocked_token
      pos:
        line_end: 1074
        line_start: 1070
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - fields:
      - name: '*p_kc'
        type: struct crypt_keyslot_context
      - name: id
        type: int
      - name: new_id
        type: int
      item_type: struct
      name: unlocked_keyslot
      pos:
        line_end: 1081
        line_start: 1076
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    - fields:
      - name: ks[16]
        type: struct unlocked_keyslot
      - name: tkns[16]
        type: struct unlocked_token
      - name: '*kc[16]'
        type: struct crypt_keyslot_context
      - name: '*p_old_kc'
        type: struct crypt_keyslot_context
      - name: '*p_new_kc'
        type: struct crypt_keyslot_context
      - name: '*new_kc'
        type: struct crypt_keyslot_context
      - name: vk_generated
        type: bool
      - name: new_key_id
        type: int
      - name: old_key_id
        type: int
      - name: last_ks
        type: unsigned
      - name: last_kc
        type: unsigned
      - name: last_tkn
        type: unsigned
      item_type: struct
      name: keyslot_contexts
      pos:
        line_end: 1106
        line_start: 1083
        source_file: /src/cryptsetup/src/utils_reencrypt.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/src/integritysetup_args.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DUMP_ACTION
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '"dump"'
    - item_type: preproc_def
      name: FORMAT_ACTION
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '"format"'
    - item_type: preproc_def
      name: CLOSE_ACTION
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '"close"'
    - item_type: preproc_def
      name: OPEN_ACTION
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '"open"'
    - item_type: preproc_def
      name: RESIZE_ACTION
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '"resize"'
    - item_type: preproc_def
      name: STATUS_ACTION
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '"status"'
    - item_type: preproc_def
      name: OPT_ALLOW_DISCARDS_ACTIONS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_DEFERRED_ACTIONS
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ CLOSE_ACTION }'
    - item_type: preproc_def
      name: OPT_DEVICE_SIZE_ACTIONS
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ RESIZE_ACTION }'
    - item_type: preproc_def
      name: OPT_DISABLE_BLKID_ACTIONS
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_INTEGRITY_INLINE_ACTIONS
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_INTEGRITY_RECALCULATE_ACTIONS
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_INTERLEAVE_SECTORS_ACTIONS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_JOURNAL_SIZE_ACTIONS
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_NO_WIPE_ACTIONS
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_PROGRESS_JSON_ACTIONS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ FORMAT_ACTION, RESIZE_ACTION }'
    - item_type: preproc_def
      name: OPT_SECTOR_SIZE_ACTIONS
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_SIZE_ACTIONS
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ RESIZE_ACTION }'
    - item_type: preproc_def
      name: OPT_TAG_SIZE_ACTIONS
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_WIPE_ACTIONS
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/cryptsetup/src/integritysetup_args.h
      type_or_value: '{ RESIZE_ACTION }'
    structs: []
    typedefs: []
    union: []
- function_names:
  - tools_cleanup
  - _read_keys
  - _wipe_data_device
  - action_format
  - action_resize
  - action_open
  - action_close
  - action_status
  - action_dump
  - help
  - run_action
  - needs_size_conversion
  - basic_options_cb
  - main
  source_file: /src/cryptsetup/src/integritysetup.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DEFAULT_ALG_NAME
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/cryptsetup/src/integritysetup.c
      type_or_value: '"crc32c"'
    - item_type: preproc_def
      name: PACKAGE_INTEGRITY
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/src/integritysetup.c
      type_or_value: '"integritysetup"'
    structs:
    - fields:
      - name: '*type'
        type: char
      - name: (*handler)(void)
        type: int
      - name: required_action_argc
        type: int
      - name: '*arg_desc'
        type: char
      - name: '*desc'
        type: char
      item_type: struct
      name: action_type
      pos:
        line_end: 552
        line_start: 546
        source_file: /src/cryptsetup/src/integritysetup.c
    typedefs: []
    union: []
- function_names:
  - tools_check_pwquality
  - tools_check_passwdqc
  - tools_check_password
  - read_tty_eol
  - untimed_read
  - timed_read
  - interactive_pass
  - crypt_get_key_tty
  - tools_get_key
  - tools_passphrase_msg
  source_file: /src/cryptsetup/src/utils_password.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - luksType
  - isLUKS1
  - isLUKS2
  - verify_passphrase
  - set_activation_flags
  - set_pbkdf_params
  - set_tries_tty
  - get_adjusted_key_size
  - tools_read_json_file
  - tools_write_json_file
  - luks_init_keyslot_context
  - luks_try_token_unlock
  - luks_init_keyslot_contexts_by_volume_keys
  source_file: /src/cryptsetup/src/utils_luks.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUKS2_MAX_MDA_SIZE
      pos:
        line_end: 160
        line_start: 159
        source_file: /src/cryptsetup/src/utils_luks.c
      type_or_value: '0x400000'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/src/utils_luks.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ARG_SET
  - ARG_STR
  - ARG_INT32
  - ARG_UINT32
  - ARG_INT64
  - ARG_UINT64
  - ARG_SET_TRUE
  - ARG_SET_STR
  - ARG_SET_INT32
  - ARG_SET_UINT32
  - ARG_SET_INT64
  - ARG_SET_UINT64
  - ARG_INIT_ALIAS
  source_file: /src/cryptsetup/src/utils_arg_macros.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - tools_cleanup
  - uuid_or_device_header
  - isLUKS
  - _set_keyslot_encryption_params
  - init_new_keyslot_context
  - action_open_plain
  - action_open_loopaes
  - tcrypt_load
  - action_open_tcrypt
  - tcryptDump_with_volume_key
  - action_tcryptDump
  - fvault2Dump_with_volume_key
  - action_fvault2Dump
  - action_open_fvault2
  - action_close
  - action_resize
  - action_status
  - benchmark_callback
  - action_benchmark_kdf
  - benchmark_cipher_loop
  - action_benchmark
  - reencrypt_metadata_repair
  - luks2_reencrypt_repair
  - action_luksRepair
  - _wipe_data_device
  - strcmp_or_null
  - luksFormat
  - action_luksFormat
  - action_open_luks
  - verify_keyslot
  - action_luksKillSlot
  - action_luksRemoveKey
  - luksAddUnboundKey
  - _ask_for_pin
  - try_keyslot_add
  - action_luksAddKey
  - action_luksChangeKey
  - action_luksConvertKey
  - action_isLuks
  - action_luksUUID
  - luksDump_with_volume_key
  - luksDump_with_unbound_key
  - action_luksDump
  - action_luksSuspend
  - action_luksResume
  - action_luksBackup
  - action_luksRestore
  - _get_device_type
  - action_open
  - opal_erase
  - action_luksErase
  - action_luksConvert
  - _config_priority
  - _config_labels
  - action_luksConfig
  - _token_add
  - _token_remove
  - _token_import
  - _token_export
  - _token_unassign
  - action_token
  - action_reencrypt
  - verify_tcryptdump
  - verify_open
  - verify_close
  - verify_resize
  - verify_reencrypt
  - verify_config
  - verify_format
  - verify_addkey
  - verify_luksDump
  - verify_token
  - help
  - help_args
  - run_action
  - verify_action
  - needs_size_conversion
  - check_key_slot_value
  - basic_options_cb
  - cryptsetup_init_arg_aliases
  - main
  source_file: /src/cryptsetup/src/cryptsetup.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*cipher'
        type: char
      - name: '*mode'
        type: char
      - name: key_size
        type: size_t
      item_type: struct
      name: "bciphers[] = {\n\t\t{ \"aes\",     \"cbc\", 16 },\n\t\t{ \"serpent\",
        \"cbc\", 16 },\n\t\t{ \"twofish\", \"cbc\", 16 },\n\t\t{ \"aes\",     \"cbc\",
        32 },\n\t\t{ \"serpent\", \"cbc\", 32 },\n\t\t{ \"twofish\", \"cbc\", 32 },\n\t\t{
        \"aes\",     \"xts\", 32 },\n\t\t{ \"serpent\", \"xts\", 32 },\n\t\t{ \"twofish\",
        \"xts\", 32 },\n\t\t{ \"aes\",     \"xts\", 64 },\n\t\t{ \"serpent\", \"xts\",
        64 },\n\t\t{ \"twofish\", \"xts\", 64 },\n\t\t{  NULL, NULL, 0 }\n\t}"
      pos:
        line_end: 1134
        line_start: 1130
        source_file: /src/cryptsetup/src/cryptsetup.c
    - fields:
      - name: '*type'
        type: char
      - name: '*hash'
        type: char
      item_type: struct
      name: "bkdfs[] = {\n\t\t{ CRYPT_KDF_PBKDF2,   \"sha1\" },\n\t\t{ CRYPT_KDF_PBKDF2,
        \  \"sha256\" },\n\t\t{ CRYPT_KDF_PBKDF2,   \"sha512\" },\n\t\t{ CRYPT_KDF_PBKDF2,
        \  \"ripemd160\" },\n\t\t{ CRYPT_KDF_PBKDF2,   \"whirlpool\" },\n\t\t{ CRYPT_KDF_ARGON2I,
        \ NULL },\n\t\t{ CRYPT_KDF_ARGON2ID, NULL },\n\t\t{ NULL, NULL }\n\t}"
      pos:
        line_end: 1152
        line_start: 1149
        source_file: /src/cryptsetup/src/cryptsetup.c
    - fields:
      - name: '*type'
        type: char
      - name: (*handler)(void)
        type: int
      - name: '*(*verify)(void)'
        type: char
      - name: required_action_argc
        type: int
      - name: '*arg_desc'
        type: char
      - name: '*desc'
        type: char
      item_type: struct
      name: action_type
      pos:
        line_end: 3479
        line_start: 3472
        source_file: /src/cryptsetup/src/cryptsetup.c
    typedefs: []
    union: []
- function_names:
  - _quiet_log
  - alignment
  - pagesize
  - hdr_device
  - device_check
  - create_empty_header
  - write_log
  - parse_line_log
  - parse_log
  - close_log
  - open_log
  - activate_luks_headers
  - create_new_keyslot
  - create_new_header
  - backup_luks_headers
  - backup_fake_header
  - remove_headers
  - restore_luks_header
  - copy_data_forward
  - copy_data_backward
  - detect_interrupt
  - copy_data
  - initialize_uuid
  - init_passphrase1
  - init_keyfile
  - initialize_passphrase
  - initialize_context
  - destroy_context
  - reencrypt_luks1
  - reencrypt_luks1_in_progress
  source_file: /src/cryptsetup/src/utils_reencrypt_luks1.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NO_UUID
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/src/utils_reencrypt_luks1.c
      type_or_value: '"cafecafe-cafe-cafe-cafe-cafecafeeeee"'
    - item_type: preproc_def
      name: MAX_SLOT
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/src/utils_reencrypt_luks1.c
      type_or_value: '8'
    structs:
    - fields:
      - name: '*device'
        type: char
      - name: '*device_header'
        type: char
      - name: '*device_uuid'
        type: char
      - name: '*type'
        type: char
      - name: device_size
        type: uint64_t
      - name: device_size_new_real
        type: uint64_t
      - name: device_size_org_real
        type: uint64_t
      - name: device_offset
        type: uint64_t
      - name: device_shift
        type: uint64_t
      - name: data_offset
        type: uint64_t
      - name: stained
        type: bool
      - name: in_progress
        type: bool
      - name: reencrypt_direction
        type: enum { FORWARD = 0, BACKWARD = 1 }
      - name: reencrypt_mode
        type: enum { REENCRYPT = 0, ENCRYPT = 1, DECRYPT = 2 }
      - name: header_file_org[PATH_MAX]
        type: char
      - name: header_file_new[PATH_MAX]
        type: char
      - name: log_file[PATH_MAX]
        type: char
      - name: crypt_path_org[PATH_MAX]
        type: char
      - name: crypt_path_new[PATH_MAX]
        type: char
      - name: log_fd
        type: int
      - name: log_buf[SECTOR_SIZE]
        type: char
      - name: p[MAX_SLOT]
        type: "struct {\n\t\tchar *password;\n\t\tsize_t passwordLen;\n\t}"
      - name: keyslot
        type: int
      - name: resume_bytes
        type: uint64_t
      item_type: struct
      name: reenc_ctx
      pos:
        line_end: 55
        line_start: 22
        source_file: /src/cryptsetup/src/utils_reencrypt_luks1.c
    typedefs: []
    union: []
- function_names:
  - tools_parse_vk_description
  - parse_single_vk_and_keyring_description
  - tools_parse_vk_and_keyring_description
  source_file: /src/cryptsetup/src/utils_key_description.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - int_handler
  - tools_signals_blocked
  - set_int_block
  - set_int_handler
  - check_signal
  - tool_log
  - quiet_log
  - _dialog
  - yesDialog
  - noDialog
  - show_status
  - uuid_or_device
  - usage
  - dbg_version_and_cmd
  - translate_errno
  - tools_keyslot_msg
  - tools_token_msg
  - tools_token_error_msg
  - tools_string_to_size
  - tools_is_stdin
  - tools_read_vk
  - tools_write_mk
  - tools_package_version
  - tools_check_newname
  source_file: /src/cryptsetup/src/utils_tools.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - tools_parse_arg_value
  - tools_args_free
  - action_allowed
  - tools_check_args
  source_file: /src/cryptsetup/src/utils_args.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MINUTES
  - SECONDS
  - HOURS
  - DAYS
  - REMAIN_SECONDS
  - REMAIN_MINUTES
  - time_diff
  - tools_clear_line
  - bytes_to_units
  - time_to_human_string
  - log_progress
  - log_progress_final
  - calculate_tdiff
  - tools_time_progress
  - log_progress_json
  - tools_time_progress_json
  - tools_progress
  - tools_get_device_name
  source_file: /src/cryptsetup/src/utils_progress.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MINUTES_90
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/cryptsetup/src/utils_progress.c
      type_or_value: 'UINT64_C(5400000000)   '
    - item_type: preproc_def
      name: HOURS_36
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/cryptsetup/src/utils_progress.c
      type_or_value: 'UINT64_C(129600000000) '
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEFAULT_CIPHER
  - log_dbg
  - log_std
  - log_verbose
  - log_err
  source_file: /src/cryptsetup/src/cryptsetup.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DEFAULT_WIPE_BLOCK
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/cryptsetup/src/cryptsetup.h
      type_or_value: '1048576 '
    - item_type: preproc_def
      name: MAX_ACTIONS
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/src/cryptsetup.h
      type_or_value: '16'
    structs:
    - fields:
      - name: frequency
        type: uint32_t
      - name: start_time
        type: struct timeval
      - name: end_time
        type: struct timeval
      - name: start_offset
        type: uint64_t
      - name: batch_mode
        type: bool
      - name: json_output
        type: bool
      - name: '*interrupt_message'
        type: char
      - name: '*device'
        type: char
      item_type: struct
      name: tools_progress_params
      pos:
        line_end: 88
        line_start: 79
        source_file: /src/cryptsetup/src/cryptsetup.h
    - fields:
      - name: '*name'
        type: char
      - name: set
        type: bool
      - name: type
        type: crypt_arg_type_info
      - name: u
        type: "union {\n\t\tchar *str_value;\n\t\tuint64_t u64_value;\n\t\tuint32_t
          u32_value;\n\t\tint32_t i32_value;\n\t\tint64_t i64_value;\n\t\tunion {\n\t\t\tunsigned
          id;\n\t\t\tstruct tools_arg *ptr;\n\t\t} o;\n\t}"
      - name: '*actions_array[MAX_ACTIONS]'
        type: char
      item_type: struct
      name: tools_arg
      pos:
        line_end: 158
        line_start: 142
        source_file: /src/cryptsetup/src/cryptsetup.h
    - fields:
      - name: verbose
        type: bool
      - name: debug
        type: bool
      item_type: struct
      name: tools_log_params
      pos:
        line_end: 169
        line_start: 166
        source_file: /src/cryptsetup/src/cryptsetup.h
    typedefs: []
    union: []
- function_names:
  - tools_cleanup
  - _prepare_format
  - action_format
  - _activate
  - action_open
  - action_verify
  - action_close
  - action_status
  - action_dump
  - help
  - run_action
  - basic_options_cb
  - main
  source_file: /src/cryptsetup/src/veritysetup.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PACKAGE_VERITY
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/cryptsetup/src/veritysetup.c
      type_or_value: '"veritysetup"'
    structs:
    - fields:
      - name: '*type'
        type: char
      - name: (*handler)(void)
        type: int
      - name: required_action_argc
        type: int
      - name: '*arg_desc'
        type: char
      - name: '*desc'
        type: char
      item_type: struct
      name: action_type
      pos:
        line_end: 486
        line_start: 480
        source_file: /src/cryptsetup/src/veritysetup.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/src/cryptsetup_args.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ADDKEY_ACTION
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksAddKey"'
    - item_type: preproc_def
      name: BITLKDUMP_ACTION
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"bitlkDump"'
    - item_type: preproc_def
      name: BENCHMARK_ACTION
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"benchmark"'
    - item_type: preproc_def
      name: CHANGEKEY_ACTION
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksChangeKey"'
    - item_type: preproc_def
      name: CLOSE_ACTION
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"close"'
    - item_type: preproc_def
      name: CONVERTKEY_ACTION
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksConvertKey"'
    - item_type: preproc_def
      name: CONFIG_ACTION
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"config"'
    - item_type: preproc_def
      name: CONVERT_ACTION
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"convert"'
    - item_type: preproc_def
      name: ERASE_ACTION
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"erase"'
    - item_type: preproc_def
      name: FORMAT_ACTION
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksFormat"'
    - item_type: preproc_def
      name: FVAULT2DUMP_ACTION
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"fvault2Dump"'
    - item_type: preproc_def
      name: HEADERBACKUP_ACTION
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksHeaderBackup"'
    - item_type: preproc_def
      name: HEADERRESTORE_ACTION
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksHeaderRestore"'
    - item_type: preproc_def
      name: ISLUKS_ACTION
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"isLuks"'
    - item_type: preproc_def
      name: KILLKEY_ACTION
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksKillSlot"'
    - item_type: preproc_def
      name: LUKSDUMP_ACTION
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksDump"'
    - item_type: preproc_def
      name: OPEN_ACTION
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"open"'
    - item_type: preproc_def
      name: REENCRYPT_ACTION
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"reencrypt"'
    - item_type: preproc_def
      name: REMOVEKEY_ACTION
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksRemoveKey"'
    - item_type: preproc_def
      name: REPAIR_ACTION
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"repair"'
    - item_type: preproc_def
      name: RESIZE_ACTION
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"resize"'
    - item_type: preproc_def
      name: RESUME_ACTION
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksResume"'
    - item_type: preproc_def
      name: STATUS_ACTION
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"status"'
    - item_type: preproc_def
      name: SUSPEND_ACTION
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksSuspend"'
    - item_type: preproc_def
      name: TCRYPTDUMP_ACTION
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"tcryptDump"'
    - item_type: preproc_def
      name: TOKEN_ACTION
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"token"'
    - item_type: preproc_def
      name: UUID_ACTION
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '"luksUUID"'
    - item_type: preproc_def
      name: OPT_ALIGN_PAYLOAD_ACTIONS
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_ALLOW_DISCARDS_ACTIONS
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_DEFERRED_ACTIONS
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ CLOSE_ACTION }'
    - item_type: preproc_def
      name: OPT_DEVICE_SIZE_ACTIONS
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, RESIZE_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_DISABLE_BLKID_ACTIONS
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_DISABLE_VERACRYPT_ACTIONS
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, TCRYPTDUMP_ACTION }'
    - item_type: preproc_def
      name: OPT_ERASE_ACTIONS
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ ERASE_ACTION }'
    - item_type: preproc_def
      name: OPT_EXTERNAL_TOKENS_PATH_ACTIONS
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ RESIZE_ACTION, OPEN_ACTION, ADDKEY_ACTION, LUKSDUMP_ACTION,
        RESUME_ACTION, TOKEN_ACTION }'
    - item_type: preproc_def
      name: OPT_FORCE_OFFLINE_REENCRYPT_ACTIONS
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_FORCE_NO_KEYSLOTS_ACTIONS
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_HOTZONE_SIZE_ACTIONS
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_HW_OPAL_ACTIONS
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_HW_OPAL_ONLY_ACTIONS
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: OPT_HW_OPAL_ACTIONS
    - item_type: preproc_def
      name: OPT_INTEGRITY_ACTIONS
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_INTEGRITY_INLINE_ACTIONS
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_INTEGRITY_NO_WIPE_ACTIONS
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_ITER_TIME_ACTIONS
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ BENCHMARK_ACTION, FORMAT_ACTION, ADDKEY_ACTION, CHANGEKEY_ACTION,
        CONVERTKEY_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_IV_LARGE_SECTORS_ACTIONS
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_KEEP_KEY_ACTIONS
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_KEY_DESCRIPTION_ACTIONS
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ TOKEN_ACTION, LUKSDUMP_ACTION, FORMAT_ACTION, RESIZE_ACTION,
        OPEN_ACTION, RESUME_ACTION, ADDKEY_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_KEY_SIZE_ACTIONS
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, BENCHMARK_ACTION, FORMAT_ACTION, REENCRYPT_ACTION,
        ADDKEY_ACTION }'
    - item_type: preproc_def
      name: OPT_KEY_SLOT_ACTIONS
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, REENCRYPT_ACTION, CONFIG_ACTION, FORMAT_ACTION,
        ADDKEY_ACTION, CHANGEKEY_ACTION, CONVERTKEY_ACTION, LUKSDUMP_ACTION, TOKEN_ACTION,
        RESUME_ACTION }'
    - item_type: preproc_def
      name: OPT_KEYSLOT_CIPHER_ACTIONS
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION, REENCRYPT_ACTION, ADDKEY_ACTION, CHANGEKEY_ACTION,
        CONVERTKEY_ACTION }'
    - item_type: preproc_def
      name: OPT_KEYSLOT_KEY_SIZE_ACTIONS
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: OPT_KEYSLOT_CIPHER_ACTIONS
    - item_type: preproc_def
      name: OPT_LABEL_ACTIONS
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ CONFIG_ACTION, FORMAT_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_LINK_VK_TO_KEYRING_ACTIONS
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, RESUME_ACTION }'
    - item_type: preproc_def
      name: OPT_LUKS2_KEYSLOTS_SIZE_ACTIONS
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ REENCRYPT_ACTION, FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_LUKS2_METADATA_SIZE_ACTIONS
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ REENCRYPT_ACTION, FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_NEW_KEYFILE_ACTIONS
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ ADDKEY_ACTION }'
    - item_type: preproc_def
      name: OPT_NEW_KEY_DESCRIPTION_ACTIONS
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ ADDKEY_ACTION }'
    - item_type: preproc_def
      name: OPT_NEW_KEY_SLOT_ACTIONS
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ ADDKEY_ACTION }'
    - item_type: preproc_def
      name: OPT_NEW_KEY_SIZE_ACTIONS
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_NEW_TOKEN_ID_ACTIONS
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ ADDKEY_ACTION }'
    - item_type: preproc_def
      name: OPT_NEW_VOLUME_KEY_FILE_ACTIONS
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_NEW_VOLUME_KEY_KEYRING_ACTIONS
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_OFFSET_ACTIONS
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, REENCRYPT_ACTION, FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_PBKDF_ACTIONS
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ BENCHMARK_ACTION, FORMAT_ACTION, ADDKEY_ACTION, CHANGEKEY_ACTION,
        CONVERTKEY_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_PBKDF_FORCE_ITERATIONS_ACTIONS
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION, ADDKEY_ACTION, CHANGEKEY_ACTION, CONVERTKEY_ACTION,
        REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_PERSISTENT_ACTIONS
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_PRIORITY_ACTIONS
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ CONFIG_ACTION }'
    - item_type: preproc_def
      name: OPT_PROGRESS_JSON_ACTIONS
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_REFRESH_ACTIONS
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_SECTOR_SIZE_ACTIONS
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, REENCRYPT_ACTION, FORMAT_ACTION }'
    - item_type: preproc_def
      name: OPT_SERIALIZE_MEMORY_HARD_PBKDF_ACTIONS
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_SHARED_ACTIONS
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_SIZE_ACTIONS
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, RESIZE_ACTION }'
    - item_type: preproc_def
      name: OPT_SKIP_ACTIONS
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_SUBSYSTEM_ACTIONS
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ CONFIG_ACTION, FORMAT_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_TCRYPT_BACKUP_ACTIONS
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, TCRYPTDUMP_ACTION }'
    - item_type: preproc_def
      name: OPT_TCRYPT_HIDDEN_ACTIONS
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, TCRYPTDUMP_ACTION }'
    - item_type: preproc_def
      name: OPT_TCRYPT_SYSTEM_ACTIONS
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, TCRYPTDUMP_ACTION }'
    - item_type: preproc_def
      name: OPT_TEST_PASSPHRASE_ACTIONS
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_TOKEN_REPLACE_ACTIONS
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ TOKEN_ACTION }'
    - item_type: preproc_def
      name: OPT_UNBOUND_ACTIONS
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ ADDKEY_ACTION, LUKSDUMP_ACTION, OPEN_ACTION, TOKEN_ACTION
        }'
    - item_type: preproc_def
      name: OPT_USE_RANDOM_ACTIONS
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_USE_URANDOM_ACTIONS
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_UUID_ACTIONS
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ FORMAT_ACTION, UUID_ACTION, REENCRYPT_ACTION }'
    - item_type: preproc_def
      name: OPT_VERACRYPT_PIM_ACTIONS
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, TCRYPTDUMP_ACTION }'
    - item_type: preproc_def
      name: OPT_VERACRYPT_QUERY_PIM_ACTIONS
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/cryptsetup/src/cryptsetup_args.h
      type_or_value: '{ OPEN_ACTION, TCRYPTDUMP_ACTION }'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/src/veritysetup_args.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLOSE_ACTION
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '"close"'
    - item_type: preproc_def
      name: DUMP_ACTION
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '"dump"'
    - item_type: preproc_def
      name: FORMAT_ACTION
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '"format"'
    - item_type: preproc_def
      name: OPEN_ACTION
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '"open"'
    - item_type: preproc_def
      name: STATUS_ACTION
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '"status"'
    - item_type: preproc_def
      name: VERIFY_ACTION
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '"verify"'
    - item_type: preproc_def
      name: OPT_DEFERRED_ACTIONS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ CLOSE_ACTION }'
    - item_type: preproc_def
      name: OPT_IGNORE_CORRUPTION_ACTIONS
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_IGNORE_ZERO_BLOCKS_ACTIONS
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_PANIC_ON_CORRUPTION_ACTIONS
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_RESTART_ON_CORRUPTION_ACTIONS
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_ERROR_AS_CORRUPTION_ACTIONS
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_ROOT_HASH_FILE_ACTIONS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ FORMAT_ACTION, OPEN_ACTION, VERIFY_ACTION }'
    - item_type: preproc_def
      name: OPT_ROOT_HASH_SIGNATURE_ACTIONS
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_USE_TASKLETS_ACTIONS
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    - item_type: preproc_def
      name: OPT_SHARED_ACTIONS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/src/veritysetup_args.h
      type_or_value: '{ OPEN_ACTION }'
    structs: []
    typedefs: []
    union: []
- function_names:
  - bitcount
  - chisquared_bits
  - chisquared_bytes
  - run_analysis
  - luks_check_keyslots
  source_file: /src/cryptsetup/src/utils_keyslot_check.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/docs/doxygen_index.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - simple_syslog_wrapper
  - main
  source_file: /src/cryptsetup/docs/examples/crypt_log_usage.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - format_and_add_keyslots
  - activate_and_check_status
  - handle_active_device
  - main
  source_file: /src/cryptsetup/docs/examples/crypt_luks_usage.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ent_samp
  - print_address
  - hexdump_line
  - hexdump_sector
  - check_keyslots
  - main
  source_file: /src/cryptsetup/misc/keyslot_checker/chk_luks_keyslots.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - check
  - main
  source_file: /src/cryptsetup/misc/dict_search/crypt_dict.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_LEN
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/misc/dict_search/crypt_dict.c
      type_or_value: '512'
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_alloc_volume_key
  - crypt_alloc_volume_key_by_safe_alloc
  - crypt_volume_key_pass_safe_alloc
  - crypt_volume_key_get_key
  - crypt_volume_key_length
  - crypt_volume_key_set_description
  - crypt_volume_key_set_description_by_name
  - crypt_volume_key_description
  - crypt_volume_key_kernel_key_type
  - crypt_volume_key_set_id
  - crypt_volume_key_get_id
  - crypt_volume_key_by_id
  - crypt_volume_key_add_next
  - crypt_volume_key_next
  - crypt_free_volume_key
  - crypt_generate_volume_key
  - crypt_volume_key_is_set
  - crypt_volume_key_upload_kernel_key
  - crypt_volume_key_drop_kernel_key
  - crypt_volume_key_drop_uploaded_kernel_key
  source_file: /src/cryptsetup/lib/volumekey.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: id
        type: int
      - name: keylength
        type: size_t
      - name: '*key_description'
        type: char
      - name: keyring_key_type
        type: key_type_t
      - name: key_id
        type: key_serial_t
      - name: '*next'
        type: struct volume_key
      - name: '*key'
        type: char
      item_type: struct
      name: volume_key
      pos:
        line_end: 23
        line_start: 15
        source_file: /src/cryptsetup/lib/volumekey.c
    typedefs: []
    union: []
- function_names:
  - get_luks2_key_by_passphrase
  - get_luks1_volume_key_by_passphrase
  - get_luks2_volume_key_by_passphrase
  - get_bitlk_volume_key_by_passphrase
  - get_fvault2_volume_key_by_passphrase
  - get_passphrase_by_passphrase
  - get_passphrase_by_keyfile
  - get_luks2_key_by_keyfile
  - get_luks2_volume_key_by_keyfile
  - get_luks1_volume_key_by_keyfile
  - get_bitlk_volume_key_by_keyfile
  - get_fvault2_volume_key_by_keyfile
  - get_key_by_key
  - get_volume_key_by_key
  - get_generic_volume_key_by_key
  - get_bitlk_volume_key_by_key
  - get_fvault2_volume_key_by_key
  - get_generic_signed_key_by_key
  - get_luks2_key_by_token
  - get_luks2_volume_key_by_token
  - get_passphrase_by_token
  - get_passphrase_by_keyring
  - get_luks2_key_by_keyring
  - get_luks2_volume_key_by_keyring
  - get_luks1_volume_key_by_keyring
  - get_key_by_vk_in_keyring
  - get_volume_key_by_vk_in_keyring
  - crypt_keyslot_context_init_common
  - keyring_context_free
  - keyring_get_key_size
  - crypt_keyslot_context_init_by_keyring_internal
  - key_context_free
  - key_get_key_size
  - crypt_keyslot_context_init_by_key_internal
  - signed_key_context_free
  - crypt_keyslot_context_init_by_signed_key_internal
  - crypt_keyslot_context_init_by_passphrase_internal
  - keyfile_context_free
  - crypt_keyslot_context_init_by_keyfile_internal
  - token_context_free
  - crypt_keyslot_context_init_by_token_internal
  - vk_in_keyring_context_free
  - crypt_keyslot_context_destroy_internal
  - crypt_keyslot_context_free
  - _crypt_keyslot_context_init_by_passphrase
  - CRYPT_SYMBOL_EXPORT_NEW
  - CRYPT_SYMBOL_EXPORT_OLD
  - _crypt_keyslot_context_init_by_keyfile
  - CRYPT_SYMBOL_EXPORT_NEW
  - CRYPT_SYMBOL_EXPORT_OLD
  - _crypt_keyslot_context_init_by_token
  - CRYPT_SYMBOL_EXPORT_NEW
  - CRYPT_SYMBOL_EXPORT_OLD
  - _crypt_keyslot_context_init_by_volume_key
  - CRYPT_SYMBOL_EXPORT_NEW
  - CRYPT_SYMBOL_EXPORT_OLD
  - _crypt_keyslot_context_init_by_signed_key
  - CRYPT_SYMBOL_EXPORT_NEW
  - CRYPT_SYMBOL_EXPORT_OLD
  - _crypt_keyslot_context_init_by_keyring
  - CRYPT_SYMBOL_EXPORT_NEW
  - CRYPT_SYMBOL_EXPORT_OLD
  - _crypt_keyslot_context_init_by_vk_in_keyring
  - CRYPT_SYMBOL_EXPORT_NEW
  - CRYPT_SYMBOL_EXPORT_OLD
  - crypt_keyslot_context_get_error
  - crypt_keyslot_context_set_pin
  - crypt_keyslot_context_get_type
  - keyslot_context_type_string
  source_file: /src/cryptsetup/lib/keyslot_context.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_storage_backend_init
  - crypt_storage_dmcrypt_init
  - crypt_storage_wrapper_init
  - crypt_storage_wrapper_read
  - crypt_storage_wrapper_read_decrypt
  - crypt_storage_wrapper_decrypt
  - crypt_storage_wrapper_write
  - crypt_storage_wrapper_encrypt_write
  - crypt_storage_wrapper_destroy
  - crypt_storage_wrapper_datasync
  - crypt_storage_wrapper_get_type
  source_file: /src/cryptsetup/lib/utils_storage_wrappers.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: crypt_storage_wrapper_type
      - name: dev_fd
        type: int
      - name: block_size
        type: int
      - name: mem_alignment
        type: size_t
      - name: data_offset
        type: uint64_t
      - name: u
        type: "union {\n\tstruct {\n\t\tstruct crypt_storage *s;\n\t\tuint64_t iv_start;\n\t}
          cb;\n\tstruct {\n\t\tint dmcrypt_fd;\n\t\tchar name[PATH_MAX];\n\t} dm;\n\t}"
      item_type: struct
      name: crypt_storage_wrapper
      pos:
        line_end: 36
        line_start: 20
        source_file: /src/cryptsetup/lib/utils_storage_wrappers.c
    typedefs: []
    union: []
- function_names:
  - log_dbg
  - log_std
  - log_verbose
  - log_err
  - compact_version
  - crypt_zalloc
  - uint64_mult_overflow
  source_file: /src/cryptsetup/lib/internal.h
  types:
    enum:
    - enumerators:
      - name: DEV_OK
        value: '0'
      - name: DEV_EXCL
        value: '1'
      item_type: enum
      name: devcheck
      pos:
        line_end: 135
        line_start: 135
        source_file: /src/cryptsetup/lib/internal.h
    preproc_defs:
    - item_type: preproc_def
      name: LOG_MAX_LEN
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/cryptsetup/lib/internal.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: MAX_DM_DEPS
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/lib/internal.h
      type_or_value: '32'
    - item_type: preproc_def
      name: CRYPT_SUBDEV
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/cryptsetup/lib/internal.h
      type_or_value: '"SUBDEV" '
    - item_type: preproc_def
      name: CRYPT_LUKS2_HW_OPAL
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/lib/internal.h
      type_or_value: '"LUKS2-OPAL" '
    - item_type: preproc_def
      name: O_CLOEXEC
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/lib/internal.h
      type_or_value: '0'
    - item_type: preproc_def
      name: KEY_NOT_VERIFIED
      pos:
        line_end: 285
        line_start: 284
        source_file: /src/cryptsetup/lib/internal.h
      type_or_value: '-2'
    - item_type: preproc_def
      name: KEY_EXTERNAL_VERIFICATION
      pos:
        line_end: 286
        line_start: 285
        source_file: /src/cryptsetup/lib/internal.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: KEY_VERIFIED
      pos:
        line_end: 287
        line_start: 286
        source_file: /src/cryptsetup/lib/internal.h
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names:
  - _CRYPT_SYMVER
  - _CRYPT_SYMVER
  - _CRYPT_FUNC
  - CRYPT_SYMBOL_EXPORT_OLD
  - CRYPT_SYMBOL_EXPORT_NEW
  - CRYPT_SYMBOL_EXPORT_OLD
  - CRYPT_SYMBOL_EXPORT_NEW
  source_file: /src/cryptsetup/lib/libcryptsetup_symver.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - _
  - N_
  - N_
  - _
  - N_
  - ngettext
  source_file: /src/cryptsetup/lib/nls.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOCALEDIR
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/cryptsetup/lib/nls.h
      type_or_value: '"/usr/share/locale"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/utils_crypt.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_CIPHER_LEN
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/lib/utils_crypt.h
      type_or_value: '32'
    - item_type: preproc_def
      name: MAX_CIPHER_LEN_STR
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/utils_crypt.h
      type_or_value: '"31"'
    - item_type: preproc_def
      name: MAX_KEYFILES
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/lib/utils_crypt.h
      type_or_value: '32'
    - item_type: preproc_def
      name: MAX_KEYRING_LINKS
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/lib/utils_crypt.h
      type_or_value: '2'
    - item_type: preproc_def
      name: MAX_VK_IN_KEYRING
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/utils_crypt.h
      type_or_value: '2'
    - item_type: preproc_def
      name: MAX_CAPI_ONE_LEN
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/utils_crypt.h
      type_or_value: 2 * MAX_CIPHER_LEN
    - item_type: preproc_def
      name: MAX_CAPI_ONE_LEN_STR
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/utils_crypt.h
      type_or_value: '"63"  '
    - item_type: preproc_def
      name: MAX_CAPI_LEN
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/utils_crypt.h
      type_or_value: '144   '
    - item_type: preproc_def
      name: MAX_INTEGRITY_LEN
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/utils_crypt.h
      type_or_value: '64'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/utils_keyring.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: key_serial_t
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/cryptsetup/lib/utils_keyring.h
      type: int32_t
    union: []
- function_names:
  - _get_urandom
  - _get_random_progress
  - _get_random
  - crypt_random_init
  - crypt_random_get
  - crypt_random_exit
  - crypt_random_default_key_rng
  source_file: /src/cryptsetup/lib/random.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: URANDOM_DEVICE
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/random.c
      type_or_value: '"/dev/urandom"'
    - item_type: preproc_def
      name: RANDOM_DEVICE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/random.c
      type_or_value: '"/dev/random"'
    - item_type: preproc_def
      name: RANDOM_DEVICE_CHUNK
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/random.c
      type_or_value: '8'
    - item_type: preproc_def
      name: RANDOM_DEVICE_TIMEOUT
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/lib/random.c
      type_or_value: '5'
    structs: []
    typedefs: []
    union: []
- function_names:
  - act2dmflags
  - single_segment
  source_file: /src/cryptsetup/lib/utils_dm.h
  types:
    enum:
    - enumerators:
      - name: TARGET_EMPTY
        value: '0'
      - name: TARGET_QUERY
      - name: TARGET_SET
      item_type: enum
      name: tdirection
      pos:
        line_end: 71
        line_start: 71
        source_file: /src/cryptsetup/lib/utils_dm.h
    preproc_defs:
    - item_type: preproc_def
      name: DM_RESUME_PRIVATE
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 4) '
    - item_type: preproc_def
      name: DM_SUSPEND_SKIP_LOCKFS
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 5)
    - item_type: preproc_def
      name: DM_SUSPEND_WIPE_KEY
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 6)
    - item_type: preproc_def
      name: DM_SUSPEND_NOFLUSH
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 7)
    - item_type: preproc_def
      name: DM_KEY_WIPE_SUPPORTED
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 0) '
    - item_type: preproc_def
      name: DM_LMK_SUPPORTED
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 1) '
    - item_type: preproc_def
      name: DM_SECURE_SUPPORTED
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 2) '
    - item_type: preproc_def
      name: DM_PLAIN64_SUPPORTED
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 3) '
    - item_type: preproc_def
      name: DM_DISCARDS_SUPPORTED
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 4) '
    - item_type: preproc_def
      name: DM_VERITY_SUPPORTED
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 5) '
    - item_type: preproc_def
      name: DM_TCW_SUPPORTED
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 6) '
    - item_type: preproc_def
      name: DM_SAME_CPU_CRYPT_SUPPORTED
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 7) '
    - item_type: preproc_def
      name: DM_SUBMIT_FROM_CRYPT_CPUS_SUPPORTED
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 8) '
    - item_type: preproc_def
      name: DM_VERITY_ON_CORRUPTION_SUPPORTED
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 9) '
    - item_type: preproc_def
      name: DM_VERITY_FEC_SUPPORTED
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 10) '
    - item_type: preproc_def
      name: DM_KERNEL_KEYRING_SUPPORTED
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 11) '
    - item_type: preproc_def
      name: DM_INTEGRITY_SUPPORTED
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 12) '
    - item_type: preproc_def
      name: DM_SECTOR_SIZE_SUPPORTED
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 13) '
    - item_type: preproc_def
      name: DM_CAPI_STRING_SUPPORTED
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 14) '
    - item_type: preproc_def
      name: DM_DEFERRED_SUPPORTED
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 15) '
    - item_type: preproc_def
      name: DM_INTEGRITY_RECALC_SUPPORTED
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 16) '
    - item_type: preproc_def
      name: DM_INTEGRITY_BITMAP_SUPPORTED
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 17) '
    - item_type: preproc_def
      name: DM_GET_TARGET_VERSION_SUPPORTED
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 18) '
    - item_type: preproc_def
      name: DM_INTEGRITY_FIX_PADDING_SUPPORTED
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 19) '
    - item_type: preproc_def
      name: DM_BITLK_EBOIV_SUPPORTED
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 20) '
    - item_type: preproc_def
      name: DM_BITLK_ELEPHANT_SUPPORTED
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 21) '
    - item_type: preproc_def
      name: DM_VERITY_SIGNATURE_SUPPORTED
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 22) '
    - item_type: preproc_def
      name: DM_INTEGRITY_DISCARDS_SUPPORTED
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 23) '
    - item_type: preproc_def
      name: DM_INTEGRITY_RESIZE_SUPPORTED
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 23) '
    - item_type: preproc_def
      name: DM_VERITY_PANIC_CORRUPTION_SUPPORTED
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 24) '
    - item_type: preproc_def
      name: DM_CRYPT_NO_WORKQUEUE_SUPPORTED
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 25) '
    - item_type: preproc_def
      name: DM_INTEGRITY_FIX_HMAC_SUPPORTED
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 26) '
    - item_type: preproc_def
      name: DM_INTEGRITY_RESET_RECALC_SUPPORTED
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 27) '
    - item_type: preproc_def
      name: DM_VERITY_TASKLETS_SUPPORTED
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 28) '
    - item_type: preproc_def
      name: DM_CRYPT_HIGH_PRIORITY_SUPPORTED
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 29) '
    - item_type: preproc_def
      name: DM_CRYPT_INTEGRITY_KEY_SIZE_OPT_SUPPORTED
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 30) '
    - item_type: preproc_def
      name: DM_VERITY_ERROR_AS_CORRUPTION_SUPPORTED
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 31) '
    - item_type: preproc_def
      name: DM_INTEGRITY_INLINE_MODE_SUPPORTED
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: '(UINT64_C(1) << 32) '
    - item_type: preproc_def
      name: DM_ACTIVE_DEVICE
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 0)
    - item_type: preproc_def
      name: DM_ACTIVE_UUID
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 1)
    - item_type: preproc_def
      name: DM_ACTIVE_HOLDERS
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 2)
    - item_type: preproc_def
      name: DM_ACTIVE_CRYPT_CIPHER
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 3)
    - item_type: preproc_def
      name: DM_ACTIVE_CRYPT_KEYSIZE
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 4)
    - item_type: preproc_def
      name: DM_ACTIVE_CRYPT_KEY
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 5)
    - item_type: preproc_def
      name: DM_ACTIVE_VERITY_ROOT_HASH
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 6)
    - item_type: preproc_def
      name: DM_ACTIVE_VERITY_HASH_DEVICE
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 7)
    - item_type: preproc_def
      name: DM_ACTIVE_VERITY_PARAMS
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 8)
    - item_type: preproc_def
      name: DM_ACTIVE_INTEGRITY_PARAMS
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 9)
    - item_type: preproc_def
      name: DM_ACTIVE_JOURNAL_CRYPT_KEY
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 10)
    - item_type: preproc_def
      name: DM_ACTIVE_JOURNAL_CRYPT_KEYSIZE
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 11)
    - item_type: preproc_def
      name: DM_ACTIVE_JOURNAL_MAC_KEY
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 12)
    - item_type: preproc_def
      name: DM_ACTIVE_JOURNAL_MAC_KEYSIZE
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/cryptsetup/lib/utils_dm.h
      type_or_value: (UINT64_C(1) << 13)
    structs:
    - fields:
      - name: type
        type: dm_target_type
      - name: direction
        type: enum tdirection
      - name: offset
        type: uint64_t
      - name: size
        type: uint64_t
      - name: '*data_device'
        type: struct device
      - name: u
        type: "union {\n\tstruct {\n\t\tconst char *cipher;\n\t\tconst char *integrity;\n\n\t\t/*
          Active key for device */\n\t\tstruct volume_key *vk;\n\n\t\t/* struct crypt_active_device
          */\n\t\tuint64_t offset;\t/* offset in sectors */\n\t\tuint64_t iv_offset;\t/*
          IV initialisation sector */\n\t\tuint32_t tag_size;\t/* additional on-disk
          tag size */\n\t\tuint32_t sector_size;\t/* encryption sector size */\n\t\tuint32_t
          integrity_key_size; /* explicit integrity key size (HMAC), 0 for default
          */\n\t} crypt;\n\tstruct {\n\t\tstruct device *hash_device;\n\t\tstruct
          device *fec_device;\n\n\t\tconst char *root_hash;\n\t\tuint32_t root_hash_size;\n\t\tconst
          char *root_hash_sig_key_desc;\n\n\t\tuint64_t hash_offset;\t/* hash offset
          in blocks (not header) */\n\t\tuint64_t fec_offset;\t/* FEC offset in blocks
          (not header) */\n\t\tuint64_t fec_blocks;\t/* FEC blocks covering data +
          hash + padding (foreign metadata)*/\n\t\tstruct crypt_params_verity *vp;\n\t}
          verity;\n\tstruct {\n\t\tuint64_t journal_size;\n\t\tuint32_t journal_watermark;\n\t\tuint32_t
          journal_commit_time;\n\t\tuint32_t interleave_sectors;\n\t\tuint32_t tag_size;\n\t\tuint64_t
          offset;\t/* offset in sectors */\n\t\tuint32_t sector_size;\t/* integrity
          sector size */\n\t\tuint32_t buffer_sectors;\n\n\t\tconst char *integrity;\n\t\t/*
          Active key for device */\n\t\tstruct volume_key *vk;\n\n\t\tconst char *journal_integrity;\n\t\tstruct
          volume_key *journal_integrity_key;\n\n\t\tconst char *journal_crypt;\n\t\tstruct
          volume_key *journal_crypt_key;\n\n\t\tstruct device *meta_device;\n\n\t\tbool
          fix_padding;\n\t\tbool fix_hmac;\n\t\tbool legacy_recalc;\n\t} integrity;\n\tstruct
          {\n\t\tuint64_t offset;\n\t} linear;\n\tstruct {\n\t} zero;\n\t}"
      - name: '*params'
        type: char
      - name: '*next'
        type: struct dm_target
      item_type: struct
      name: dm_target
      pos:
        line_end: 159
        line_start: 90
        source_file: /src/cryptsetup/lib/utils_dm.h
    - fields:
      - name: size
        type: uint64_t
      - name: flags
        type: uint32_t
      - name: '*uuid'
        type: char
      - name: holders
        type: unsigned
      - name: segment
        type: struct dm_target
      item_type: struct
      name: crypt_dm_active_device
      pos:
        line_end: 169
        line_start: 161
        source_file: /src/cryptsetup/lib/utils_dm.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/keyslot_context.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: KC_VERSION_BASIC
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type_or_value: UINT8_C(1)
    - item_type: preproc_def
      name: KC_VERSION_SELF_CONTAINED
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type_or_value: UINT8_C(2)
    structs:
    - fields:
      - name: type
        type: int
      - name: version
        type: uint8_t
      - name: u
        type: "union {\n\tstruct {\n\t\tconst char *passphrase;\n\t\tsize_t passphrase_size;\n\t}
          p;\n\tstruct {\n\t\tconst char *keyfile;\n\t\tchar *i_keyfile;\n\t\tuint64_t
          keyfile_offset;\n\t\tsize_t keyfile_size;\n\t} kf;\n\tstruct {\n\t\tint
          id;\n\t\tconst char *type;\n\t\tchar *i_type;\n\t\tconst char *pin;\n\t\tchar
          *i_pin;\n\t\tsize_t pin_size;\n\t\tvoid *usrptr;\n\t} t;\n\tstruct {\n\t\tconst
          char *volume_key;\n\t\tsize_t volume_key_size;\n\t\tstruct volume_key *i_vk;\n\t}
          k;\n\tstruct {\n\t\tconst char *volume_key;\n\t\tsize_t volume_key_size;\n\t\tstruct
          volume_key *i_vk;\n\t\tconst char *signature;\n\t\tsize_t signature_size;\n\t\tstruct
          volume_key *i_vk_sig;\n\t} ks;\n\tstruct {\n\t\tconst char *key_description;\n\t\tchar
          *i_key_description;\n\t} kr;\n\tstruct {\n\t\tconst char *key_description;\n\t\tchar
          *i_key_description;\n\t\tsize_t i_key_size;\n\t} vk_kr;\n\t}"
      - name: error
        type: int
      - name: '*i_passphrase'
        type: char
      - name: i_passphrase_size
        type: size_t
      - name: get_luks2_key
        type: keyslot_context_get_key
      - name: get_luks1_volume_key
        type: keyslot_context_get_volume_key
      - name: get_luks2_volume_key
        type: keyslot_context_get_volume_key
      - name: get_plain_volume_key
        type: keyslot_context_get_generic_volume_key
      - name: get_bitlk_volume_key
        type: keyslot_context_get_bitlk_volume_key
      - name: get_fvault2_volume_key
        type: keyslot_context_get_fvault2_volume_key
      - name: get_verity_volume_key
        type: keyslot_context_get_generic_signed_key
      - name: get_integrity_volume_key
        type: keyslot_context_get_generic_volume_key
      - name: get_passphrase
        type: keyslot_context_get_passphrase
      - name: get_key_size
        type: keyslot_context_get_key_size
      - name: context_free
        type: keyslot_context_free
      item_type: struct
      name: crypt_keyslot_context
      pos:
        line_end: 144
        line_start: 74
        source_file: /src/cryptsetup/lib/keyslot_context.h
    typedefs:
    - item_type: typedef
      name: "(*keyslot_context_get_key) (\n\tstruct crypt_device *cd,\n\tstruct crypt_keyslot_context
        *kc,\n\tint keyslot,\n\tint segment,\n\tstruct volume_key **r_vk)"
      pos:
        line_end: 24
        line_start: 19
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type: int
    - item_type: typedef
      name: "(*keyslot_context_get_volume_key) (\n\tstruct crypt_device *cd,\n\tstruct
        crypt_keyslot_context *kc,\n\tint keyslot,\n\tstruct volume_key **r_vk)"
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type: int
    - item_type: typedef
      name: "(*keyslot_context_get_generic_volume_key) (\n\tstruct crypt_device *cd,\n\tstruct
        crypt_keyslot_context *kc,\n\tstruct volume_key **r_vk)"
      pos:
        line_end: 35
        line_start: 32
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type: int
    - item_type: typedef
      name: "(*keyslot_context_get_bitlk_volume_key) (\n\tstruct crypt_device *cd,\n\tstruct
        crypt_keyslot_context *kc,\n\tconst struct bitlk_metadata *params,\n\tstruct
        volume_key **r_vk)"
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type: int
    - item_type: typedef
      name: "(*keyslot_context_get_fvault2_volume_key) (\n\tstruct crypt_device *cd,\n\tstruct
        crypt_keyslot_context *kc,\n\tconst struct fvault2_params *params,\n\tstruct
        volume_key **r_vk)"
      pos:
        line_end: 47
        line_start: 43
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type: int
    - item_type: typedef
      name: "(*keyslot_context_get_generic_signed_key) (\n\tstruct crypt_device *cd,\n\tstruct
        crypt_keyslot_context *kc,\n\tstruct volume_key **r_vk,\n\tstruct volume_key
        **r_signature)"
      pos:
        line_end: 54
        line_start: 50
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type: int
    - item_type: typedef
      name: "(*keyslot_context_get_passphrase) (\n\tstruct crypt_device *cd,\n\tstruct
        crypt_keyslot_context *kc,\n\tconst char **r_passphrase,\n\tsize_t *r_passphrase_size)"
      pos:
        line_end: 60
        line_start: 56
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type: int
    - item_type: typedef
      name: "(*keyslot_context_free) (\n\tstruct crypt_keyslot_context *kc)"
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type: void
    - item_type: typedef
      name: "(*keyslot_context_get_key_size) (\n\tstruct crypt_device *cd,\n\tstruct
        crypt_keyslot_context *kc,\n\tsize_t *r_key_size)"
      pos:
        line_end: 68
        line_start: 65
        source_file: /src/cryptsetup/lib/keyslot_context.h
      type: int
    union: []
- function_names:
  - be16toh
  - be32toh
  - be64toh
  - bswap_16
  - bswap_32
  - bswap_64
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - swab16
  - swab32
  - swab64
  - cpu_to_le16
  - cpu_to_le32
  - cpu_to_le64
  - cpu_to_be16
  - cpu_to_be32
  - cpu_to_be64
  - le16_to_cpu
  - le32_to_cpu
  - le64_to_cpu
  - be16_to_cpu
  - be32_to_cpu
  - be64_to_cpu
  - setbit
  - clrbit
  - isset
  - isclr
  source_file: /src/cryptsetup/lib/bitops.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NBBY
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/cryptsetup/lib/bitops.h
      type_or_value: CHAR_BIT
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/utils_blkid.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/utils_io.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_getpagesize
  - crypt_cpusonline
  - crypt_getphysmemory_kb
  - crypt_getphysmemoryfree_kb
  - crypt_swapavailable
  - crypt_process_priority
  - keyfile_seek
  - crypt_keyfile_device_read
  - crypt_keyfile_read
  - kernel_version
  - crypt_string_in
  - crypt_strcmp
  source_file: /src/cryptsetup/lib/utils.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_get_pbkdf_type_params
  - pbkdf_adjusted_phys_memory_kb
  - verify_pbkdf_params
  - init_pbkdf_type
  - crypt_set_pbkdf_type
  - crypt_get_pbkdf_type
  - crypt_get_pbkdf_default
  - crypt_set_iteration_time
  source_file: /src/cryptsetup/lib/utils_pbkdf.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - __lookup_dev
  - lookup_dev_old
  - crypt_lookup_dev
  - _read_uint64
  - _sysfs_get_uint64
  - _path_get_uint64
  - _sysfs_get_string
  - crypt_dev_get_partition_number
  - crypt_dev_is_rotational
  - crypt_dev_is_dax
  - crypt_dev_is_zoned
  - crypt_dev_is_nop_dif
  - crypt_dev_is_partition
  - crypt_dev_partition_offset
  - crypt_get_partition_device
  - crypt_get_base_device
  - lookup_by_disk_id
  - lookup_by_sysfs_uuid_field
  source_file: /src/cryptsetup/lib/utils_devpath.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_set_debug_level
  - crypt_get_debug_level
  - crypt_log
  - crypt_logf
  - mdata_device_path
  - data_device_path
  - crypt_metadata_device
  - crypt_data_device
  - crypt_get_metadata_size_bytes
  - crypt_get_keyslots_size_bytes
  - crypt_get_data_offset_sectors
  - crypt_opal_supported
  - init_crypto
  - process_key
  - isPLAIN
  - isLUKS1
  - isLUKS2
  - isLUKS
  - isLOOPAES
  - isVERITY
  - isTCRYPT
  - isINTEGRITY
  - isBITLK
  - isFVAULT2
  - _onlyLUKS
  - onlyLUKSunrestricted
  - onlyLUKSnoRequirements
  - onlyLUKS
  - _onlyLUKS2
  - onlyLUKS2unrestricted
  - onlyLUKS2
  - onlyLUKS2reencrypt
  - crypt_set_null_type
  - crypt_reset_null_type
  - keyslot_verify_or_find_empty
  - PLAIN_activate
  - crypt_confirm
  - crypt_set_log_callback
  - crypt_set_confirm_callback
  - crypt_get_dir
  - crypt_init
  - crypt_check_data_device_size
  - _crypt_set_data_device
  - crypt_set_data_device
  - crypt_init_data_device
  - crypt_free_type
  - if
  - if
  - if
  - if
  - if
  - if
  - crypt_get_pbkdf
  - _crypt_load_luks2
  - _luks2_rollback
  - _crypt_load_luks
  - _crypt_load_tcrypt
  - _crypt_load_verity
  - _crypt_load_integrity
  - _crypt_load_bitlk
  - _crypt_load_fvault2
  - crypt_load
  - _init_by_name_crypt_none
  - LUKS_UUID
  - _init_by_name_crypt
  - _init_by_name_verity
  - _init_by_name_integrity
  - crypt_init_by_name_and_header
  - crypt_init_by_name
  - _crypt_format_plain
  - _crypt_format_luks1
  - LUKS2_check_encryption_params
  - LUKS2_check_encryption_sector
  - _crypt_format_luks2
  - opal_topology_alignment
  - crypt_format_luks2_opal
  - _crypt_format_loopaes
  - _crypt_format_verity
  - _crypt_format_integrity
  - crypt_format_inline
  - _crypt_format
  - CRYPT_SYMBOL_EXPORT_NEW
  - CRYPT_SYMBOL_EXPORT_OLD
  - crypt_repair
  - _compare_volume_keys
  - _compare_volume_keys_luks2
  - _compare_device_types
  - _compare_crypt_devices
  - _compare_integrity_devices
  - crypt_compare_dm_devices
  - _reload_device
  - _reload_device_with_integrity
  - crypt_resize
  - crypt_set_uuid
  - crypt_set_label
  - crypt_get_label
  - crypt_get_subsystem
  - crypt_header_backup
  - crypt_header_restore
  - crypt_header_is_detached
  - crypt_free
  - crypt_suspend
  - resume_luks1_by_volume_key
  - crypt_unlink_key_from_custom_keyring
  - crypt_single_volume_key_load_in_custom_keyring
  - crypt_volume_key_load_in_custom_keyring
  - resume_luks2_by_volume_key
  - resume_by_volume_key
  - crypt_resume_by_keyslot_context
  - crypt_resume_by_passphrase
  - crypt_resume_by_keyfile_device_offset
  - crypt_resume_by_keyfile
  - crypt_resume_by_keyfile_offset
  - crypt_resume_by_volume_key
  - crypt_resume_by_token_pin
  - crypt_keyslot_add_by_passphrase
  - crypt_keyslot_change_by_passphrase
  - crypt_keyslot_add_by_keyfile_device_offset
  - crypt_keyslot_add_by_keyfile
  - crypt_keyslot_add_by_keyfile_offset
  - crypt_keyslot_add_by_volume_key
  - crypt_keyslot_destroy
  - _check_header_data_overlap
  - check_devices
  - _create_device_with_integrity
  - kernel_keyring_support
  - dmcrypt_keyring_bug
  - create_or_reload_device
  - create_or_reload_device_with_integrity
  - load_all_keys
  - _activate_reencrypt_device_by_vk
  - _activate_luks2_by_volume_key
  - _activate_luks2_by_volume_key
  - _activate_loopaes
  - _activate_check_status
  - _verify_reencrypt_keys
  - _verify_key
  - _activate_by_volume_key
  - crypt_activate_by_keyslot_context
  - crypt_activate_by_passphrase
  - crypt_activate_by_keyfile_device_offset
  - crypt_activate_by_keyfile
  - crypt_activate_by_keyfile_offset
  - crypt_activate_by_volume_key
  - crypt_activate_by_signed_key
  - crypt_deactivate_by_name
  - crypt_deactivate
  - crypt_get_active_device
  - crypt_get_active_integrity_failures
  - crypt_volume_key_get
  - crypt_volume_key_get_by_keyslot_context
  - crypt_volume_key_verify
  - crypt_set_rng_type
  - crypt_get_rng_type
  - crypt_memory_lock
  - crypt_set_compatibility
  - crypt_get_compatibility
  - crypt_status
  - _luks_dump
  - crypt_dump
  - crypt_dump_json
  - crypt_get_cipher_spec
  - crypt_get_cipher
  - crypt_get_cipher_mode
  - crypt_get_integrity
  - crypt_get_integrity_key_size
  - crypt_get_integrity_tag_size
  - crypt_get_sector_size
  - crypt_get_uuid
  - crypt_get_device_name
  - crypt_get_metadata_device_name
  - crypt_get_volume_key_size
  - crypt_get_old_volume_key_size
  - crypt_get_hw_encryption_key_size
  - crypt_keyslot_get_key_size
  - crypt_keyslot_set_encryption
  - crypt_keyslot_get_encryption
  - crypt_keyslot_get_pbkdf
  - crypt_set_data_offset
  - crypt_set_metadata_size
  - crypt_get_metadata_size
  - crypt_get_data_offset
  - crypt_get_iv_offset
  - crypt_keyslot_status
  - crypt_keyslot_max
  - crypt_keyslot_area
  - crypt_keyslot_get_priority
  - crypt_keyslot_set_priority
  - crypt_get_type
  - crypt_get_default_type
  - crypt_get_hw_encryption_type
  - crypt_get_verity_info
  - crypt_get_verity_repaired
  - crypt_get_integrity_info
  - crypt_convert
  - crypt_get_hdr
  - crypt_get_luks2_reencrypt
  - crypt_set_luks2_reencrypt
  - crypt_activate_by_token_pin
  - crypt_activate_by_token
  - crypt_token_json_get
  - crypt_token_json_set
  - crypt_token_status
  - crypt_token_max
  - crypt_token_luks2_keyring_get
  - crypt_token_luks2_keyring_set
  - crypt_token_assign_keyslot
  - crypt_token_unassign_keyslot
  - crypt_token_is_assigned
  - crypt_metadata_locking_enabled
  - crypt_metadata_locking
  - crypt_persistent_flags_set
  - crypt_persistent_flags_get
  - update_volume_key_segment_digest
  - verify_and_update_segment_digest
  - luks2_keyslot_add_by_verified_volume_key
  - luks2_keyslot_add_by_volume_key
  - luks1_keyslot_add_by_volume_key
  - keyslot_add_by_key
  - crypt_keyslot_add_by_key
  - crypt_keyslot_add_by_keyslot_context
  - crypt_use_keyring_for_vk
  - crypt_volume_key_keyring
  - crypt_volume_key_load_in_keyring
  - crypt_keyring_get_user_key
  - crypt_keyring_get_key_by_name
  - crypt_keyring_get_keysize_by_name
  - crypt_key_in_keyring
  - crypt_set_key_in_keyring
  - crypt_unlink_key_from_thread_keyring
  - crypt_unlink_key_by_description_from_thread_keyring
  - crypt_set_keyring_to_link
  - crypt_drop_uploaded_keyring_key
  - crypt_activate_by_keyring
  - crypt_serialize_lock
  - crypt_serialize_unlock
  - crypt_reencrypt_status
  - libcryptsetup_exit
  source_file: /src/cryptsetup/lib/setup.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CRYPT_CD_UNRESTRICTED
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/lib/setup.c
      type_or_value: (1 << 0)
    - item_type: preproc_def
      name: CRYPT_CD_QUIET
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/lib/setup.c
      type_or_value: (1 << 1)
    structs:
    - fields:
      - name: '*type'
        type: char
      - name: '*device'
        type: struct device
      - name: '*metadata_device'
        type: struct device
      - name: '*volume_key'
        type: struct volume_key
      - name: rng_type
        type: int
      - name: compatibility
        type: uint32_t
      - name: pbkdf
        type: struct crypt_pbkdf_type
      - name: key_in_keyring
        type: unsigned
      - name: link_vk_to_keyring
        type: bool
      - name: keyring_to_link_vk
        type: int32_t
      - name: '*user_key_name1'
        type: char
      - name: '*user_key_name2'
        type: char
      - name: keyring_key_type
        type: key_type_t
      - name: data_offset
        type: uint64_t
      - name: metadata_size
        type: uint64_t
      - name: keyslots_size
        type: uint64_t
      - name: memory_hard_pbkdf_lock_enabled
        type: bool
      - name: '*pbkdf_memory_hard_lock'
        type: struct crypt_lock_handle
      - name: u
        type: "union {\n\tstruct { /* used in CRYPT_LUKS1 */\n\t\tstruct luks_phdr
          hdr;\n\t\tchar *cipher_spec;\n\t} luks1;\n\tstruct { /* used in CRYPT_LUKS2
          */\n\t\tstruct luks2_hdr hdr;\n\t\tchar cipher[MAX_CIPHER_LEN];\t  /* only
          for compatibility */\n\t\tchar cipher_mode[MAX_CIPHER_LEN]; /* only for
          compatibility */\n\t\tchar *keyslot_cipher;\n\t\tunsigned int keyslot_key_size;\n\t\tstruct
          luks2_reencrypt *rh;\n\t} luks2;\n\tstruct { /* used in CRYPT_PLAIN */\n\t\tstruct
          crypt_params_plain hdr;\n\t\tchar *cipher_spec;\n\t\tchar *cipher;\n\t\tconst
          char *cipher_mode;\n\t\tunsigned int key_size;\n\t} plain;\n\tstruct { /*
          used in CRYPT_LOOPAES */\n\t\tstruct crypt_params_loopaes hdr;\n\t\tchar
          *cipher_spec;\n\t\tchar *cipher;\n\t\tconst char *cipher_mode;\n\t\tunsigned
          int key_size;\n\t} loopaes;\n\tstruct { /* used in CRYPT_VERITY */\n\t\tstruct
          crypt_params_verity hdr;\n\t\tconst char *root_hash;\n\t\tunsigned int root_hash_size;\n\t\tchar
          *uuid;\n\t\tstruct device *fec_device;\n\t} verity;\n\tstruct { /* used
          in CRYPT_TCRYPT */\n\t\tstruct crypt_params_tcrypt params;\n\t\tstruct tcrypt_phdr
          hdr;\n\t} tcrypt;\n\tstruct { /* used in CRYPT_INTEGRITY */\n\t\tstruct
          crypt_params_integrity params;\n\t\tstruct volume_key *journal_mac_key;\n\t\tstruct
          volume_key *journal_crypt_key;\n\t\tuint32_t sb_flags;\n\t} integrity;\n\tstruct
          { /* used in CRYPT_BITLK */\n\t\tstruct bitlk_metadata params;\n\t\tchar
          *cipher_spec;\n\t} bitlk;\n\tstruct { /* used in CRYPT_FVAULT2 */\n\t\tstruct
          fvault2_params params;\n\t} fvault2;\n\tstruct { /* used if initialized
          without header by name */\n\t\tchar *active_name;\n\t\t/* buffers, must
          refresh from kernel on every query */\n\t\tchar cipher_spec[MAX_CIPHER_LEN*2+1];\n\t\tchar
          cipher[MAX_CIPHER_LEN];\n\t\tchar integrity_spec[MAX_INTEGRITY_LEN];\n\t\tconst
          char *cipher_mode;\n\t\tunsigned int key_size;\n\t\tuint32_t sector_size;\n\t}
          none;\n\t}"
      - name: (*log)(int level, const char *msg, void *usrptr)
        type: void
      - name: '*log_usrptr'
        type: void
      - name: (*confirm)(const char *msg, void *usrptr)
        type: int
      - name: '*confirm_usrptr'
        type: void
      item_type: struct
      name: crypt_device
      pos:
        line_end: 130
        line_start: 34
        source_file: /src/cryptsetup/lib/setup.c
    typedefs: []
    union: []
- function_names:
  - dm_task_secure_data
  - _dm_task_set_cookie
  - _dm_udev_wait
  - _dm_use_udev
  - set_dm_error
  - _dm_satisfies_version
  - _dm_set_crypt_compat
  - _dm_set_verity_compat
  - _dm_set_integrity_compat
  - _dm_set_zero_compat
  - _dm_check_target
  - _dm_check_versions
  - dm_flags
  - dm_backend_init
  - dm_backend_exit
  - dm_init_context
  - dm_exit_context
  - dm_device_path
  - dm_device_name
  - int_log10
  - cipher_dm2c
  - _uf
  - get_dm_crypt_params
  - get_dm_verity_params
  - get_dm_integrity_params
  - get_dm_linear_params
  - get_dm_zero_params
  - _dm_remove
  - _dm_simple
  - _error_device
  - dm_error_device
  - dm_clear_device
  - dm_remove_device
  - dm_prepare_uuid
  - lookup_dm_dev_by_uuid
  - _add_dm_targets
  - _destroy_dm_targets_params
  - _create_dm_targets_params
  - device_disappeared
  - dm_table_devices_disappeared
  - _dm_create_device
  - _dm_resume_device
  - _dm_reload_device
  - crypt_free_verity_params
  - _dm_target_free_query_path
  - _dm_target_erase
  - dm_targets_free
  - dm_targets_allocate
  - check_retry
  - dm_create_device
  - dm_reload_device
  - dm_status_dmi
  - dm_status_device
  - dm_status_suspended
  - _dm_status_verity_ok
  - dm_status_verity_ok
  - dm_status_verity_repaired
  - dm_status_integrity_failures
  - _dm_target_query_crypt
  - _dm_target_query_verity
  - _dm_target_query_integrity
  - _dm_target_query_linear
  - _dm_target_query_error
  - _dm_target_query_zero
  - dm_target_query
  - _dm_query_device
  - dm_query_device
  - _process_deps
  - dm_device_deps
  - _dm_message
  - dm_suspend_device
  - dm_resume_device
  - dm_resume_and_reinstate_key
  - dm_cancel_deferred_removal
  - dm_get_dir
  - dm_get_iname
  - dm_get_active_iname
  - dm_is_dm_device
  - dm_is_dm_kernel_name
  - dm_uuid_cmp
  - dm_uuid_integrity_cmp
  - dm_uuid_type_cmp
  - dm_crypt_target_set
  - dm_verity_target_set
  - dm_integrity_target_set
  - dm_linear_target_set
  - dm_zero_target_set
  source_file: /src/cryptsetup/lib/libdevmapper.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DM_CRYPT_TARGET
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: '"crypt"'
    - item_type: preproc_def
      name: DM_VERITY_TARGET
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: '"verity"'
    - item_type: preproc_def
      name: DM_INTEGRITY_TARGET
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: '"integrity"'
    - item_type: preproc_def
      name: DM_LINEAR_TARGET
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: '"linear"'
    - item_type: preproc_def
      name: DM_ERROR_TARGET
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: '"error"'
    - item_type: preproc_def
      name: DM_ZERO_TARGET
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: '"zero"'
    - item_type: preproc_def
      name: RETRY_COUNT
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: '5'
    - item_type: preproc_def
      name: CRYPT_TEMP_UDEV_FLAGS
      pos:
        line_end: 53
        line_start: 50
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: "DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG | \\\n\t\t\t\tDM_UDEV_DISABLE_DISK_RULES_FLAG
        | \\\n\t\t\t\tDM_UDEV_DISABLE_OTHER_RULES_FLAG"
    - item_type: preproc_def
      name: _dm_task_set_cookie
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: dm_task_set_cookie
    - item_type: preproc_def
      name: _dm_udev_wait
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: dm_udev_wait
    - item_type: preproc_def
      name: CRYPT_TEMP_UDEV_FLAGS
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: '0'
    - item_type: preproc_def
      name: UUID_LEN
      pos:
        line_end: 1157
        line_start: 1156
        source_file: /src/cryptsetup/lib/libdevmapper.c
      type_or_value: '37 '
    structs: []
    typedefs: []
    union: []
- function_names:
  - hash
  - crypt_plain_hash
  source_file: /src/cryptsetup/lib/crypt_plain.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PLAIN_HASH_LEN_MAX
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/cryptsetup/lib/crypt_plain.c
      type_or_value: '256'
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_loop_get_device_old
  - crypt_loop_get_device
  - crypt_loop_attach
  - crypt_loop_detach
  - crypt_loop_resize
  - _ioctl_backing_file
  - _sysfs_backing_file
  - crypt_loop_backing_file
  - crypt_loop_device
  source_file: /src/cryptsetup/lib/utils_loop.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOOP_DEV_MAJOR
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/utils_loop.c
      type_or_value: '7'
    - item_type: preproc_def
      name: LO_FLAGS_AUTOCLEAR
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/lib/utils_loop.c
      type_or_value: '4'
    - item_type: preproc_def
      name: LOOP_CTL_GET_FREE
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/lib/utils_loop.c
      type_or_value: '0x4C82'
    - item_type: preproc_def
      name: LOOP_SET_CAPACITY
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/cryptsetup/lib/utils_loop.c
      type_or_value: '0x4C07'
    - item_type: preproc_def
      name: LOOP_SET_BLOCK_SIZE
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/cryptsetup/lib/utils_loop.c
      type_or_value: '0x4C09'
    - item_type: preproc_def
      name: LOOP_CONFIGURE
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/lib/utils_loop.c
      type_or_value: '0x4C0A'
    structs:
    - fields:
      - name: fd
        type: __u32
      - name: block_size
        type: __u32
      - name: info
        type: struct loop_info64
      - name: __reserved[8]
        type: __u64
      item_type: struct
      name: loop_config
      pos:
        line_end: 51
        line_start: 46
        source_file: /src/cryptsetup/lib/utils_loop.c
    typedefs: []
    union: []
- function_names:
  - wipe_zeroout
  - wipeSpecial
  - crypt_wipe_special
  - wipe_block
  - crypt_wipe_device
  - crypt_wipe
  - crypt_wipe_hw_opal
  source_file: /src/cryptsetup/lib/utils_wipe.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BLKZEROOUT
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/utils_wipe.c
      type_or_value: _IO(0x12,127)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/utils_storage_wrappers.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DISABLE_USPACE
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/lib/utils_storage_wrappers.h
      type_or_value: (1 << 0)
    - item_type: preproc_def
      name: DISABLE_KCAPI
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/utils_storage_wrappers.h
      type_or_value: (1 << 1)
    - item_type: preproc_def
      name: DISABLE_DMCRYPT
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/utils_storage_wrappers.h
      type_or_value: (1 << 2)
    - item_type: preproc_def
      name: OPEN_READONLY
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/utils_storage_wrappers.h
      type_or_value: (1 << 3)
    - item_type: preproc_def
      name: LARGE_IV
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/utils_storage_wrappers.h
      type_or_value: (1 << 4)
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_getpagesize
  - blk_set_chains_for_wipes
  - blk_set_chains_for_full_print
  - blk_set_chains_for_superblocks
  - blk_set_chains_for_fast_detection
  - blk_init_by_path
  - blk_init_by_fd
  - blk_superblocks_luks
  - blk_superblocks_filter_luks
  - blk_superblocks_only_luks
  - blk_probe
  - blk_safeprobe
  - blk_is_partition
  - blk_is_superblock
  - blk_get_partition_type
  - blk_get_superblock_type
  - blk_free
  - blk_step_back
  - blk_do_wipe
  - blk_supported
  - blk_get_block_size
  - blk_set_chains_for_wipes
  - blk_set_chains_for_full_print
  - blk_set_chains_for_superblocks
  - blk_set_chains_for_fast_detection
  - blk_init_by_path
  - blk_init_by_fd
  - blk_superblocks_filter_luks
  - blk_superblocks_only_luks
  - blk_probe
  - blk_safeprobe
  - blk_is_partition
  - blk_is_superblock
  - blk_get_partition_type
  - blk_get_superblock_type
  - blk_free
  - blk_do_wipe
  - blk_supported
  - blk_get_block_size
  source_file: /src/cryptsetup/lib/utils_blkid.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BLKID_SUBLKS_BADCSUM
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/utils_blkid.c
      type_or_value: '0'
    structs:
    - fields:
      - name: fd
        type: int
      - name: pr
        type: blkid_probe
      item_type: struct
      name: blkid_handle
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/cryptsetup/lib/utils_blkid.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/libcryptsetup.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CRYPT_LOG_NORMAL
      pos:
        line_end: 174
        line_start: 173
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '0'
    - item_type: preproc_def
      name: CRYPT_LOG_ERROR
      pos:
        line_end: 176
        line_start: 175
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '1'
    - item_type: preproc_def
      name: CRYPT_LOG_VERBOSE
      pos:
        line_end: 178
        line_start: 177
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '2'
    - item_type: preproc_def
      name: CRYPT_LOG_DEBUG
      pos:
        line_end: 180
        line_start: 179
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: CRYPT_LOG_DEBUG_JSON
      pos:
        line_end: 182
        line_start: 181
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '-2'
    - item_type: preproc_def
      name: CRYPT_RNG_URANDOM
      pos:
        line_end: 226
        line_start: 225
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '0'
    - item_type: preproc_def
      name: CRYPT_RNG_RANDOM
      pos:
        line_end: 228
        line_start: 227
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '1'
    - item_type: preproc_def
      name: CRYPT_PBKDF_ITER_TIME_SET
      pos:
        line_end: 261
        line_start: 260
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_PBKDF_NO_BENCHMARK
      pos:
        line_end: 263
        line_start: 262
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 1)
    - item_type: preproc_def
      name: CRYPT_KDF_PBKDF2
      pos:
        line_end: 266
        line_start: 265
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"pbkdf2"'
    - item_type: preproc_def
      name: CRYPT_KDF_ARGON2I
      pos:
        line_end: 268
        line_start: 267
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"argon2i"'
    - item_type: preproc_def
      name: CRYPT_KDF_ARGON2ID
      pos:
        line_end: 270
        line_start: 269
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"argon2id"'
    - item_type: preproc_def
      name: CRYPT_PLAIN
      pos:
        line_end: 400
        line_start: 399
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"PLAIN"'
    - item_type: preproc_def
      name: CRYPT_LUKS1
      pos:
        line_end: 402
        line_start: 401
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"LUKS1"'
    - item_type: preproc_def
      name: CRYPT_LUKS2
      pos:
        line_end: 404
        line_start: 403
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"LUKS2"'
    - item_type: preproc_def
      name: CRYPT_LOOPAES
      pos:
        line_end: 406
        line_start: 405
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"LOOPAES"'
    - item_type: preproc_def
      name: CRYPT_VERITY
      pos:
        line_end: 408
        line_start: 407
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"VERITY"'
    - item_type: preproc_def
      name: CRYPT_TCRYPT
      pos:
        line_end: 410
        line_start: 409
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"TCRYPT"'
    - item_type: preproc_def
      name: CRYPT_INTEGRITY
      pos:
        line_end: 412
        line_start: 411
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"INTEGRITY"'
    - item_type: preproc_def
      name: CRYPT_BITLK
      pos:
        line_end: 414
        line_start: 413
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"BITLK"'
    - item_type: preproc_def
      name: CRYPT_FVAULT2
      pos:
        line_end: 416
        line_start: 415
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"FVAULT2"'
    - item_type: preproc_def
      name: CRYPT_LUKS
      pos:
        line_end: 419
        line_start: 418
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: 'NULL'
    - item_type: preproc_def
      name: CRYPT_SW_ONLY
      pos:
        line_end: 443
        line_start: 442
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(0)
    - item_type: preproc_def
      name: CRYPT_OPAL_HW_ONLY
      pos:
        line_end: 445
        line_start: 444
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(1)
    - item_type: preproc_def
      name: CRYPT_SW_AND_OPAL_HW
      pos:
        line_end: 447
        line_start: 446
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(2)
    - item_type: preproc_def
      name: CRYPT_VERITY_NO_HEADER
      pos:
        line_end: 530
        line_start: 529
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_VERITY_CHECK_HASH
      pos:
        line_end: 532
        line_start: 531
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 1)
    - item_type: preproc_def
      name: CRYPT_VERITY_CREATE_HASH
      pos:
        line_end: 534
        line_start: 533
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 2)
    - item_type: preproc_def
      name: CRYPT_VERITY_ROOT_HASH_SIGNATURE
      pos:
        line_end: 536
        line_start: 535
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 3)
    - item_type: preproc_def
      name: CRYPT_TCRYPT_LEGACY_MODES
      pos:
        line_end: 558
        line_start: 557
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_TCRYPT_HIDDEN_HEADER
      pos:
        line_end: 560
        line_start: 559
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 1)
    - item_type: preproc_def
      name: CRYPT_TCRYPT_BACKUP_HEADER
      pos:
        line_end: 562
        line_start: 561
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 2)
    - item_type: preproc_def
      name: CRYPT_TCRYPT_SYSTEM_HEADER
      pos:
        line_end: 564
        line_start: 563
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 3)
    - item_type: preproc_def
      name: CRYPT_TCRYPT_VERA_MODES
      pos:
        line_end: 569
        line_start: 568
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 4)
    - item_type: preproc_def
      name: CRYPT_COMPAT_LEGACY_INTEGRITY_PADDING
      pos:
        line_end: 745
        line_start: 744
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_COMPAT_LEGACY_INTEGRITY_HMAC
      pos:
        line_end: 747
        line_start: 746
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 1)
    - item_type: preproc_def
      name: CRYPT_COMPAT_LEGACY_INTEGRITY_RECALC
      pos:
        line_end: 749
        line_start: 748
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 2)
    - item_type: preproc_def
      name: CRYPT_ANY_SLOT
      pos:
        line_end: 1044
        line_start: 1043
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: CRYPT_VOLUME_KEY_NO_SEGMENT
      pos:
        line_end: 1159
        line_start: 1158
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_VOLUME_KEY_SET
      pos:
        line_end: 1162
        line_start: 1161
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 1)
    - item_type: preproc_def
      name: CRYPT_VOLUME_KEY_DIGEST_REUSE
      pos:
        line_end: 1165
        line_start: 1164
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 2)
    - item_type: preproc_def
      name: CRYPT_KC_TYPE_PASSPHRASE
      pos:
        line_end: 1381
        line_start: 1380
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(1)
    - item_type: preproc_def
      name: CRYPT_KC_TYPE_KEYFILE
      pos:
        line_end: 1383
        line_start: 1382
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(2)
    - item_type: preproc_def
      name: CRYPT_KC_TYPE_TOKEN
      pos:
        line_end: 1385
        line_start: 1384
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(3)
    - item_type: preproc_def
      name: CRYPT_KC_TYPE_KEY
      pos:
        line_end: 1387
        line_start: 1386
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(4)
    - item_type: preproc_def
      name: CRYPT_KC_TYPE_KEYRING
      pos:
        line_end: 1391
        line_start: 1390
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(5)
    - item_type: preproc_def
      name: CRYPT_KC_TYPE_VK_KEYRING
      pos:
        line_end: 1395
        line_start: 1394
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(6)
    - item_type: preproc_def
      name: CRYPT_KC_TYPE_SIGNED_KEY
      pos:
        line_end: 1397
        line_start: 1396
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: INT16_C(7)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_READONLY
      pos:
        line_end: 1475
        line_start: 1474
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_NO_UUID
      pos:
        line_end: 1477
        line_start: 1476
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 1)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_SHARED
      pos:
        line_end: 1479
        line_start: 1478
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 2)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_ALLOW_DISCARDS
      pos:
        line_end: 1481
        line_start: 1480
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 3)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_PRIVATE
      pos:
        line_end: 1483
        line_start: 1482
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 4)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_CORRUPTED
      pos:
        line_end: 1485
        line_start: 1484
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 5)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_SAME_CPU_CRYPT
      pos:
        line_end: 1487
        line_start: 1486
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 6)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_SUBMIT_FROM_CRYPT_CPUS
      pos:
        line_end: 1489
        line_start: 1488
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 7)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_IGNORE_CORRUPTION
      pos:
        line_end: 1491
        line_start: 1490
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 8)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_RESTART_ON_CORRUPTION
      pos:
        line_end: 1493
        line_start: 1492
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 9)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_IGNORE_ZERO_BLOCKS
      pos:
        line_end: 1495
        line_start: 1494
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 10)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_KEYRING_KEY
      pos:
        line_end: 1497
        line_start: 1496
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 11)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_NO_JOURNAL
      pos:
        line_end: 1499
        line_start: 1498
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 12)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_RECOVERY
      pos:
        line_end: 1501
        line_start: 1500
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 13)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_IGNORE_PERSISTENT
      pos:
        line_end: 1503
        line_start: 1502
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 14)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_CHECK_AT_MOST_ONCE
      pos:
        line_end: 1505
        line_start: 1504
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 15)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_ALLOW_UNBOUND_KEY
      pos:
        line_end: 1507
        line_start: 1506
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 16)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_RECALCULATE
      pos:
        line_end: 1509
        line_start: 1508
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 17)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_REFRESH
      pos:
        line_end: 1511
        line_start: 1510
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 18)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_SERIALIZE_MEMORY_HARD_PBKDF
      pos:
        line_end: 1513
        line_start: 1512
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 19)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_NO_JOURNAL_BITMAP
      pos:
        line_end: 1515
        line_start: 1514
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 20)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_SUSPENDED
      pos:
        line_end: 1517
        line_start: 1516
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 21)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_IV_LARGE_SECTORS
      pos:
        line_end: 1519
        line_start: 1518
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 22)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_PANIC_ON_CORRUPTION
      pos:
        line_end: 1521
        line_start: 1520
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 23)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_NO_READ_WORKQUEUE
      pos:
        line_end: 1523
        line_start: 1522
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 24)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_NO_WRITE_WORKQUEUE
      pos:
        line_end: 1525
        line_start: 1524
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 25)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_RECALCULATE_RESET
      pos:
        line_end: 1527
        line_start: 1526
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 26)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_TASKLETS
      pos:
        line_end: 1529
        line_start: 1528
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 27)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_HIGH_PRIORITY
      pos:
        line_end: 1531
        line_start: 1530
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 28)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_ERROR_AS_CORRUPTION
      pos:
        line_end: 1533
        line_start: 1532
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 29)
    - item_type: preproc_def
      name: CRYPT_ACTIVATE_INLINE_MODE
      pos:
        line_end: 1535
        line_start: 1534
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 30)
    - item_type: preproc_def
      name: CRYPT_REQUIREMENT_OFFLINE_REENCRYPT
      pos:
        line_end: 1582
        line_start: 1581
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_REQUIREMENT_ONLINE_REENCRYPT
      pos:
        line_end: 1584
        line_start: 1583
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 1)
    - item_type: preproc_def
      name: CRYPT_REQUIREMENT_OPAL
      pos:
        line_end: 1586
        line_start: 1585
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 2)
    - item_type: preproc_def
      name: CRYPT_REQUIREMENT_INLINE_HW_TAGS
      pos:
        line_end: 1588
        line_start: 1587
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 3)
    - item_type: preproc_def
      name: CRYPT_REQUIREMENT_UNKNOWN
      pos:
        line_end: 1590
        line_start: 1589
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 31)
    - item_type: preproc_def
      name: CRYPT_DEACTIVATE_DEFERRED
      pos:
        line_end: 1815
        line_start: 1814
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_DEACTIVATE_FORCE
      pos:
        line_end: 1817
        line_start: 1816
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 1)
    - item_type: preproc_def
      name: CRYPT_DEACTIVATE_DEFERRED_CANCEL
      pos:
        line_end: 1819
        line_start: 1818
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 2)
    - item_type: preproc_def
      name: CRYPT_DEBUG_ALL
      pos:
        line_end: 2370
        line_start: 2369
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: CRYPT_DEBUG_JSON
      pos:
        line_end: 2372
        line_start: 2371
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '-2'
    - item_type: preproc_def
      name: CRYPT_DEBUG_NONE
      pos:
        line_end: 2374
        line_start: 2373
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '0'
    - item_type: preproc_def
      name: CRYPT_KEYFILE_STOP_EOL
      pos:
        line_end: 2424
        line_start: 2423
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_WIPE_NO_DIRECT_IO
      pos:
        line_end: 2474
        line_start: 2473
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_ANY_TOKEN
      pos:
        line_end: 2533
        line_start: 2532
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: CRYPT_TOKEN_ABI_VERSION1
      pos:
        line_end: 2827
        line_start: 2826
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"CRYPTSETUP_TOKEN_1.0"'
    - item_type: preproc_def
      name: CRYPT_TOKEN_ABI_OPEN
      pos:
        line_end: 2830
        line_start: 2829
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"cryptsetup_token_open"'
    - item_type: preproc_def
      name: CRYPT_TOKEN_ABI_OPEN_PIN
      pos:
        line_end: 2832
        line_start: 2831
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"cryptsetup_token_open_pin"'
    - item_type: preproc_def
      name: CRYPT_TOKEN_ABI_BUFFER_FREE
      pos:
        line_end: 2834
        line_start: 2833
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"cryptsetup_token_buffer_free"'
    - item_type: preproc_def
      name: CRYPT_TOKEN_ABI_VALIDATE
      pos:
        line_end: 2836
        line_start: 2835
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"cryptsetup_token_validate"'
    - item_type: preproc_def
      name: CRYPT_TOKEN_ABI_DUMP
      pos:
        line_end: 2838
        line_start: 2837
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"cryptsetup_token_dump"'
    - item_type: preproc_def
      name: CRYPT_TOKEN_ABI_VERSION
      pos:
        line_end: 2840
        line_start: 2839
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: '"cryptsetup_token_version"'
    - item_type: preproc_def
      name: CRYPT_REENCRYPT_INITIALIZE_ONLY
      pos:
        line_end: 2929
        line_start: 2928
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: CRYPT_REENCRYPT_MOVE_FIRST_SEGMENT
      pos:
        line_end: 2932
        line_start: 2931
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 1)
    - item_type: preproc_def
      name: CRYPT_REENCRYPT_RESUME_ONLY
      pos:
        line_end: 2934
        line_start: 2933
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 2)
    - item_type: preproc_def
      name: CRYPT_REENCRYPT_RECOVERY
      pos:
        line_end: 2936
        line_start: 2935
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 3)
    - item_type: preproc_def
      name: CRYPT_REENCRYPT_REPAIR_NEEDED
      pos:
        line_end: 2938
        line_start: 2937
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 4)
    - item_type: preproc_def
      name: CRYPT_REENCRYPT_CREATE_NEW_DIGEST
      pos:
        line_end: 2944
        line_start: 2943
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type_or_value: (UINT32_C(1) << 5)
    structs:
    - fields:
      - name: '*type'
        type: char
      - name: '*hash'
        type: char
      - name: time_ms
        type: uint32_t
      - name: iterations
        type: uint32_t
      - name: max_memory_kb
        type: uint32_t
      - name: parallel_threads
        type: uint32_t
      - name: flags
        type: uint32_t
      item_type: struct
      name: crypt_pbkdf_type
      pos:
        line_end: 257
        line_start: 249
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: '*hash'
        type: char
      - name: offset
        type: uint64_t
      - name: skip
        type: uint64_t
      - name: size
        type: uint64_t
      - name: sector_size
        type: uint32_t
      item_type: struct
      name: crypt_params_plain
      pos:
        line_end: 476
        line_start: 470
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: '*hash'
        type: char
      - name: data_alignment
        type: size_t
      - name: '*data_device'
        type: char
      item_type: struct
      name: crypt_params_luks1
      pos:
        line_end: 491
        line_start: 487
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: '*hash'
        type: char
      - name: offset
        type: uint64_t
      - name: skip
        type: uint64_t
      item_type: struct
      name: crypt_params_loopaes
      pos:
        line_end: 503
        line_start: 499
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: '*hash_name'
        type: char
      - name: '*data_device'
        type: char
      - name: '*hash_device'
        type: char
      - name: '*fec_device'
        type: char
      - name: '*salt'
        type: char
      - name: salt_size
        type: uint32_t
      - name: hash_type
        type: uint32_t
      - name: data_block_size
        type: uint32_t
      - name: hash_block_size
        type: uint32_t
      - name: data_size
        type: uint64_t
      - name: hash_area_offset
        type: uint64_t
      - name: fec_area_offset
        type: uint64_t
      - name: fec_roots
        type: uint32_t
      - name: flags
        type: uint32_t
      item_type: struct
      name: crypt_params_verity
      pos:
        line_end: 526
        line_start: 511
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: '*passphrase'
        type: char
      - name: passphrase_size
        type: size_t
      - name: '**keyfiles'
        type: char
      - name: keyfiles_count
        type: unsigned int
      - name: '*hash_name'
        type: char
      - name: '*cipher'
        type: char
      - name: '*mode'
        type: char
      - name: key_size
        type: size_t
      - name: flags
        type: uint32_t
      - name: veracrypt_pim
        type: uint32_t
      item_type: struct
      name: crypt_params_tcrypt
      pos:
        line_end: 554
        line_start: 543
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: journal_size
        type: uint64_t
      - name: journal_watermark
        type: unsigned int
      - name: journal_commit_time
        type: unsigned int
      - name: interleave_sectors
        type: uint32_t
      - name: tag_size
        type: uint32_t
      - name: sector_size
        type: uint32_t
      - name: buffer_sectors
        type: uint32_t
      - name: '*integrity'
        type: char
      - name: integrity_key_size
        type: uint32_t
      - name: '*journal_integrity'
        type: char
      - name: '*journal_integrity_key'
        type: char
      - name: journal_integrity_key_size
        type: uint32_t
      - name: '*journal_crypt'
        type: char
      - name: '*journal_crypt_key'
        type: char
      - name: journal_crypt_key_size
        type: uint32_t
      item_type: struct
      name: crypt_params_integrity
      pos:
        line_end: 599
        line_start: 581
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: '*pbkdf'
        type: struct crypt_pbkdf_type
      - name: '*integrity'
        type: char
      - name: '*integrity_params'
        type: struct crypt_params_integrity
      - name: data_alignment
        type: size_t
      - name: '*data_device'
        type: char
      - name: sector_size
        type: uint32_t
      - name: '*label'
        type: char
      - name: '*subsystem'
        type: char
      item_type: struct
      name: crypt_params_luks2
      pos:
        line_end: 618
        line_start: 609
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: '*admin_key'
        type: char
      - name: admin_key_size
        type: size_t
      - name: user_key_size
        type: size_t
      item_type: struct
      name: crypt_params_hw_opal
      pos:
        line_end: 629
        line_start: 625
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: offset
        type: uint64_t
      - name: iv_offset
        type: uint64_t
      - name: size
        type: uint64_t
      - name: flags
        type: uint32_t
      item_type: struct
      name: crypt_active_device
      pos:
        line_end: 1544
        line_start: 1539
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: '*key_description'
        type: char
      item_type: struct
      name: crypt_token_params_luks2_keyring
      pos:
        line_end: 2599
        line_start: 2597
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: '*name'
        type: char
      - name: open
        type: crypt_token_open_func
      - name: buffer_free
        type: crypt_token_buffer_free_func
      - name: validate
        type: crypt_token_validate_func
      - name: dump
        type: crypt_token_dump_func
      item_type: struct
      name: crypt_token_handler
      pos:
        line_end: 2790
        line_start: 2784
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    - fields:
      - name: mode
        type: crypt_reencrypt_mode_info
      - name: direction
        type: crypt_reencrypt_direction_info
      - name: '*resilience'
        type: char
      - name: '*hash'
        type: char
      - name: data_shift
        type: uint64_t
      - name: max_hotzone_size
        type: uint64_t
      - name: device_size
        type: uint64_t
      - name: '*luks2'
        type: struct crypt_params_luks2
      - name: flags
        type: uint32_t
      item_type: struct
      name: crypt_params_reencrypt
      pos:
        line_end: 2980
        line_start: 2965
        source_file: /src/cryptsetup/lib/libcryptsetup.h
    typedefs:
    - item_type: typedef
      name: "(*crypt_token_open_func) (\n\tstruct crypt_device *cd,\n\tint token,\n\tchar
        **buffer,\n\tsize_t *buffer_len,\n\tvoid *usrptr)"
      pos:
        line_end: 2701
        line_start: 2696
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type: int
    - item_type: typedef
      name: "(*crypt_token_open_pin_func) (\n\tstruct crypt_device *cd,\n\tint token,\n\tconst
        char *pin,\n\tsize_t pin_size,\n\tchar **buffer,\n\tsize_t *buffer_len,\n\tvoid
        *usrptr)"
      pos:
        line_end: 2733
        line_start: 2726
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type: int
    - item_type: typedef
      name: (*crypt_token_buffer_free_func) (void *buffer, size_t buffer_len)
      pos:
        line_end: 2744
        line_start: 2744
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type: void
    - item_type: typedef
      name: (*crypt_token_validate_func) (struct crypt_device *cd, const char *json)
      pos:
        line_end: 2757
        line_start: 2757
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type: int
    - item_type: typedef
      name: (*crypt_token_dump_func) (struct crypt_device *cd, const char *json)
      pos:
        line_end: 2770
        line_start: 2770
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type: void
    - item_type: typedef
      name: '* (*crypt_token_version_func) (void)'
      pos:
        line_end: 2779
        line_start: 2779
        source_file: /src/cryptsetup/lib/libcryptsetup.h
      type: char
    union: []
- function_names:
  - request_key
  - add_key
  - keyctl_describe
  - keyctl_read
  - keyctl_link
  - keyctl_unlink
  - keyring_process_proc_keys_line
  - find_key_by_type_and_desc
  - keyring_check
  - keyring_add_key_to_keyring
  - keyring_add_key_in_thread_keyring
  - keyring_request_key_id
  - keyring_read_keysize
  - keyring_read_key
  - keyring_unlink_key_from_keyring
  - keyring_unlink_key_from_thread_keyring
  - key_type_name
  - keyring_type_and_name
  - keyring_find_key_id_by_name
  - numbered
  - keyring_find_keyring_id_by_name
  - key_type_by_name
  - keyring_check
  - keyring_add_key_in_thread_keyring
  - keyring_request_key_id
  - keyring_read_keysize
  - keyring_read_key
  - keyring_read_by_id
  - key_type_name
  - keyring_type_and_name
  - keyring_find_key_id_by_name
  - keyring_find_keyring_id_by_name
  - key_type_by_name
  - keyring_add_key_to_keyring
  - keyring_unlink_key_from_keyring
  - keyring_unlink_key_from_thread_keyring
  source_file: /src/cryptsetup/lib/utils_keyring.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: key_type_t
      - name: '*type_name'
        type: char
      item_type: struct
      name: "key_types[] = {\n\t{ LOGON_KEY,     \"logon\" },\n\t{ USER_KEY,      \"user\"
        },\n\t{ BIG_KEY,       \"big_key\" },\n\t{ TRUSTED_KEY,   \"trusted\" },\n\t{
        ENCRYPTED_KEY, \"encrypted\" },\n}"
      pos:
        line_end: 28
        line_start: 25
        source_file: /src/cryptsetup/lib/utils_keyring.c
    typedefs: []
    union: []
- function_names:
  - crypt_benchmark
  - crypt_benchmark_pbkdf
  - benchmark_callback
  - crypt_benchmark_pbkdf_internal
  source_file: /src/cryptsetup/lib/utils_benchmark.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*cd'
        type: struct crypt_device
      - name: '*pbkdf'
        type: struct crypt_pbkdf_type
      item_type: struct
      name: benchmark_usrptr
      pos:
        line_end: 128
        line_start: 125
        source_file: /src/cryptsetup/lib/utils_benchmark.c
    typedefs: []
    union: []
- function_names:
  - _read_buffer
  - read_buffer
  - read_buffer_intr
  - _write_buffer
  - write_buffer
  - write_buffer_intr
  - write_blockwise
  - read_blockwise
  - write_lseek_blockwise
  - read_lseek_blockwise
  source_file: /src/cryptsetup/lib/utils_io.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/utils_loop.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/utils_device_locking.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - device_fs_block_size_fd
  - device_block_size_fd
  - device_block_phys_size_fd
  - device_alignment_fd
  - device_read_test
  - device_ready
  - _open_locked
  - device_sync
  - device_open_internal
  - device_open
  - device_open_excl
  - device_release_excl
  - device_open_locked
  - device_alloc_no_check
  - device_alloc
  - device_free
  - device_block_path
  - device_path
  - device_topology_alignment
  - device_block_size
  - device_optimal_encryption_sector_size
  - device_read_ahead
  - device_size
  - device_fallocate
  - device_check_size
  - device_info
  - device_check_access
  - device_internal_prepare
  - device_block_adjust
  - size_round_up
  - device_disable_direct_io
  - device_direct_io
  - device_compare_path
  - device_is_identical
  - device_is_rotational
  - device_is_dax
  - device_is_zoned
  - device_is_nop_dif
  - device_alignment
  - device_set_lock_handle
  - device_get_lock_handle
  - device_read_lock
  - device_write_lock
  - device_read_unlock
  - device_write_unlock
  - device_is_locked
  - device_close
  - device_set_block_size
  source_file: /src/cryptsetup/lib/utils_device.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BLKIOMIN
      pos:
        line_end: 493
        line_start: 492
        source_file: /src/cryptsetup/lib/utils_device.c
      type_or_value: _IO(0x12,120)
    - item_type: preproc_def
      name: BLKIOOPT
      pos:
        line_end: 494
        line_start: 493
        source_file: /src/cryptsetup/lib/utils_device.c
      type_or_value: _IO(0x12,121)
    - item_type: preproc_def
      name: BLKALIGNOFF
      pos:
        line_end: 495
        line_start: 494
        source_file: /src/cryptsetup/lib/utils_device.c
      type_or_value: _IO(0x12,122)
    structs:
    - fields:
      - name: '*path'
        type: char
      - name: '*file_path'
        type: char
      - name: loop_fd
        type: int
      - name: ro_dev_fd
        type: int
      - name: dev_fd
        type: int
      - name: dev_fd_excl
        type: int
      - name: '*lh'
        type: struct crypt_lock_handle
      - name: o_direct
        type: unsigned int
      - name: init_done
        type: unsigned int
      - name: alignment
        type: size_t
      - name: block_size
        type: size_t
      - name: loop_block_size
        type: size_t
      item_type: struct
      name: device
      pos:
        line_end: 46
        line_start: 27
        source_file: /src/cryptsetup/lib/utils_device.c
    typedefs: []
    union: []
- function_names:
  - crypt_parse_name_and_mode
  - crypt_parse_hash_integrity_mode
  - crypt_parse_integrity_mode
  - crypt_parse_pbkdf
  - hex_to_bin
  - hex2asc
  - crypt_hex_to_bytes
  - crypt_bytes_to_hex
  - crypt_log_hex
  - crypt_is_cipher_null
  - crypt_capi_to_cipher
  source_file: /src/cryptsetup/lib/utils_crypt.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_CAPI_LEN_STR
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/utils_crypt.c
      type_or_value: '"143" '
    structs: []
    typedefs: []
    union: []
- function_names:
  - same_inode
  - resource_by_name
  - resource_by_devno
  - open_lock_dir
  - open_resource
  - acquire_lock_handle
  - acquire_lock_handle_by_name
  - release_lock_handle
  - device_locked
  - device_locked_readonly
  - verify_lock_handle
  - device_lock_inc
  - device_lock_dec
  - acquire_and_verify
  - device_read_lock_internal
  - device_write_lock_internal
  - crypt_write_lock
  - unlock_internal
  - crypt_unlock_internal
  - device_unlock_internal
  - device_locked_verify
  source_file: /src/cryptsetup/lib/utils_device_locking.c
  types:
    enum:
    - enumerators:
      - name: DEV_LOCK_READ
        value: '0'
      - name: DEV_LOCK_WRITE
      item_type: enum
      name: lock_type
      pos:
        line_end: 32
        line_start: 29
        source_file: /src/cryptsetup/lib/utils_device_locking.c
    - enumerators:
      - name: DEV_LOCK_FILE
        value: '0'
      - name: DEV_LOCK_BDEV
      - name: DEV_LOCK_NAME
      item_type: enum
      name: lock_mode
      pos:
        line_end: 38
        line_start: 34
        source_file: /src/cryptsetup/lib/utils_device_locking.c
    preproc_defs: []
    structs:
    - fields:
      - name: refcnt
        type: unsigned
      - name: flock_fd
        type: int
      - name: type
        type: enum lock_type
      - name: mode
        type: enum lock_mode
      - name: u
        type: "union {\n\tstruct {\n\t\tdev_t devno;\n\t} bdev;\n\tstruct {\n\t\tchar
          *name;\n\t} name;\n\t}"
      item_type: struct
      name: crypt_lock_handle
      pos:
        line_end: 53
        line_start: 40
        source_file: /src/cryptsetup/lib/utils_device_locking.c
    typedefs: []
    union: []
- function_names:
  - CONST_CAST
  - VOIDP_CAST
  - UNUSED
  - ARRAY_SIZE
  - BITFIELD_SIZE
  - MOVE_REF
  - FREE_AND_NULL
  - AT_LEAST
  - ROUND_SECTOR
  - MISALIGNED
  - MISALIGNED_4K
  - MISALIGNED_512
  - NOTPOW2
  source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SHIFT_4K
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '12'
    - item_type: preproc_def
      name: SECTOR_SHIFT
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '9'
    - item_type: preproc_def
      name: SECTOR_SIZE
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: (1 << SECTOR_SHIFT)
    - item_type: preproc_def
      name: MAX_SECTOR_SIZE
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '4096 '
    - item_type: preproc_def
      name: DEFAULT_DISK_ALIGNMENT
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '1048576 '
    - item_type: preproc_def
      name: DEFAULT_MEM_ALIGNMENT
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: DM_UUID_LEN
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '129'
    - item_type: preproc_def
      name: DM_NAME_LEN
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '128'
    - item_type: preproc_def
      name: DM_BY_ID_PREFIX
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '"dm-uuid-"'
    - item_type: preproc_def
      name: DM_BY_ID_PREFIX_LEN
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '8'
    - item_type: preproc_def
      name: DM_UUID_PREFIX
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '"CRYPT-"'
    - item_type: preproc_def
      name: DM_UUID_PREFIX_LEN
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '6'
    - item_type: preproc_def
      name: OPAL_PSID_LEN
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS_STRIPES
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/cryptsetup/lib/libcryptsetup_macros.h
      type_or_value: '4000'
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_safe_memzero
  - crypt_safe_memcpy
  - crypt_safe_alloc
  - crypt_safe_free
  - crypt_safe_realloc
  - crypt_safe_alloc_size
  source_file: /src/cryptsetup/lib/utils_safe_memory.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: OVERHEAD
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/utils_safe_memory.c
      type_or_value: offsetof(struct safe_allocation, data)
    structs:
    - fields:
      - name: size
        type: size_t
      - name: locked
        type: bool
      - name: data[0]
        type: char
      item_type: struct
      name: safe_allocation
      pos:
        line_end: 16
        line_start: 12
        source_file: /src/cryptsetup/lib/utils_safe_memory.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/bitlk/bitlk.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BITLK_NONCE_SIZE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
      type_or_value: '12'
    - item_type: preproc_def
      name: BITLK_SALT_SIZE
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
      type_or_value: '16'
    - item_type: preproc_def
      name: BITLK_VMK_MAC_TAG_SIZE
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
      type_or_value: '16'
    - item_type: preproc_def
      name: BITLK_VALIDATION_VMK_HEADER_SIZE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
      type_or_value: '8'
    - item_type: preproc_def
      name: BITLK_VALIDATION_VMK_DATA_SIZE
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
      type_or_value: '72'
    - item_type: preproc_def
      name: BITLK_STATE_NORMAL
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
      type_or_value: '0x0004'
    structs:
    - fields:
      - name: '*guid'
        type: char
      - name: '*name'
        type: char
      - name: protection
        type: BITLKVMKProtection
      - name: salt[BITLK_SALT_SIZE]
        type: uint8_t
      - name: mac_tag[BITLK_VMK_MAC_TAG_SIZE]
        type: uint8_t
      - name: nonce[BITLK_NONCE_SIZE]
        type: uint8_t
      - name: '*vk'
        type: struct volume_key
      - name: '*next'
        type: struct bitlk_vmk
      item_type: struct
      name: bitlk_vmk
      pos:
        line_end: 81
        line_start: 72
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
    - fields:
      - name: mac_tag[BITLK_VMK_MAC_TAG_SIZE]
        type: uint8_t
      - name: nonce[BITLK_NONCE_SIZE]
        type: uint8_t
      - name: '*vk'
        type: struct volume_key
      item_type: struct
      name: bitlk_fvek
      pos:
        line_end: 87
        line_start: 83
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
    - fields:
      - name: mac_tag[BITLK_VMK_MAC_TAG_SIZE]
        type: uint8_t
      - name: nonce[BITLK_NONCE_SIZE]
        type: uint8_t
      - name: enc_datum[BITLK_VALIDATION_VMK_DATA_SIZE]
        type: uint8_t
      item_type: struct
      name: bitlk_validation
      pos:
        line_end: 94
        line_start: 89
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
    - fields:
      - name: sector_size
        type: uint16_t
      - name: volume_size
        type: uint64_t
      - name: togo
        type: bool
      - name: state
        type: bool
      - name: type
        type: BITLKEncryptionType
      - name: '*cipher'
        type: char
      - name: '*cipher_mode'
        type: char
      - name: key_size
        type: uint16_t
      - name: '*guid'
        type: char
      - name: creation_time
        type: uint64_t
      - name: '*description'
        type: char
      - name: metadata_offset[3]
        type: uint64_t
      - name: metadata_version
        type: uint32_t
      - name: volume_header_offset
        type: uint64_t
      - name: volume_header_size
        type: uint64_t
      - name: '*sha256_fve[32]'
        type: char
      - name: '*vmks'
        type: struct bitlk_vmk
      - name: '*fvek'
        type: struct bitlk_fvek
      - name: '*validation'
        type: struct bitlk_validation
      item_type: struct
      name: bitlk_metadata
      pos:
        line_end: 116
        line_start: 96
        source_file: /src/cryptsetup/lib/bitlk/bitlk.h
    typedefs: []
    union: []
- function_names:
  - swap_guid
  - guid_to_string
  - get_vmk_protection
  - get_vmk_protection_string
  - get_bitlk_type_string
  - filetime_to_unixtime
  - parse_vmk_entry
  - check_fve_metadata
  - check_fve_metadata_validation
  - parse_fve_metadata_validation
  - BITLK_bitlk_fvek_free
  - BITLK_bitlk_vmk_free
  - BITLK_bitlk_metadata_free
  - BITLK_read_sb
  - BITLK_dump
  - get_recovery_key
  - parse_external_key_entry
  - get_startup_key
  - bitlk_kdf
  - decrypt_key
  - get_clear_key
  - BITLK_get_volume_key
  - _activate_check
  - _activate
  - BITLK_activate_by_volume_key
  source_file: /src/cryptsetup/lib/bitlk/bitlk.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BITLK_BOOTCODE_V1
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '"\xeb\x52\x90"'
    - item_type: preproc_def
      name: BITLK_BOOTCODE_V2
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '"\xeb\x58\x90"'
    - item_type: preproc_def
      name: BITLK_SIGNATURE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '"-FVE-FS-"'
    - item_type: preproc_def
      name: BITLK_SIGNATURE_TOGO
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '"MSWIN4.1"'
    - item_type: preproc_def
      name: BITLK_HEADER_METADATA_OFFSET
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '160'
    - item_type: preproc_def
      name: BITLK_HEADER_METADATA_OFFSET_TOGO
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '424'
    - item_type: preproc_def
      name: BITLK_FVE_METADATA_BLOCK_HEADER_LEN
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '64'
    - item_type: preproc_def
      name: BITLK_FVE_METADATA_HEADER_LEN
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '48'
    - item_type: preproc_def
      name: BITLK_FVE_METADATA_HEADERS_LEN
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: BITLK_FVE_METADATA_BLOCK_HEADER_LEN + BITLK_FVE_METADATA_HEADER_LEN
    - item_type: preproc_def
      name: BITLK_FVE_METADATA_SIZE
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: 64 * 1024
    - item_type: preproc_def
      name: BITLK_ENTRY_HEADER_LEN
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '8'
    - item_type: preproc_def
      name: BITLK_VMK_HEADER_LEN
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '28'
    - item_type: preproc_def
      name: BITLK_OPEN_KEY_METADATA_LEN
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '12'
    - item_type: preproc_def
      name: BITLK_RECOVERY_KEY_LEN
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '55'
    - item_type: preproc_def
      name: BITLK_RECOVERY_PARTS
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '8'
    - item_type: preproc_def
      name: BITLK_RECOVERY_PART_LEN
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '6'
    - item_type: preproc_def
      name: BITLK_BEK_FILE_HEADER_LEN
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '48'
    - item_type: preproc_def
      name: BITLK_STARTUP_KEY_HEADER_LEN
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '24'
    - item_type: preproc_def
      name: BITLK_KDF_HASH
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '"sha256"'
    - item_type: preproc_def
      name: BITLK_KDF_ITERATION_COUNT
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '0x100000'
    - item_type: preproc_def
      name: MAX_BITLK_SEGMENTS
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '10'
    - item_type: preproc_def
      name: EPOCH_AS_FILETIME
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '116444736000000000'
    - item_type: preproc_def
      name: HUNDREDS_OF_NANOSECONDS
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '10000000'
    - item_type: preproc_def
      name: UUID_STR_LEN
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
      type_or_value: '37'
    structs:
    - fields:
      - name: time_low
        type: uint32_t
      - name: time_mid
        type: uint16_t
      - name: time_hi_and_version
        type: uint16_t
      - name: clock_seq_hi
        type: uint8_t
      - name: clock_seq_low
        type: uint8_t
      - name: node[6]
        type: uint8_t
      item_type: struct
      name: bitlk_guid
      pos:
        line_end: 74
        line_start: 67
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: offset
        type: uint64_t
      - name: length
        type: uint64_t
      - name: iv_offset
        type: uint64_t
      - name: type
        type: BitlkSegmentType
      item_type: struct
      name: segment
      pos:
        line_end: 97
        line_start: 92
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: boot_code[3]
        type: uint8_t
      - name: signature[8]
        type: uint8_t
      - name: sector_size
        type: uint16_t
      item_type: struct
      name: bitlk_signature
      pos:
        line_end: 103
        line_start: 99
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: guid
        type: struct bitlk_guid
      - name: fve_offset[3]
        type: uint64_t
      item_type: struct
      name: bitlk_superblock
      pos:
        line_end: 108
        line_start: 105
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: signature[8]
        type: uint8_t
      - name: fve_size
        type: uint16_t
      - name: fve_version
        type: uint16_t
      - name: curr_state
        type: uint16_t
      - name: next_state
        type: uint16_t
      - name: volume_size
        type: uint64_t
      - name: unknown2
        type: uint32_t
      - name: volume_header_size
        type: uint32_t
      - name: fve_offset[3]
        type: uint64_t
      - name: volume_header_offset
        type: uint64_t
      - name: metadata_size
        type: uint32_t
      - name: metadata_version
        type: uint32_t
      - name: metadata_header_size
        type: uint32_t
      - name: metada_size_copy
        type: uint32_t
      - name: guid
        type: struct bitlk_guid
      - name: next_nonce
        type: uint32_t
      - name: encryption
        type: uint16_t
      - name: unknown3
        type: uint16_t
      - name: creation_time
        type: uint64_t
      item_type: struct
      name: bitlk_fve_metadata
      pos:
        line_end: 133
        line_start: 110
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: size
        type: uint16_t
      - name: role
        type: uint16_t
      - name: type
        type: uint16_t
      - name: flags
        type: uint16_t
      - name: hash_type
        type: uint16_t
      - name: unknown1
        type: uint16_t
      - name: hash[32]
        type: uint8_t
      item_type: struct
      name: bitlk_validation_hash
      pos:
        line_end: 145
        line_start: 135
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: validation_size
        type: uint16_t
      - name: validation_version
        type: uint16_t
      - name: fve_crc32
        type: uint32_t
      - name: nested_struct_size
        type: uint16_t
      - name: nested_struct_role
        type: uint16_t
      - name: nested_struct_type
        type: uint16_t
      - name: nested_struct_flags
        type: uint16_t
      - name: nested_struct_data[BITLK_VALIDATION_VMK_DATA_SIZE]
        type: uint8_t
      item_type: struct
      name: bitlk_fve_metadata_validation
      pos:
        line_end: 159
        line_start: 147
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: offset
        type: uint64_t
      - name: size
        type: uint64_t
      item_type: struct
      name: bitlk_entry_header_block
      pos:
        line_end: 164
        line_start: 161
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: guid
        type: struct bitlk_guid
      - name: modified[8]
        type: uint8_t
      - name: _unknown
        type: uint16_t
      - name: protection
        type: uint16_t
      item_type: struct
      name: bitlk_entry_vmk
      pos:
        line_end: 171
        line_start: 166
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: last_sha256[32]
        type: char
      - name: initial_sha256[32]
        type: char
      - name: salt[16]
        type: char
      - name: count
        type: uint64_t
      item_type: struct
      name: bitlk_kdf_data
      pos:
        line_end: 178
        line_start: 173
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    - fields:
      - name: metadata_size
        type: uint32_t
      - name: metadata_version
        type: uint32_t
      - name: metadata_header_size
        type: uint32_t
      - name: metada_size_copy
        type: uint32_t
      - name: guid
        type: struct bitlk_guid
      - name: next_nonce
        type: uint32_t
      - name: encryption
        type: uint16_t
      - name: unknown
        type: uint16_t
      - name: creation_time
        type: uint64_t
      item_type: struct
      name: bitlk_bek_header
      pos:
        line_end: 190
        line_start: 180
        source_file: /src/cryptsetup/lib/bitlk/bitlk.c
    typedefs: []
    union: []
- function_names:
  - VERITY_BLOCK_SIZE_OK
  source_file: /src/cryptsetup/lib/verity/verity.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VERITY_MAX_HASH_TYPE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/lib/verity/verity.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - FEC_div_round_up
  - FEC_interleave
  - FEC_read_interleaved
  - FEC_process_inputs
  - VERITY_FEC_validate
  - VERITY_FEC_process
  - VERITY_FEC_blocks
  - VERITY_FEC_RS_blocks
  source_file: /src/cryptsetup/lib/verity/verity_fec.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FEC_RSM
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/lib/verity/verity_fec.c
      type_or_value: '255'
    - item_type: preproc_def
      name: FEC_MIN_RSN
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/verity/verity_fec.c
      type_or_value: '231'
    - item_type: preproc_def
      name: FEC_MAX_RSN
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/lib/verity/verity_fec.c
      type_or_value: '253'
    - item_type: preproc_def
      name: FEC_INPUT_DEVICES
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/verity/verity_fec.c
      type_or_value: '2'
    structs:
    - fields:
      - name: '*device'
        type: struct device
      - name: fd
        type: int
      - name: start
        type: uint64_t
      - name: count
        type: uint64_t
      item_type: struct
      name: fec_input_device
      pos:
        line_end: 36
        line_start: 31
        source_file: /src/cryptsetup/lib/verity/verity_fec.c
    - fields:
      - name: rsn
        type: uint32_t
      - name: roots
        type: uint32_t
      - name: size
        type: uint64_t
      - name: blocks
        type: uint64_t
      - name: rounds
        type: uint64_t
      - name: block_size
        type: uint32_t
      - name: '*inputs'
        type: struct fec_input_device
      - name: ninputs
        type: size_t
      item_type: struct
      name: fec_context
      pos:
        line_end: 47
        line_start: 38
        source_file: /src/cryptsetup/lib/verity/verity_fec.c
    typedefs: []
    union: []
- function_names:
  - init_rs_char
  - free_rs_char
  - encode_rs_char
  source_file: /src/cryptsetup/lib/verity/rs_encode_char.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - decode_rs_char
  source_file: /src/cryptsetup/lib/verity/rs_decode_char.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_NR_BUF
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/lib/verity/rs_decode_char.c
      type_or_value: '256'
    structs: []
    typedefs: []
    union: []
- function_names:
  - get_bits_up
  - get_bits_down
  - verify_zero
  - verify_hash_block
  - hash_levels
  - create_or_verify
  - VERITY_create_or_verify_hash
  - VERITY_verify
  - VERITY_create
  - VERITY_hash_blocks
  source_file: /src/cryptsetup/lib/verity/verity_hash.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VERITY_MAX_LEVELS
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/lib/verity/verity_hash.c
      type_or_value: '63'
    - item_type: preproc_def
      name: VERITY_MAX_DIGEST_SIZE
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/verity/verity_hash.c
      type_or_value: '1024'
    structs: []
    typedefs: []
    union: []
- function_names:
  - RS_MIN
  - modnn
  source_file: /src/cryptsetup/lib/verity/rs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: A0
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/cryptsetup/lib/verity/rs.h
      type_or_value: (rs->nn)
    structs:
    - fields:
      - name: mm
        type: int
      - name: nn
        type: int
      - name: '*alpha_to'
        type: data_t
      - name: '*index_of'
        type: data_t
      - name: '*genpoly'
        type: data_t
      - name: nroots
        type: int
      - name: fcr
        type: int
      - name: prim
        type: int
      - name: iprim
        type: int
      - name: pad
        type: int
      item_type: struct
      name: rs
      pos:
        line_end: 31
        line_start: 20
        source_file: /src/cryptsetup/lib/verity/rs.h
    typedefs:
    - item_type: typedef
      name: data_t
      pos:
        line_end: 17
        line_start: 17
        source_file: /src/cryptsetup/lib/verity/rs.h
      type: unsigned char
    union: []
- function_names:
  - VERITY_read_sb
  - _to_lower
  - VERITY_write_sb
  - VERITY_hash_offset_block
  - VERITY_UUID_generate
  - VERITY_verify_params
  - VERITY_activate
  - VERITY_dump
  source_file: /src/cryptsetup/lib/verity/verity.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VERITY_SIGNATURE
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/verity/verity.c
      type_or_value: '"verity\0\0"'
    structs:
    - fields:
      - name: signature[8]
        type: uint8_t
      - name: version
        type: uint32_t
      - name: hash_type
        type: uint32_t
      - name: uuid[16]
        type: uint8_t
      - name: algorithm[32]
        type: uint8_t
      - name: data_block_size
        type: uint32_t
      - name: hash_block_size
        type: uint32_t
      - name: data_blocks
        type: uint64_t
      - name: salt_size
        type: uint16_t
      - name: _pad1[6]
        type: uint8_t
      - name: salt[256]
        type: uint8_t
      - name: _pad2[168]
        type: uint8_t
      item_type: struct
      name: verity_sb
      pos:
        line_end: 37
        line_start: 24
        source_file: /src/cryptsetup/lib/verity/verity.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/loopaes/loopaes.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOOPAES_KEYS_MAX
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/loopaes/loopaes.h
      type_or_value: '65'
    structs: []
    typedefs: []
    union: []
- function_names:
  - get_hash
  - get_tweak
  - hash_key
  - hash_keys
  - keyfile_is_gpg
  - LOOPAES_parse_keyfile
  - LOOPAES_activate
  source_file: /src/cryptsetup/lib/loopaes/loopaes.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TCRYPT_hdr_from_disk
  - TCRYPT_swab_le
  - decrypt_blowfish_le_cbc
  - TCRYPT_remove_whitening
  - TCRYPT_copy_key
  - TCRYPT_decrypt_hdr_one
  - TCRYPT_decrypt_cbci
  - TCRYPT_decrypt_hdr
  - TCRYPT_pool_keyfile
  - TCRYPT_init_hdr
  - TCRYPT_read_phdr
  - TCRYPT_get_algs
  - TCRYPT_activate
  - is_tcrypt_subdev
  - TCRYPT_remove_one
  - TCRYPT_deactivate
  - TCRYPT_status_one
  - TCRYPT_init_by_name
  - TCRYPT_get_data_offset
  - TCRYPT_get_iv_offset
  - TCRYPT_get_volume_key
  - TCRYPT_dump
  source_file: /src/cryptsetup/lib/tcrypt/tcrypt.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: legacy
        type: bool
      - name: veracrypt
        type: bool
      - name: '*name'
        type: char
      - name: '*hash'
        type: char
      - name: iterations
        type: unsigned int
      - name: veracrypt_pim_const
        type: uint32_t
      - name: veracrypt_pim_mult
        type: uint32_t
      item_type: struct
      name: "tcrypt_kdf[] = {\n\t{ false, false, \"pbkdf2\", \"ripemd160\",   2000,
        0, 0 },\n\t{ false, false, \"pbkdf2\", \"ripemd160\",   1000, 0, 0 },\n\t{
        false, false, \"pbkdf2\", \"sha512\",      1000, 0, 0 },\n\t{ false, false,
        \"pbkdf2\", \"whirlpool\",   1000, 0, 0 },\n\t{  true, false, \"pbkdf2\",
        \"sha1\",        2000, 0, 0 },\n\t{ false,  true, \"pbkdf2\", \"sha512\",
        \   500000, 15000, 1000 },\n\t{ false,  true, \"pbkdf2\", \"whirlpool\", 500000,
        15000, 1000 },\n\t{ false,  true, \"pbkdf2\", \"sha256\",    500000, 15000,
        1000 }, // VeraCrypt 1.0f\n\t{ false,  true, \"pbkdf2\", \"sha256\",    200000,
        \    0, 2048 }, // boot only\n\t{ false,  true, \"pbkdf2\", \"blake2s-256\",
        500000, 15000, 1000 }, // VeraCrypt 1.26.2\n\t{ false,  true, \"pbkdf2\",
        \"blake2s-256\", 200000,     0, 2048 }, // boot only\n\t{ false,  true, \"pbkdf2\",
        \"ripemd160\", 655331, 15000, 1000 },\n\t{ false,  true, \"pbkdf2\", \"ripemd160\",
        327661,     0, 2048 }, // boot only\n\t{ false,  true, \"pbkdf2\", \"stribog512\",500000,
        15000, 1000 },\n//\t{ false,  true, \"pbkdf2\", \"stribog512\",200000,     0,
        2048 }, // boot only\n\t{ false, false,     NULL,        NULL,      0,     0,
        \   0 }\n}"
      pos:
        line_end: 26
        line_start: 18
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.c
    - fields:
      - name: '*name'
        type: char
      - name: key_size
        type: unsigned int
      - name: iv_size
        type: unsigned int
      - name: key_offset
        type: unsigned int
      - name: iv_offset
        type: unsigned int
      - name: key_extra_size
        type: unsigned int
      item_type: struct
      name: tcrypt_alg
      pos:
        line_end: 52
        line_start: 45
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.c
    - fields:
      - name: legacy
        type: bool
      - name: chain_count
        type: unsigned int
      - name: chain_key_size
        type: unsigned int
      - name: '*long_name'
        type: char
      - name: '*mode'
        type: char
      - name: cipher[3]
        type: struct tcrypt_alg
      item_type: struct
      name: tcrypt_algs
      pos:
        line_end: 61
        line_start: 54
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TCRYPT_HDR_SALT_LEN
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '64'
    - item_type: preproc_def
      name: TCRYPT_HDR_IV_LEN
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '16'
    - item_type: preproc_def
      name: TCRYPT_HDR_LEN
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '448'
    - item_type: preproc_def
      name: TCRYPT_HDR_KEY_LEN
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '192'
    - item_type: preproc_def
      name: TCRYPT_HDR_MAGIC
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '"TRUE"'
    - item_type: preproc_def
      name: VCRYPT_HDR_MAGIC
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '"VERA"'
    - item_type: preproc_def
      name: TCRYPT_HDR_MAGIC_LEN
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '4'
    - item_type: preproc_def
      name: TCRYPT_HDR_HIDDEN_OFFSET_OLD
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '-1536'
    - item_type: preproc_def
      name: TCRYPT_HDR_HIDDEN_OFFSET
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '65536'
    - item_type: preproc_def
      name: TCRYPT_HDR_HIDDEN_OFFSET_BCK
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '-65536'
    - item_type: preproc_def
      name: TCRYPT_HDR_OFFSET_BCK
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '-131072'
    - item_type: preproc_def
      name: TCRYPT_HDR_SYSTEM_OFFSET
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '31744'
    - item_type: preproc_def
      name: TCRYPT_LRW_IKEY_LEN
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '16'
    - item_type: preproc_def
      name: TCRYPT_KEY_POOL_LEN
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '64'
    - item_type: preproc_def
      name: VCRYPT_KEY_POOL_LEN
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '128'
    - item_type: preproc_def
      name: TCRYPT_KEYFILE_LEN
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: '1048576'
    - item_type: preproc_def
      name: TCRYPT_HDR_FLAG_SYSTEM
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: (1 << 0)
    - item_type: preproc_def
      name: TCRYPT_HDR_FLAG_NONSYSTEM
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
      type_or_value: (1 << 1)
    structs:
    - fields:
      - name: salt[TCRYPT_HDR_SALT_LEN]
        type: char
      item_type: struct
      name: tcrypt_phdr
      pos:
        line_end: 60
        line_start: 37
        source_file: /src/cryptsetup/lib/tcrypt/tcrypt.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/luks1/af.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - _error_hint
  - LUKS_endec_template
  - LUKS_encrypt_to_storage
  - LUKS_decrypt_from_storage
  source_file: /src/cryptsetup/lib/luks1/keyencryption.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/luks1/luks.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUKS_CIPHERNAME_L
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS_CIPHERMODE_L
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS_HASHSPEC_L
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS_DIGESTSIZE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: 20 // since SHA1
    - item_type: preproc_def
      name: LUKS_HMACSIZE
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS_SALTSIZE
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS_NUMKEYS
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '8'
    - item_type: preproc_def
      name: LUKS_MKD_ITERATIONS_MIN
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '1000'
    - item_type: preproc_def
      name: LUKS_SLOT_ITERATIONS_MIN
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '1000'
    - item_type: preproc_def
      name: LUKS_MKD_ITERATIONS_MS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '125'
    - item_type: preproc_def
      name: LUKS_KEY_DISABLED_OLD
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '0'
    - item_type: preproc_def
      name: LUKS_KEY_ENABLED_OLD
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '0xCAFE'
    - item_type: preproc_def
      name: LUKS_KEY_DISABLED
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '0x0000DEAD'
    - item_type: preproc_def
      name: LUKS_KEY_ENABLED
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '0x00AC71F3'
    - item_type: preproc_def
      name: LUKS_STRIPES
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '4000'
    - item_type: preproc_def
      name: LUKS_MAGIC
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '{''L'',''U'',''K'',''S'', 0xba, 0xbe};'
    - item_type: preproc_def
      name: LUKS_MAGIC_L
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '6'
    - item_type: preproc_def
      name: UUID_STRING_L
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '40'
    - item_type: preproc_def
      name: LUKS_ALIGN_KEYSLOTS
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: LUKS_MAX_KEYSLOT_SIZE
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/cryptsetup/lib/luks1/luks.h
      type_or_value: '0x1000000 '
    structs:
    - fields:
      - name: magic[LUKS_MAGIC_L]
        type: char
      - name: version
        type: uint16_t
      - name: cipherName[LUKS_CIPHERNAME_L]
        type: char
      - name: cipherMode[LUKS_CIPHERMODE_L]
        type: char
      - name: hashSpec[LUKS_HASHSPEC_L]
        type: char
      - name: payloadOffset
        type: uint32_t
      - name: keyBytes
        type: uint32_t
      - name: mkDigest[LUKS_DIGESTSIZE]
        type: char
      - name: mkDigestSalt[LUKS_SALTSIZE]
        type: char
      - name: mkDigestIterations
        type: uint32_t
      - name: uuid[UUID_STRING_L]
        type: char
      - name: keyblock[LUKS_NUMKEYS]
        type: "struct {\n\t\tuint32_t active;\n\n\t\t/* parameters used for password
          processing */\n\t\tuint32_t passwordIterations;\n\t\tchar     passwordSalt[LUKS_SALTSIZE];\n\n\t\t/*
          parameters used for AF store/load */\n\t\tuint32_t keyMaterialOffset;\n\t\tuint32_t
          stripes;\n\t}"
      - name: _padding[432]
        type: char
      item_type: struct
      name: luks_phdr
      pos:
        line_end: 86
        line_start: 59
        source_file: /src/cryptsetup/lib/luks1/luks.h
    typedefs: []
    union: []
- function_names:
  - XORblock
  - hash_buf
  - diffuse
  - AF_split
  - AF_merge
  - AF_split_sectors
  source_file: /src/cryptsetup/lib/luks1/af.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LUKS_keyslot_area
  - LUKS_sort_keyslots
  - _is_not_lower
  - _to_lower
  - LUKS_device_sectors
  - LUKS_keyslots_offset
  - LUKS_check_device_size
  - LUKS_check_keyslots
  - dbg_slot_state
  - LUKS_hdr_backup
  - LUKS_hdr_restore
  - _keyslot_repair
  - _check_and_convert_hdr
  - LUKS_read_phdr_backup
  - LUKS_read_phdr
  - LUKS_write_phdr
  - LUKS_check_cipher
  - LUKS_generate_phdr
  - LUKS_hdr_uuid_set
  - LUKS_set_key
  - LUKS_verify_volume_key
  - LUKS_open_key
  - LUKS_open_key_with_hdr
  - LUKS_del_key
  - LUKS_keyslot_info
  - LUKS_keyslot_find_empty
  - LUKS_keyslot_active_count
  - LUKS_keyslot_set
  - LUKS1_activate
  - LUKS_wipe_header_areas
  - LUKS_keyslot_pbkdf
  source_file: /src/cryptsetup/lib/luks1/keymanage.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/fvault2/fvault2.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FVAULT2_WRAPPED_KEY_SIZE
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/cryptsetup/lib/fvault2/fvault2.h
      type_or_value: '24'
    - item_type: preproc_def
      name: FVAULT2_PBKDF2_SALT_SIZE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/lib/fvault2/fvault2.h
      type_or_value: '16'
    - item_type: preproc_def
      name: FVAULT2_UUID_LEN
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/lib/fvault2/fvault2.h
      type_or_value: '37'
    structs:
    - fields:
      - name: '*cipher'
        type: char
      - name: '*cipher_mode'
        type: char
      - name: key_size
        type: uint16_t
      - name: pbkdf2_iters
        type: uint32_t
      - name: pbkdf2_salt[FVAULT2_PBKDF2_SALT_SIZE]
        type: char
      - name: wrapped_kek[FVAULT2_WRAPPED_KEY_SIZE]
        type: char
      - name: wrapped_vk[FVAULT2_WRAPPED_KEY_SIZE]
        type: char
      - name: family_uuid[FVAULT2_UUID_LEN]
        type: char
      - name: ph_vol_uuid[FVAULT2_UUID_LEN]
        type: char
      - name: log_vol_off
        type: uint64_t
      - name: log_vol_size
        type: uint64_t
      item_type: struct
      name: fvault2_params
      pos:
        line_end: 32
        line_start: 20
        source_file: /src/cryptsetup/lib/fvault2/fvault2.h
    typedefs: []
    union: []
- function_names:
  - _filled_with
  - _check_crc
  - _unwrap_key
  - _search_xml
  - _parse_metadata_block_0x0019
  - _reformat_uuid
  - _parse_metadata_block_0x001a
  - _parse_metadata_block_0x0305
  - _read_volume_header
  - _read_disklabel
  - _read_encrypted_metadata
  - _activate
  - FVAULT2_read_metadata
  - FVAULT2_get_volume_key
  - FVAULT2_dump
  - FVAULT2_activate_by_volume_key
  - FVAULT2_volume_key_size
  source_file: /src/cryptsetup/lib/fvault2/fvault2.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FVAULT2_CORE_STORAGE_MAGIC
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '0x4353'
    - item_type: preproc_def
      name: FVAULT2_VOL_HEADER_SIZE
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '512'
    - item_type: preproc_def
      name: FVAULT2_MD_BLOCK_SIZE
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '8192'
    - item_type: preproc_def
      name: FVAULT2_MAX_OFF
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: 1024*1024*1024
    - item_type: preproc_def
      name: FVAULT2_ENC_MD_PARSED_0x0019
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '0b001'
    - item_type: preproc_def
      name: FVAULT2_ENC_MD_PARSED_0x001A
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '0b010'
    - item_type: preproc_def
      name: FVAULT2_ENC_MD_PARSED_0x0305
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '0b100'
    - item_type: preproc_def
      name: FVAULT2_ENC_MD_PARSED_NONE
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '0b000'
    - item_type: preproc_def
      name: FVAULT2_ENC_MD_PARSED_ALL
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '0b111'
    - item_type: preproc_def
      name: FVAULT2_PWK_SIZE
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '284'
    - item_type: preproc_def
      name: FVAULT2_KWVK_SIZE
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '256'
    - item_type: preproc_def
      name: FVAULT2_AES_KEY_SIZE
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '16'
    - item_type: preproc_def
      name: FVAULT2_XTS_KEY_SIZE
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: (FVAULT2_AES_KEY_SIZE * 2)
    - item_type: preproc_def
      name: FVAULT2_XTS_TWEAK_SIZE
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '16'
    - item_type: preproc_def
      name: FVAULT2_UUID_BIN_SIZE
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
      type_or_value: '16'
    structs:
    - fields:
      - name: value
        type: uint32_t
      - name: seed
        type: uint32_t
      item_type: struct
      name: crc32_checksum
      pos:
        line_end: 53
        line_start: 50
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    - fields:
      - name: checksum
        type: struct crc32_checksum
      - name: version
        type: uint16_t
      - name: block_type
        type: uint16_t
      - name: unknown1[52]
        type: uint8_t
      - name: ph_vol_size
        type: uint64_t
      - name: unknown2[16]
        type: uint8_t
      - name: magic
        type: uint16_t
      - name: checksum_algo
        type: uint32_t
      - name: unknown3[2]
        type: uint8_t
      - name: block_size
        type: uint32_t
      - name: metadata_size
        type: uint32_t
      - name: disklbl_blkoff
        type: uint64_t
      - name: other_md_blkoffs[3]
        type: uint64_t
      - name: unknown4[32]
        type: uint8_t
      - name: key_data_size
        type: uint32_t
      - name: cipher
        type: uint32_t
      - name: key_data[FVAULT2_AES_KEY_SIZE]
        type: uint8_t
      - name: unknown5[112]
        type: uint8_t
      - name: ph_vol_uuid[FVAULT2_UUID_BIN_SIZE]
        type: uint8_t
      - name: unknown6[192]
        type: uint8_t
      item_type: struct
      name: volume_header
      pos:
        line_end: 76
        line_start: 55
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    - fields:
      - name: unknown1[8]
        type: uint8_t
      - name: enc_md_blocks_n
        type: uint64_t
      - name: unknown2[16]
        type: uint8_t
      - name: enc_md_blkoff
        type: uint64_t
      item_type: struct
      name: volume_groups_descriptor
      pos:
        line_end: 83
        line_start: 78
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    - fields:
      - name: checksum
        type: struct crc32_checksum
      - name: version
        type: uint16_t
      - name: block_type
        type: uint16_t
      - name: unknown1[20]
        type: uint8_t
      - name: block_num
        type: uint64_t
      - name: unknown2[8]
        type: uint8_t
      - name: block_size
        type: uint32_t
      - name: unknown3[12]
        type: uint8_t
      item_type: struct
      name: metadata_block_header
      pos:
        line_end: 94
        line_start: 85
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    - fields:
      - name: header
        type: struct metadata_block_header
      - name: md_size
        type: uint32_t
      - name: unknown1[4]
        type: uint8_t
      - name: checksum
        type: struct crc32_checksum
      - name: unknown2[140]
        type: uint8_t
      - name: vol_gr_des_off
        type: uint32_t
      item_type: struct
      name: metadata_block_0x0011
      pos:
        line_end: 103
        line_start: 96
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    - fields:
      - name: header
        type: struct metadata_block_header
      - name: unknown1[40]
        type: uint8_t
      - name: xml_comp_size
        type: uint32_t
      - name: xml_uncomp_size
        type: uint32_t
      - name: xml_off
        type: uint32_t
      - name: xml_size
        type: uint32_t
      item_type: struct
      name: metadata_block_0x0019
      pos:
        line_end: 112
        line_start: 105
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    - fields:
      - name: header
        type: struct metadata_block_header
      - name: unknown1[64]
        type: uint8_t
      - name: xml_off
        type: uint32_t
      - name: xml_size
        type: uint32_t
      item_type: struct
      name: metadata_block_0x001a
      pos:
        line_end: 119
        line_start: 114
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    - fields:
      - name: header
        type: struct metadata_block_header
      - name: entries_n
        type: uint32_t
      - name: unknown1[36]
        type: uint8_t
      - name: log_vol_blkoff
        type: uint32_t
      item_type: struct
      name: metadata_block_0x0305
      pos:
        line_end: 126
        line_start: 121
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    - fields:
      - name: pbkdf2_salt_type
        type: uint32_t
      - name: pbkdf2_salt_size
        type: uint32_t
      - name: pbkdf2_salt[FVAULT2_PBKDF2_SALT_SIZE]
        type: uint8_t
      - name: wrapped_kek_type
        type: uint32_t
      - name: wrapped_kek_size
        type: uint32_t
      - name: wrapped_kek[FVAULT2_WRAPPED_KEY_SIZE]
        type: uint8_t
      - name: unknown1[112]
        type: uint8_t
      - name: pbkdf2_iters
        type: uint32_t
      item_type: struct
      name: passphrase_wrapped_kek
      pos:
        line_end: 137
        line_start: 128
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    - fields:
      - name: wrapped_vk_type
        type: uint32_t
      - name: wrapped_vk_size
        type: uint32_t
      - name: wrapped_vk[FVAULT2_WRAPPED_KEY_SIZE]
        type: uint8_t
      item_type: struct
      name: kek_wrapped_volume_key
      pos:
        line_end: 143
        line_start: 139
        source_file: /src/cryptsetup/lib/fvault2/fvault2.c
    typedefs: []
    union: []
- function_names:
  - _get_alg
  - crypt_cipher_ivsize
  - crypt_cipher_wrapped_key
  - crypt_fips_mode_kernel
  source_file: /src/cryptsetup/lib/crypto_backend/cipher_generic.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*mode'
        type: char
      - name: blocksize
        type: int
      - name: wrapped_key
        type: bool
      item_type: struct
      name: cipher_alg
      pos:
        line_end: 19
        line_start: 14
        source_file: /src/cryptsetup/lib/crypto_backend/cipher_generic.c
    typedefs: []
    union: []
- function_names:
  - crypt_hash_test_whirlpool_bug
  - crypt_backend_init
  - crypt_backend_destroy
  - crypt_backend_version
  - crypt_backend_flags
  - crypt_hash_compat_name
  - crypt_hash_size
  - crypt_hash_init
  - crypt_hash_restart
  - crypt_hash_write
  - crypt_hash_final
  - crypt_hash_destroy
  - crypt_hmac_size
  - crypt_hmac_init
  - crypt_hmac_restart
  - crypt_hmac_write
  - crypt_hmac_final
  - crypt_hmac_destroy
  - crypt_backend_rng
  - pbkdf2
  - gcrypt_job_thread
  - gcrypt_wait_all_jobs
  - gcrypt_dispatch_job
  - gcrypt_argon2
  - crypt_pbkdf
  - _cipher_init
  - crypt_cipher_init
  - crypt_cipher_destroy
  - crypt_cipher_encrypt
  - crypt_cipher_decrypt
  - crypt_cipher_kernel_only
  - crypt_bitlk_decrypt_key
  - crypt_backend_memeq
  - crypt_fips_mode
  - crypt_fips_mode
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: hd
        type: gcry_md_hd_t
      - name: hash_id
        type: int
      - name: hash_len
        type: int
      item_type: struct
      name: crypt_hash
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    - fields:
      - name: hd
        type: gcry_md_hd_t
      - name: hash_id
        type: int
      - name: hash_len
        type: int
      item_type: struct
      name: crypt_hmac
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    - fields:
      - name: use_kernel
        type: bool
      - name: u
        type: "union {\n\tstruct crypt_cipher_kernel kernel;\n\tgcry_cipher_hd_t hd;\n\t}"
      item_type: struct
      name: crypt_cipher
      pos:
        line_end: 38
        line_start: 32
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    - fields:
      - name: '*name'
        type: char
      - name: '*gcrypt_name'
        type: char
      item_type: struct
      name: hash_alg
      pos:
        line_end: 43
        line_start: 40
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    - fields:
      - name: thread
        type: pthread_t
      - name: work
        type: "struct job_thread_param {\n\t\tgcry_kdf_job_fn_t job;\n\t\tvoid *p;\n\t}"
      item_type: struct
      name: gcrypt_thread_job
      pos:
        line_end: 386
        line_start: 379
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    - fields:
      - name: job
        type: gcry_kdf_job_fn_t
      - name: '*p'
        type: void
      item_type: struct
      name: job_thread_param
      pos:
        line_end: 385
        line_start: 382
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    - fields:
      - name: attr
        type: pthread_attr_t
      - name: num_threads
        type: unsigned int
      - name: max_threads
        type: unsigned int
      - name: '*jobs_ctx'
        type: struct gcrypt_thread_job
      item_type: struct
      name: gcrypt_threads
      pos:
        line_end: 394
        line_start: 388
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_gcrypt.c
    typedefs: []
    union: []
- function_names:
  - crypt_pbkdf_get_limits
  - time_ms
  - timespec_ms
  - measure_argon2
  - next_argon2_params
  - crypt_argon2_check
  - crypt_pbkdf_check
  - crypt_pbkdf_perf
  source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLOCK_MONOTONIC_RAW
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
      type_or_value: CLOCK_MONOTONIC
    - item_type: preproc_def
      name: BENCH_MIN_MS
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
      type_or_value: '250'
    - item_type: preproc_def
      name: BENCH_MIN_MS_FAST
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
      type_or_value: '10'
    - item_type: preproc_def
      name: BENCH_PERCENT_ATLEAST
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
      type_or_value: '95'
    - item_type: preproc_def
      name: BENCH_PERCENT_ATMOST
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
      type_or_value: '110'
    - item_type: preproc_def
      name: BENCH_SAMPLES_FAST
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
      type_or_value: '3'
    - item_type: preproc_def
      name: BENCH_SAMPLES_SLOW
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
      type_or_value: '1'
    - item_type: preproc_def
      name: CONTINUE
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
      type_or_value: '0'
    - item_type: preproc_def
      name: FINAL
      pos:
        line_end: 136
        line_start: 135
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf_check.c
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - hash_buf
  - pkcs5_pbkdf2
  source_file: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_PRF_BLOCK_LEN
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/cryptsetup/lib/crypto_backend/pbkdf2_generic.c
      type_or_value: '80'
    structs: []
    typedefs: []
    union: []
- function_names:
  - base64char
  - unbase64char
  - crypt_base64_encode
  - unbase64_next
  - crypt_base64_decode
  source_file: /src/cryptsetup/lib/crypto_backend/base64.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: WHITESPACE
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/lib/crypto_backend/base64.c
      type_or_value: '" \t\n\r"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - compute_crc32
  - crypt_crc32
  - crypt_crc32c
  source_file: /src/cryptsetup/lib/crypto_backend/crc32.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_get_hash
  - crypt_backend_init
  - crypt_backend_destroy
  - crypt_backend_flags
  - crypt_backend_version
  - crypt_fips_mode
  - crypt_backend_memeq
  - crypt_hash_size
  - crypt_hash_init
  - crypt_hash_write
  - crypt_hash_final
  - crypt_hash_destroy
  - crypt_hmac_size
  - crypt_hmac_init
  - crypt_hmac_write
  - crypt_hmac_final
  - crypt_hmac_destroy
  - crypt_backend_rng
  - crypt_cipher_init
  - crypt_cipher_destroy
  - crypt_cipher_crypt
  - crypt_cipher_encrypt
  - crypt_cipher_decrypt
  - crypt_cipher_kernel_only
  - crypt_pbkdf
  - crypt_bitlk_decrypt_key
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*info'
        type: mbedtls_md_info_t
      - name: md
        type: mbedtls_md_context_t
      item_type: struct
      name: crypt_hash
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    - fields:
      - name: '*info'
        type: mbedtls_md_info_t
      - name: md
        type: mbedtls_md_context_t
      item_type: struct
      name: crypt_hmac
      pos:
        line_end: 31
        line_start: 28
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    - fields:
      - name: '*info'
        type: mbedtls_cipher_info_t
      - name: enc
        type: mbedtls_cipher_context_t
      - name: dec
        type: mbedtls_cipher_context_t
      - name: ecb
        type: int
      item_type: struct
      name: crypt_cipher
      pos:
        line_end: 38
        line_start: 33
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    - fields:
      - name: '*name'
        type: char
      - name: type
        type: mbedtls_md_type_t
      item_type: struct
      name: hash_alg
      pos:
        line_end: 50
        line_start: 47
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    - fields:
      - name: '*name'
        type: char
      - name: id
        type: mbedtls_cipher_id_t
      item_type: struct
      name: "kCipher[] = {\n\t\t{ \"aes\",      MBEDTLS_CIPHER_ID_AES      },\n\t\t{
        \"aria\",     MBEDTLS_CIPHER_ID_ARIA     },\n\t\t{ \"camellia\", MBEDTLS_CIPHER_ID_CAMELLIA
        },\n\t\t{ NULL,       0                          }\n\t}"
      pos:
        line_end: 296
        line_start: 293
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    - fields:
      - name: '*name'
        type: char
      - name: mode
        type: mbedtls_cipher_mode_t
      item_type: struct
      name: "kMode[] = {\n\t\t{ \"ecb\", MBEDTLS_MODE_ECB },\n\t\t{ \"cbc\", MBEDTLS_MODE_CBC
        },\n\t\t{ \"cfb\", MBEDTLS_MODE_CFB },\n\t\t{ \"ofb\", MBEDTLS_MODE_OFB },\n\t\t{
        \"ctr\", MBEDTLS_MODE_CTR },\n\t\t{ \"xts\", MBEDTLS_MODE_XTS },\n\t\t{ NULL,
        \ 0                }\n\t}"
      pos:
        line_end: 306
        line_start: 303
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_mbedtls.c
    typedefs: []
    union: []
- function_names:
  - int_log2
  - crypt_sector_iv_init
  - crypt_sector_iv_generate
  - crypt_sector_iv_destroy
  - crypt_storage_init
  - crypt_storage_decrypt
  - crypt_storage_encrypt
  - crypt_storage_destroy
  - crypt_storage_kernel_only
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SECTOR_SHIFT
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
      type_or_value: '9'
    - item_type: preproc_def
      name: MAX_CAPI_LEN
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
      type_or_value: '64'
    - item_type: preproc_def
      name: MAX_CAPI_LEN_STR
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
      type_or_value: '"63"'
    structs:
    - fields:
      - name: type
        type: enum { IV_NONE, IV_NULL, IV_PLAIN, IV_PLAIN64, IV_ESSIV, IV_BENBI, IV_PLAIN64BE,
          IV_EBOIV }
      - name: iv_size
        type: int
      - name: '*iv'
        type: char
      - name: '*cipher'
        type: struct crypt_cipher
      - name: shift
        type: int
      item_type: struct
      name: crypt_sector_iv
      pos:
        line_end: 29
        line_start: 23
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    - fields:
      - name: sector_size
        type: size_t
      - name: iv_shift
        type: unsigned
      - name: '*cipher'
        type: struct crypt_cipher
      - name: cipher_iv
        type: struct crypt_sector_iv
      item_type: struct
      name: crypt_storage
      pos:
        line_end: 37
        line_start: 32
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_storage.c
    typedefs: []
    union: []
- function_names:
  - CONST_CAST
  source_file: /src/cryptsetup/lib/crypto_backend/argon2_generic.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_backend_memzero
  - crypt_backend_memcpy
  - crypt_internal_memeq
  source_file: /src/cryptsetup/lib/crypto_backend/memutils.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ATTR_NOINLINE
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/cryptsetup/lib/crypto_backend/memutils.c
      type_or_value: __attribute__ ((noinline))
    - item_type: preproc_def
      name: ATTR_ZERO_REGS
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/cryptsetup/lib/crypto_backend/memutils.c
      type_or_value: __attribute__ ((zero_call_used_regs("used")))
    structs: []
    typedefs: []
    union: []
- function_names:
  - _crypt_cipher_init
  - crypt_cipher_init_kernel
  - _CMSG_NXTHDR
  - _crypt_cipher_crypt
  - crypt_cipher_encrypt_kernel
  - crypt_cipher_decrypt_kernel
  - crypt_cipher_destroy_kernel
  - crypt_cipher_check_kernel
  - crypt_bitlk_decrypt_key_kernel
  - crypt_cipher_init_kernel
  - crypt_cipher_destroy_kernel
  - crypt_cipher_encrypt_kernel
  - crypt_cipher_decrypt_kernel
  - crypt_cipher_check_kernel
  - crypt_bitlk_decrypt_key_kernel
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: AF_ALG
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
      type_or_value: '38'
    - item_type: preproc_def
      name: SOL_ALG
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
      type_or_value: '279'
    - item_type: preproc_def
      name: ALG_SET_AEAD_AUTHSIZE
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_cipher_kernel.c
      type_or_value: '5'
    structs: []
    typedefs: []
    union: []
- function_names:
  - VSTR
  - STR
  - HMAC_FCE
  - crypt_backend_flags
  - _get_alg
  - crypt_backend_init
  - crypt_backend_destroy
  - crypt_backend_version
  - crypt_hash_size
  - crypt_hash_init
  - crypt_hash_restart
  - crypt_hash_write
  - crypt_hash_final
  - crypt_hash_destroy
  - crypt_hmac_size
  - crypt_hmac_init
  - crypt_hmac_restart
  - crypt_hmac_write
  - crypt_hmac_final
  - crypt_hmac_destroy
  - crypt_backend_rng
  - crypt_pbkdf
  - crypt_cipher_init
  - crypt_cipher_destroy
  - crypt_cipher_encrypt
  - crypt_cipher_decrypt
  - crypt_cipher_kernel_only
  - crypt_bitlk_decrypt_key
  - crypt_backend_memeq
  - crypt_fips_mode
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: length
        type: int
      - name: init
        type: init_func
      - name: update
        type: update_func
      - name: digest
        type: digest_func
      - name: hmac_update
        type: update_func
      - name: hmac_digest
        type: digest_func
      - name: hmac_set_key
        type: set_key_func
      item_type: struct
      name: hash_alg
      pos:
        line_end: 40
        line_start: 31
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    - fields:
      - name: '*hash'
        type: struct hash_alg
      - name: nettle_ctx
        type: "union {\n\t\tstruct sha1_ctx sha1;\n\t\tstruct sha224_ctx sha224;\n\t\tstruct
          sha256_ctx sha256;\n\t\tstruct sha384_ctx sha384;\n\t\tstruct sha512_ctx
          sha512;\n\t\tstruct ripemd160_ctx ripemd160;\n\t\tstruct sha3_224_ctx sha3_224;\n\t\tstruct
          sha3_256_ctx sha3_256;\n\t\tstruct sha3_384_ctx sha3_384;\n\t\tstruct sha3_512_ctx
          sha3_512;\n\t}"
      item_type: struct
      name: crypt_hash
      pos:
        line_end: 161
        line_start: 147
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    - fields:
      - name: '*hash'
        type: struct hash_alg
      - name: nettle_ctx
        type: "union {\n\t\tstruct hmac_sha1_ctx sha1;\n\t\tstruct hmac_sha224_ctx
          sha224;\n\t\tstruct hmac_sha256_ctx sha256;\n\t\tstruct hmac_sha384_ctx
          sha384;\n\t\tstruct hmac_sha512_ctx sha512;\n\t\tstruct hmac_ripemd160_ctx
          ripemd160;\n\t\tstruct xhmac_sha3_224_ctx sha3_224;\n\t\tstruct xhmac_sha3_256_ctx
          sha3_256;\n\t\tstruct xhmac_sha3_384_ctx sha3_384;\n\t\tstruct xhmac_sha3_512_ctx
          sha3_512;\n\t}"
      - name: key_length
        type: size_t
      - name: '*key'
        type: uint8_t
      item_type: struct
      name: crypt_hmac
      pos:
        line_end: 179
        line_start: 163
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    - fields:
      - name: ck
        type: struct crypt_cipher_kernel
      item_type: struct
      name: crypt_cipher
      pos:
        line_end: 183
        line_start: 181
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
    typedefs:
    - item_type: typedef
      name: (*init_func) (void *)
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
      type: void
    - item_type: typedef
      name: (*update_func) (void *, size_t, const uint8_t *)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
      type: void
    - item_type: typedef
      name: (*digest_func) (void *, size_t, uint8_t *)
      pos:
        line_end: 28
        line_start: 28
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
      type: void
    - item_type: typedef
      name: (*set_key_func) (void *, size_t, const uint8_t *)
      pos:
        line_end: 29
        line_start: 29
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nettle.c
      type: void
    union: []
- function_names:
  - crypt_kernel_socket_init
  - crypt_backend_init
  - crypt_backend_destroy
  - crypt_backend_flags
  - crypt_backend_version
  - _get_alg
  - crypt_hash_size
  - crypt_hash_init
  - crypt_hash_write
  - crypt_hash_final
  - crypt_hash_destroy
  - crypt_hmac_size
  - crypt_hmac_init
  - crypt_hmac_write
  - crypt_hmac_final
  - crypt_hmac_destroy
  - crypt_backend_rng
  - crypt_pbkdf
  - crypt_cipher_init
  - crypt_cipher_destroy
  - crypt_cipher_encrypt
  - crypt_cipher_decrypt
  - crypt_cipher_kernel_only
  - crypt_bitlk_decrypt_key
  - crypt_backend_memeq
  - crypt_fips_mode
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: AF_ALG
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
      type_or_value: '38'
    - item_type: preproc_def
      name: SOL_ALG
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
      type_or_value: '279'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*kernel_name'
        type: char
      - name: length
        type: int
      - name: block_length
        type: unsigned int
      item_type: struct
      name: hash_alg
      pos:
        line_end: 32
        line_start: 27
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    - fields:
      - name: tfmfd
        type: int
      - name: opfd
        type: int
      - name: hash_len
        type: int
      item_type: struct
      name: crypt_hash
      pos:
        line_end: 64
        line_start: 60
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    - fields:
      - name: tfmfd
        type: int
      - name: opfd
        type: int
      - name: hash_len
        type: int
      item_type: struct
      name: crypt_hmac
      pos:
        line_end: 70
        line_start: 66
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    - fields:
      - name: ck
        type: struct crypt_cipher_kernel
      item_type: struct
      name: crypt_cipher
      pos:
        line_end: 74
        line_start: 72
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_kernel.c
    typedefs: []
    union: []
- function_names:
  - time_ms
  - cipher_perf_one
  - cipher_measure
  - speed_mbs
  - crypt_cipher_perf_kernel
  source_file: /src/cryptsetup/lib/crypto_backend/cipher_check.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLOCK_MONOTONIC_RAW
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/cryptsetup/lib/crypto_backend/cipher_check.c
      type_or_value: CLOCK_MONOTONIC
    - item_type: preproc_def
      name: CIPHER_BLOCK_BYTES
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/crypto_backend/cipher_check.c
      type_or_value: '65536'
    - item_type: preproc_def
      name: CIPHER_TIME_MIN_MS
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/crypto_backend/cipher_check.c
      type_or_value: '0.001'
    structs: []
    typedefs: []
    union: []
- function_names:
  - utf16_is_surrogate
  - utf16_is_trailing_surrogate
  - utf16_surrogate_pair_to_unichar
  - utf8_encode_unichar
  - crypt_utf16_to_utf8
  - utf8_encoded_expected_len
  - utf8_encoded_to_unichar
  - utf16_encode_unichar
  - crypt_utf8_to_utf16
  - crypt_char16_strlen
  source_file: /src/cryptsetup/lib/crypto_backend/utf8.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - OSSL_set_max_threads
  - OSSL_get_max_threads
  - CONST_CAST
  - UNUSED
  - openssl_backend_init
  - openssl_backend_exit
  - openssl_backend_version
  - EVP_MD_CTX_new
  - EVP_MD_CTX_free
  - HMAC_CTX_new
  - HMAC_CTX_free
  - openssl_backend_exit
  - openssl_backend_init
  - openssl_backend_version
  - crypt_backend_init
  - crypt_backend_destroy
  - crypt_backend_flags
  - crypt_backend_version
  - crypt_hash_compat_name
  - hash_id_get
  - hash_id_free
  - cipher_type_get
  - cipher_type_free
  - crypt_hash_size
  - crypt_hash_init
  - crypt_hash_restart
  - crypt_hash_write
  - crypt_hash_final
  - crypt_hash_destroy
  - crypt_hmac_size
  - crypt_hmac_init
  - crypt_hmac_restart
  - crypt_hmac_write
  - crypt_hmac_final
  - crypt_hmac_destroy
  - crypt_backend_rng
  - openssl_pbkdf2
  - openssl_argon2
  - crypt_pbkdf
  - _cipher_destroy
  - _cipher_init
  - crypt_cipher_init
  - crypt_cipher_destroy
  - _cipher_encrypt
  - _cipher_decrypt
  - crypt_cipher_encrypt
  - crypt_cipher_decrypt
  - crypt_cipher_kernel_only
  - crypt_bitlk_decrypt_key
  - crypt_backend_memeq
  - crypt_fips_mode
  - openssl_fips_mode
  - crypt_fips_mode
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_THREADS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
      type_or_value: '8'
    structs:
    - fields:
      - name: '*md'
        type: EVP_MD_CTX
      - name: '*hash_id'
        type: EVP_MD
      - name: hash_len
        type: int
      item_type: struct
      name: crypt_hash
      pos:
        line_end: 47
        line_start: 43
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    - fields:
      - name: hash_len
        type: int
      item_type: struct
      name: crypt_hmac
      pos:
        line_end: 59
        line_start: 49
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    - fields:
      - name: use_kernel
        type: bool
      - name: u
        type: "union {\n\tstruct crypt_cipher_kernel kernel;\n\tstruct {\n\t\tEVP_CIPHER_CTX
          *hd_enc;\n\t\tEVP_CIPHER_CTX *hd_dec;\n\t\tconst EVP_CIPHER *cipher_type;\n\t\tsize_t
          iv_length;\n\t} lib;\n\t}"
      item_type: struct
      name: crypt_cipher
      pos:
        line_end: 72
        line_start: 61
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    - fields:
      - name: '*name'
        type: char
      - name: '*openssl_name'
        type: char
      item_type: struct
      name: hash_alg
      pos:
        line_end: 77
        line_start: 74
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_openssl.c
    typedefs: []
    union: []
- function_names:
  - CONST_CAST
  - _get_alg
  - crypt_backend_init
  - crypt_backend_destroy
  - crypt_backend_flags
  - crypt_backend_version
  - crypt_hash_size
  - crypt_hash_init
  - crypt_hash_restart
  - crypt_hash_write
  - crypt_hash_final
  - crypt_hash_destroy
  - crypt_hmac_size
  - crypt_hmac_init
  - crypt_hmac_restart
  - crypt_hmac_write
  - crypt_hmac_final
  - crypt_hmac_destroy
  - crypt_backend_rng
  - crypt_pbkdf
  - crypt_cipher_init
  - crypt_cipher_destroy
  - crypt_cipher_encrypt
  - crypt_cipher_decrypt
  - crypt_cipher_kernel_only
  - crypt_bitlk_decrypt_key
  - crypt_backend_memeq
  - crypt_fips_mode
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: oid
        type: SECOidTag
      - name: ck_type
        type: CK_MECHANISM_TYPE
      - name: length
        type: int
      - name: block_length
        type: unsigned int
      item_type: struct
      name: hash_alg
      pos:
        line_end: 25
        line_start: 19
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    - fields:
      - name: '*md'
        type: PK11Context
      - name: '*hash'
        type: struct hash_alg
      item_type: struct
      name: crypt_hash
      pos:
        line_end: 39
        line_start: 36
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    - fields:
      - name: '*md'
        type: PK11Context
      - name: '*key'
        type: PK11SymKey
      - name: '*slot'
        type: PK11SlotInfo
      - name: '*hash'
        type: struct hash_alg
      item_type: struct
      name: crypt_hmac
      pos:
        line_end: 46
        line_start: 41
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    - fields:
      - name: ck
        type: struct crypt_cipher_kernel
      item_type: struct
      name: crypt_cipher
      pos:
        line_end: 50
        line_start: 48
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_nss.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_backend_internal.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: tfmfd
        type: int
      - name: opfd
        type: int
      item_type: struct
      name: crypt_cipher_kernel
      pos:
        line_end: 32
        line_start: 29
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_backend_internal.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/crypto_backend/crypto_backend.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: char32_t
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_backend.h
      type_or_value: uint32_t
    - item_type: preproc_def
      name: char16_t
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_backend.h
      type_or_value: uint16_t
    - item_type: preproc_def
      name: CRYPT_BACKEND_KERNEL
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_backend.h
      type_or_value: '(1 << 0) '
    - item_type: preproc_def
      name: CRYPT_BACKEND_PBKDF2_INT
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_backend.h
      type_or_value: '(1 << 1) '
    - item_type: preproc_def
      name: CRYPT_BACKEND_ARGON2
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_backend.h
      type_or_value: '(1 << 2) '
    structs:
    - fields:
      - name: min_iterations
        type: uint32_t
      - name: min_memory
        type: uint32_t
      - name: min_parallel
        type: uint32_t
      item_type: struct
      name: crypt_pbkdf_limits
      pos:
        line_end: 68
        line_start: 64
        source_file: /src/cryptsetup/lib/crypto_backend/crypto_backend.h
    typedefs: []
    union: []
- function_names:
  - fill_block
  - next_addresses
  - fill_segment
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/ref.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EQ
  - GT
  - GE
  - LT
  - LE
  - b64_byte_to_char
  - b64_char_to_byte
  - to_base64
  - from_base64
  - decode_decimal
  - decode_string
  - CC
  - CC_opt
  - DECIMAL
  - DECIMAL_U32
  - BIN
  - encode_string
  - SS
  - SX
  - SB
  - b64len
  - numlen
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/encoding.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ARGON2_MIN
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
  types:
    enum:
    - enumerators:
      - name: ARGON2_PWD_TOO_SHORT
        value: '-4'
      - name: ARGON2_AD_TOO_SHORT
        value: '-8'
      - name: ARGON2_LANES_TOO_FEW
        value: '-16'
      - name: ARGON2_TIME_TOO_SMALL
        value: '-12'
      - name: ARGON2_ALLOCATE_MEMORY_CBK_NULL
        value: '-24'
      - name: ARGON2_THREADS_TOO_FEW
        value: '-28'
      - name: ARGON2_DECODING_FAIL
        value: '-32'
      - name: ARGON2_OUTPUT_PTR_NULL
        value: '-1'
      - name: ARGON2_PWD_TOO_LONG
        value: '-5'
      - name: ARGON2_AD_TOO_LONG
        value: '-9'
      - name: ARGON2_LANES_TOO_MANY
        value: '-17'
      - name: ARGON2_TIME_TOO_LARGE
        value: '-13'
      - name: ARGON2_SECRET_PTR_MISMATCH
        value: '-20'
      - name: ARGON2_MEMORY_ALLOCATION_ERROR
        value: '-22'
      - name: ARGON2_INCORRECT_PARAMETER
        value: '-25'
      - name: ARGON2_THREADS_TOO_MANY
        value: '-29'
      - name: ARGON2_THREAD_FAIL
        value: '-33'
      - name: ARGON2_OUTPUT_TOO_SHORT
        value: '-2'
      - name: ARGON2_SALT_TOO_SHORT
        value: '-6'
      - name: ARGON2_SECRET_TOO_SHORT
        value: '-10'
      - name: ARGON2_MEMORY_TOO_LITTLE
        value: '-14'
      - name: ARGON2_PWD_PTR_MISMATCH
        value: '-18'
      - name: ARGON2_INCORRECT_TYPE
        value: '-26'
      - name: ARGON2_MISSING_ARGS
        value: '-30'
      - name: ARGON2_DECODING_LENGTH_FAIL
        value: '-34'
      - name: ARGON2_VERIFY_MISMATCH
        value: '-35'
      - name: ARGON2_OK
        value: '0'
      - name: ARGON2_OUTPUT_TOO_LONG
        value: '-3'
      - name: ARGON2_SALT_TOO_LONG
        value: '-7'
      - name: ARGON2_SECRET_TOO_LONG
        value: '-11'
      - name: ARGON2_MEMORY_TOO_MUCH
        value: '-15'
      - name: ARGON2_SALT_PTR_MISMATCH
        value: '-19'
      - name: ARGON2_AD_PTR_MISMATCH
        value: '-21'
      - name: ARGON2_FREE_MEMORY_CBK_NULL
        value: '-23'
      - name: ARGON2_OUT_PTR_MISMATCH
        value: '-27'
      - name: ARGON2_ENCODING_FAIL
        value: '-31'
      item_type: enum
      name: Argon2_ErrorCodes
      pos:
        line_end: 157
        line_start: 99
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
    - enumerators:
      - name: Argon2_d
        value: '0'
      - name: Argon2_i
        value: '1'
      - name: Argon2_id
        value: '2'
      item_type: enum
      name: Argon2_type
      pos:
        line_end: 224
        line_start: 220
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
    - enumerators:
      - name: ARGON2_VERSION_10
        value: '0x10'
      - name: ARGON2_VERSION_NUMBER
        value: ARGON2_VERSION_13
      - name: ARGON2_VERSION_13
        value: '0x13'
      item_type: enum
      name: Argon2_version
      pos:
        line_end: 231
        line_start: 227
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
    preproc_defs:
    - item_type: preproc_def
      name: ARGON2_PUBLIC
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: __attribute__((visibility("default")))
    - item_type: preproc_def
      name: ARGON2_LOCAL
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: __attribute__ ((visibility ("hidden")))
    - item_type: preproc_def
      name: ARGON2_PUBLIC
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: __declspec(dllexport)
    - item_type: preproc_def
      name: ARGON2_MIN_LANES
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(1)
    - item_type: preproc_def
      name: ARGON2_MAX_LANES
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0xFFFFFF)
    - item_type: preproc_def
      name: ARGON2_MIN_THREADS
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(1)
    - item_type: preproc_def
      name: ARGON2_MAX_THREADS
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0xFFFFFF)
    - item_type: preproc_def
      name: ARGON2_SYNC_POINTS
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(4)
    - item_type: preproc_def
      name: ARGON2_MIN_OUTLEN
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(4)
    - item_type: preproc_def
      name: ARGON2_MAX_OUTLEN
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0xFFFFFFFF)
    - item_type: preproc_def
      name: ARGON2_MIN_MEMORY
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: '(2 * ARGON2_SYNC_POINTS) '
    - item_type: preproc_def
      name: ARGON2_MAX_MEMORY_BITS
      pos:
        line_end: 66
        line_start: 64
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1))
    - item_type: preproc_def
      name: ARGON2_MAX_MEMORY
      pos:
        line_end: 68
        line_start: 66
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS)
    - item_type: preproc_def
      name: ARGON2_MIN_TIME
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(1)
    - item_type: preproc_def
      name: ARGON2_MAX_TIME
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0xFFFFFFFF)
    - item_type: preproc_def
      name: ARGON2_MIN_PWD_LENGTH
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0)
    - item_type: preproc_def
      name: ARGON2_MAX_PWD_LENGTH
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0xFFFFFFFF)
    - item_type: preproc_def
      name: ARGON2_MIN_AD_LENGTH
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0)
    - item_type: preproc_def
      name: ARGON2_MAX_AD_LENGTH
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0xFFFFFFFF)
    - item_type: preproc_def
      name: ARGON2_MIN_SALT_LENGTH
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(8)
    - item_type: preproc_def
      name: ARGON2_MAX_SALT_LENGTH
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0xFFFFFFFF)
    - item_type: preproc_def
      name: ARGON2_MIN_SECRET
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0)
    - item_type: preproc_def
      name: ARGON2_MAX_SECRET
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0xFFFFFFFF)
    - item_type: preproc_def
      name: ARGON2_DEFAULT_FLAGS
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: UINT32_C(0)
    - item_type: preproc_def
      name: ARGON2_FLAG_CLEAR_PASSWORD
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: (UINT32_C(1) << 0)
    - item_type: preproc_def
      name: ARGON2_FLAG_CLEAR_SECRET
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type_or_value: (UINT32_C(1) << 1)
    structs:
    - fields:
      - name: '*out'
        type: uint8_t
      - name: outlen
        type: uint32_t
      - name: '*pwd'
        type: uint8_t
      - name: pwdlen
        type: uint32_t
      - name: '*salt'
        type: uint8_t
      - name: saltlen
        type: uint32_t
      - name: '*secret'
        type: uint8_t
      - name: secretlen
        type: uint32_t
      - name: '*ad'
        type: uint8_t
      - name: adlen
        type: uint32_t
      - name: t_cost
        type: uint32_t
      - name: m_cost
        type: uint32_t
      - name: lanes
        type: uint32_t
      - name: threads
        type: uint32_t
      - name: version
        type: uint32_t
      - name: allocate_cbk
        type: allocate_fptr
      - name: free_cbk
        type: deallocate_fptr
      - name: flags
        type: uint32_t
      item_type: struct
      name: Argon2_Context
      pos:
        line_end: 217
        line_start: 190
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
    typedefs:
    - item_type: typedef
      name: (*allocate_fptr)(uint8_t **memory, size_t bytes_to_allocate)
      pos:
        line_end: 160
        line_start: 160
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type: int
    - item_type: typedef
      name: (*deallocate_fptr)(uint8_t *memory, size_t bytes_to_allocate)
      pos:
        line_end: 161
        line_start: 161
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.h
      type: void
    union: []
- function_names:
  - CONST_CAST
  - argon2_type2string
  - argon2_ctx
  - argon2_hash
  - argon2i_hash_encoded
  - argon2i_hash_raw
  - argon2d_hash_encoded
  - argon2d_hash_raw
  - argon2id_hash_encoded
  - argon2id_hash_raw
  - argon2_compare
  - argon2_verify
  - argon2i_verify
  - argon2d_verify
  - argon2id_verify
  - argon2d_ctx
  - argon2i_ctx
  - argon2id_ctx
  - argon2_verify_ctx
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/argon2.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fill_block
  - fill_block
  - fill_block
  - next_addresses
  - fill_segment
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/opt.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/thread.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: (__stdcall *argon2_thread_func_t)(void *)
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/thread.h
      type: unsigned
    - item_type: typedef
      name: argon2_thread_handle_t
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/thread.h
      type: uintptr_t
    - item_type: typedef
      name: '*(*argon2_thread_func_t)(void *)'
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/thread.h
      type: void
    - item_type: typedef
      name: argon2_thread_handle_t
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/thread.h
      type: pthread_t
    union: []
- function_names:
  - CONST_CAST
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.h
  types:
    enum:
    - enumerators:
      - name: ARGON2_BLOCK_SIZE
        value: '1024'
      - name: ARGON2_OWORDS_IN_BLOCK
        value: ARGON2_BLOCK_SIZE / 16
      - name: ARGON2_HWORDS_IN_BLOCK
        value: ARGON2_BLOCK_SIZE / 32
      - name: ARGON2_512BIT_WORDS_IN_BLOCK
        value: ARGON2_BLOCK_SIZE / 64
      - name: ARGON2_QWORDS_IN_BLOCK
        value: ARGON2_BLOCK_SIZE / 8
      - name: ARGON2_ADDRESSES_IN_BLOCK
        value: '128'
      - name: ARGON2_PREHASH_DIGEST_LENGTH
        value: '64'
      - name: ARGON2_PREHASH_SEED_LENGTH
        value: '72'
      item_type: enum
      name: argon2_core_constants
      pos:
        line_end: 42
        line_start: 26
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.h
    preproc_defs: []
    structs:
    - fields:
      - name: v[ARGON2_QWORDS_IN_BLOCK]
        type: uint64_t
      item_type: struct
      name: block_
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.h
    - fields:
      - name: '*memory'
        type: block
      - name: version
        type: uint32_t
      - name: passes
        type: uint32_t
      - name: memory_blocks
        type: uint32_t
      - name: segment_length
        type: uint32_t
      - name: lane_length
        type: uint32_t
      - name: lanes
        type: uint32_t
      - name: threads
        type: uint32_t
      - name: type
        type: argon2_type
      - name: print_internals
        type: int
      - name: '*context_ptr'
        type: argon2_context
      item_type: struct
      name: Argon2_instance_t
      pos:
        line_end: 82
        line_start: 70
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.h
    - fields:
      - name: pass
        type: uint32_t
      - name: lane
        type: uint32_t
      - name: slice
        type: uint8_t
      - name: index
        type: uint32_t
      item_type: struct
      name: Argon2_position_t
      pos:
        line_end: 93
        line_start: 88
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.h
    - fields:
      - name: '*instance_ptr'
        type: argon2_instance_t
      - name: pos
        type: argon2_position_t
      item_type: struct
      name: Argon2_thread_data
      pos:
        line_end: 99
        line_start: 96
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.h
    typedefs: []
    union: []
- function_names:
  - VC_GE_2005
  - init_block_value
  - copy_block
  - xor_block
  - load_block
  - store_block
  - allocate_memory
  - free_memory
  - secure_wipe_memory
  - secure_wipe_memory
  - secure_wipe_memory
  - NOT_OPTIMIZED::secure_wipe_memory
  - clear_internal_memory
  - finalize
  - index_alpha
  - fill_memory_blocks_st
  - fill_segment_thr
  - fill_memory_blocks_mt
  - fill_memory_blocks
  - validate_inputs
  - fill_first_blocks
  - initial_hash
  - initialize
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __STDC_WANT_LIB_EXT1__
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.c
      type_or_value: '1'
    - item_type: preproc_def
      name: NOT_OPTIMIZED
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.c
      type_or_value: __attribute__((optnone))
    - item_type: preproc_def
      name: GCC_VERSION
      pos:
        line_end: 47
        line_start: 45
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.c
      type_or_value: (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
    - item_type: preproc_def
      name: NOT_OPTIMIZED
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/core.c
      type_or_value: __attribute__((optimize("O0")))
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/encoding.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ARGON2_MAX_DECODED_LANES
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/encoding.h
      type_or_value: UINT32_C(255)
    - item_type: preproc_def
      name: ARGON2_MIN_DECODED_SALT_LEN
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/encoding.h
      type_or_value: UINT32_C(8)
    - item_type: preproc_def
      name: ARGON2_MIN_DECODED_OUT_LEN
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/encoding.h
      type_or_value: UINT32_C(12)
    structs: []
    typedefs: []
    union: []
- function_names:
  - argon2_thread_create
  - argon2_thread_join
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/thread.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - load32
  - load64
  - store32
  - store64
  - load48
  - store48
  - rotr32
  - rotr64
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BLAKE2_INLINE
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
      type_or_value: __inline
    - item_type: preproc_def
      name: BLAKE2_INLINE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2-impl.h
      type_or_value: __inline__
    structs: []
    typedefs: []
    union: []
- function_names:
  - blake2b_set_lastnode
  - blake2b_set_lastblock
  - blake2b_increment_counter
  - blake2b_invalidate_state
  - blake2b_init0
  - blake2b_init_param
  - blake2b_init
  - blake2b_init_key
  - blake2b_compress
  - G
  - ROUND
  - blake2b_update
  - blake2b_final
  - blake2b
  - blake2b_long
  - TRY
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2b.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fBlaMka
  - G
  - BLAKE2_ROUND_NOMSG
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-ref.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2.h
  types:
    enum:
    - enumerators:
      - name: BLAKE2B_BLOCKBYTES
        value: '128'
      - name: BLAKE2B_KEYBYTES
        value: '64'
      - name: BLAKE2B_PERSONALBYTES
        value: '16'
      - name: BLAKE2B_SALTBYTES
        value: '16'
      - name: BLAKE2B_OUTBYTES
        value: '64'
      item_type: enum
      name: blake2b_constant
      pos:
        line_end: 32
        line_start: 26
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2.h
    preproc_defs: []
    structs:
    - fields:
      - name: digest_length
        type: uint8_t
      - name: key_length
        type: uint8_t
      - name: fanout
        type: uint8_t
      - name: depth
        type: uint8_t
      - name: leaf_length
        type: uint32_t
      - name: node_offset
        type: uint64_t
      - name: node_depth
        type: uint8_t
      - name: inner_length
        type: uint8_t
      - name: reserved[14]
        type: uint8_t
      - name: salt[BLAKE2B_SALTBYTES]
        type: uint8_t
      - name: personal[BLAKE2B_PERSONALBYTES]
        type: uint8_t
      item_type: struct
      name: __blake2b_param
      pos:
        line_end: 47
        line_start: 35
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2.h
    - fields:
      - name: h[8]
        type: uint64_t
      - name: t[2]
        type: uint64_t
      - name: f[2]
        type: uint64_t
      - name: buf[BLAKE2B_BLOCKBYTES]
        type: uint8_t
      - name: buflen
        type: unsigned
      - name: outlen
        type: unsigned
      - name: last_node
        type: uint8_t
      item_type: struct
      name: __blake2b_state
      pos:
        line_end: 58
        line_start: 50
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blake2.h
    typedefs: []
    union: []
- function_names:
  - _mm_roti_epi64
  - _mm_roti_epi64
  - fBlaMka
  - G1
  - G2
  - DIAGONALIZE
  - UNDIAGONALIZE
  - DIAGONALIZE
  - UNDIAGONALIZE
  - BLAKE2_ROUND
  - rotr32
  - rotr24
  - rotr16
  - rotr63
  - G1_AVX2
  - G2_AVX2
  - DIAGONALIZE_1
  - DIAGONALIZE_2
  - UNDIAGONALIZE_1
  - UNDIAGONALIZE_2
  - BLAKE2_ROUND_1
  - BLAKE2_ROUND_2
  - ror64
  - muladd
  - G1
  - G2
  - DIAGONALIZE
  - UNDIAGONALIZE
  - BLAKE2_ROUND
  - SWAP_HALVES
  - SWAP_QUARTERS
  - UNSWAP_QUARTERS
  - BLAKE2_ROUND_1
  - BLAKE2_ROUND_2
  source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: r16
      pos:
        line_end: 37
        line_start: 35
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
      type_or_value: (_mm_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15,
        8, 9))
    - item_type: preproc_def
      name: r24
      pos:
        line_end: 39
        line_start: 37
        source_file: /src/cryptsetup/lib/crypto_backend/argon2/blake2/blamka-round-opt.h
      type_or_value: (_mm_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8,
        9, 10))
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/integrity/integrity.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SB_MAGIC
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '"integrt"'
    - item_type: preproc_def
      name: SB_VERSION_1
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '1'
    - item_type: preproc_def
      name: SB_VERSION_2
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '2'
    - item_type: preproc_def
      name: SB_VERSION_3
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '3'
    - item_type: preproc_def
      name: SB_VERSION_4
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '4'
    - item_type: preproc_def
      name: SB_VERSION_5
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '5'
    - item_type: preproc_def
      name: SB_VERSION_6
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '6'
    - item_type: preproc_def
      name: SB_FLAG_HAVE_JOURNAL_MAC
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: (1 << 0)
    - item_type: preproc_def
      name: SB_FLAG_RECALCULATING
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '(1 << 1) '
    - item_type: preproc_def
      name: SB_FLAG_DIRTY_BITMAP
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '(1 << 2) '
    - item_type: preproc_def
      name: SB_FLAG_FIXED_PADDING
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '(1 << 3) '
    - item_type: preproc_def
      name: SB_FLAG_FIXED_HMAC
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '(1 << 4) '
    - item_type: preproc_def
      name: SB_FLAG_INLINE
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/lib/integrity/integrity.h
      type_or_value: '(1 << 5) '
    structs:
    - fields:
      - name: magic[8]
        type: uint8_t
      - name: version
        type: uint8_t
      - name: log2_interleave_sectors
        type: int8_t
      - name: integrity_tag_size
        type: uint16_t
      - name: journal_sections
        type: uint32_t
      - name: provided_data_sectors
        type: uint64_t
      - name: flags
        type: uint32_t
      - name: log2_sectors_per_block
        type: uint8_t
      - name: log2_blocks_per_bitmap_bit
        type: uint8_t
      - name: pad[2]
        type: uint8_t
      - name: recalc_sector
        type: uint64_t
      - name: pad2[8]
        type: uint8_t
      - name: salt[16]
        type: uint8_t
      item_type: struct
      name: superblock
      pos:
        line_end: 49
        line_start: 35
        source_file: /src/cryptsetup/lib/integrity/integrity.h
    typedefs: []
    union: []
- function_names:
  - INTEGRITY_metadata_device
  - INTEGRITY_read_superblock
  - INTEGRITY_read_sb
  - INTEGRITY_dump
  - INTEGRITY_data_sectors
  - INTEGRITY_key_size
  - INTEGRITY_hash_tag_size
  - INTEGRITY_tag_size
  - INTEGRITY_create_dmd_device
  - INTEGRITY_activate_dmd_device
  - INTEGRITY_activate
  - _create_reduced_device
  - INTEGRITY_format
  source_file: /src/cryptsetup/lib/integrity/integrity.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_segments_get_minimal_offset
  - json_object_object_foreach
  - json_segment_get_offset
  - json_segment_type
  - json_segment_get_iv_offset
  - json_segment_get_size
  - json_segment_get_opal_size
  - json_segment_set_size
  - json_segment_get_cipher
  - json_segment_get_sector_size
  - json_segment_get_opal_segment_id
  - json_segment_get_opal_key_size
  - json_segment_get_flags
  - json_segment_contains_flag
  - json_segment_is_backup
  - json_segments_get_segment
  - json_segments_count
  - json_object_object_foreach
  - json_segment_remove_flag
  - _segment_create_generic
  - json_segment_create_linear
  - json_add_crypt_fields
  - json_segment_create_crypt
  - json_add_opal_fields
  - json_segment_create_opal
  - json_segment_create_opal_crypt
  - LUKS2_segment_offset
  - json_segments_segment_in_reencrypt
  - json_object_object_foreach
  - LUKS2_segment_size
  - LUKS2_opal_segment_size
  - LUKS2_segment_set_size
  - LUKS2_segment_is_type
  - json_segment_is_hw_opal_only
  - json_segment_is_hw_opal_crypt
  - json_segment_is_hw_opal
  - LUKS2_segment_is_hw_opal_only
  - LUKS2_segment_is_hw_opal_crypt
  - LUKS2_segment_is_hw_opal
  - LUKS2_get_opal_segment_number
  - LUKS2_get_opal_key_size
  - LUKS2_last_segment_by_type
  - json_object_object_foreach
  - LUKS2_segment_by_type
  - json_object_object_foreach
  - LUKS2_segment_first_unused_id
  - LUKS2_segment_set_flag
  - LUKS2_segments_set
  - LUKS2_get_segment_id_by_flag
  - json_object_object_foreach
  - LUKS2_get_segment_by_flag
  - json_object_object_foreach
  - json_segment_cmp
  - LUKS2_segments_dynamic_size
  - json_object_object_foreach
  source_file: /src/cryptsetup/lib/luks2/luks2_segment.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - keyring_open
  - keyring_validate
  - keyring_dump
  - LUKS2_token_keyring_json
  - LUKS2_token_keyring_get
  - keyring_buffer_free
  source_file: /src/cryptsetup/lib/luks2/luks2_token_keyring.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - reenc_keyslot_open
  - reencrypt_keyslot_area_jobj
  - reencrypt_keyslot_area_jobj_update_block_size
  - reenc_keyslot_alloc
  - reenc_keyslot_store_data
  - reenc_keyslot_store
  - reenc_keyslot_wipe
  - reenc_keyslot_dump
  - reenc_keyslot_validate
  - reenc_keyslot_update_needed
  - load_checksum_protection
  - reenc_keyslot_load_resilience_primary
  - reenc_keyslot_load_resilience_secondary
  - reenc_keyslot_load_resilience
  - reenc_keyslot_update_is_valid
  - reenc_keyslot_update
  - LUKS2_keyslot_reencrypt_allocate
  - LUKS2_keyslot_reencrypt_update_needed
  - LUKS2_keyslot_reencrypt_update
  - LUKS2_keyslot_reencrypt_load
  source_file: /src/cryptsetup/lib/luks2/luks2_keyslot_reenc.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - get_area_size
  - get_min_offset
  - get_max_offset
  - LUKS2_find_area_max_gap
  - LUKS2_find_area_gap
  - LUKS2_check_metadata_area_size
  - LUKS2_check_keyslots_area_size
  - LUKS2_generate_hdr
  - LUKS2_wipe_header_areas
  - LUKS2_set_keyslots_size
  - LUKS2_hdr_get_storage_params
  source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: offset
        type: uint64_t
      - name: length
        type: uint64_t
      item_type: struct
      name: area
      pos:
        line_end: 14
        line_start: 11
        source_file: /src/cryptsetup/lib/luks2/luks2_json_format.c
    typedefs: []
    union: []
- function_names:
  - PBKDF2_digest_verify
  - PBKDF2_digest_store
  - PBKDF2_digest_dump
  source_file: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUKS_DIGESTSIZE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c
      type_or_value: 20 // since SHA1
    - item_type: preproc_def
      name: LUKS_SALTSIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS_MKD_ITERATIONS_MS
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/cryptsetup/lib/luks2/luks2_digest_pbkdf2.c
      type_or_value: '125'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/luks2/luks2.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUKS2_MAGIC_1ST
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '"LUKS\xba\xbe"'
    - item_type: preproc_def
      name: LUKS2_MAGIC_2ND
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '"SKUL\xba\xbe"'
    - item_type: preproc_def
      name: LUKS2_MAGIC_L
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '6'
    - item_type: preproc_def
      name: LUKS2_UUID_L
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '40'
    - item_type: preproc_def
      name: LUKS2_LABEL_L
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '48'
    - item_type: preproc_def
      name: LUKS2_SALT_L
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '64'
    - item_type: preproc_def
      name: LUKS2_CHECKSUM_ALG_L
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS2_CHECKSUM_L
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '64'
    - item_type: preproc_def
      name: LUKS2_KEYSLOTS_MAX
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS2_TOKENS_MAX
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS2_SEGMENT_MAX
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS2_BUILTIN_TOKEN_PREFIX
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '"luks2-"'
    - item_type: preproc_def
      name: LUKS2_BUILTIN_TOKEN_PREFIX_LEN
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '6'
    - item_type: preproc_def
      name: LUKS2_TOKEN_NAME_MAX
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '64'
    - item_type: preproc_def
      name: LUKS2_TOKEN_KEYRING
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: LUKS2_BUILTIN_TOKEN_PREFIX "keyring"
    - item_type: preproc_def
      name: LUKS2_DIGEST_MAX
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '8'
    - item_type: preproc_def
      name: LUKS2_MIN_INTEGRITY_KEY_BYTES
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '16'
    - item_type: preproc_def
      name: CRYPT_ANY_SEGMENT
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: CRYPT_DEFAULT_SEGMENT
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '-2'
    - item_type: preproc_def
      name: CRYPT_ONE_SEGMENT
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '-3'
    - item_type: preproc_def
      name: CRYPT_ANY_DIGEST
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: LUKS2_DEFAULT_NONE_REENCRYPTION_LENGTH
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '0x1400000'
    - item_type: preproc_def
      name: LUKS2_REENCRYPT_MAX_HOTZONE_LENGTH
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '0x40000000'
    - item_type: preproc_def
      name: LUKS2_REENCRYPT_REQ_VERSION
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: UINT8_C(2)
    - item_type: preproc_def
      name: LUKS2_DECRYPT_DATASHIFT_REQ_VERSION
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: UINT8_C(3)
    - item_type: preproc_def
      name: LUKS2_HDR_16K_LEN
      pos:
        line_end: 140
        line_start: 139
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '0x4000'
    - item_type: preproc_def
      name: LUKS2_HDR_BIN_LEN
      pos:
        line_end: 142
        line_start: 141
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: sizeof(struct luks2_hdr_disk)
    - item_type: preproc_def
      name: LUKS2_DEFAULT_HDR_SIZE
      pos:
        line_end: 145
        line_start: 144
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '0x1000000 '
    - item_type: preproc_def
      name: LUKS2_MAX_KEYSLOTS_SIZE
      pos:
        line_end: 147
        line_start: 146
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '0x8000000 '
    - item_type: preproc_def
      name: LUKS2_HDR_OFFSET_MAX
      pos:
        line_end: 149
        line_start: 148
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: '0x400000 '
    - item_type: preproc_def
      name: LUKS2_HDR_MAX_MDA_SIZE
      pos:
        line_end: 151
        line_start: 150
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: 2 * LUKS2_HDR_OFFSET_MAX + LUKS2_MAX_KEYSLOTS_SIZE
    - item_type: preproc_def
      name: LUKS2_HDR2_OFFSETS
      pos:
        line_end: 155
        line_start: 153
        source_file: /src/cryptsetup/lib/luks2/luks2.h
      type_or_value: "{ 0x04000, 0x008000, 0x010000, 0x020000, \\\n                             0x40000,
        0x080000, 0x100000, 0x200000, LUKS2_HDR_OFFSET_MAX }"
    structs:
    - fields:
      - name: magic[LUKS2_MAGIC_L]
        type: char
      - name: version
        type: uint16_t
      - name: hdr_size
        type: uint64_t
      - name: seqid
        type: uint64_t
      - name: label[LUKS2_LABEL_L]
        type: char
      - name: checksum_alg[LUKS2_CHECKSUM_ALG_L]
        type: char
      - name: salt[LUKS2_SALT_L]
        type: uint8_t
      - name: uuid[LUKS2_UUID_L]
        type: char
      - name: subsystem[LUKS2_LABEL_L]
        type: char
      - name: hdr_offset
        type: uint64_t
      - name: _padding[184]
        type: char
      - name: csum[LUKS2_CHECKSUM_L]
        type: uint8_t
      - name: _padding4096[7*512]
        type: char
      item_type: struct
      name: luks2_hdr_disk
      pos:
        line_end: 96
        line_start: 81
        source_file: /src/cryptsetup/lib/luks2/luks2.h
    - fields:
      - name: hdr_size
        type: size_t
      - name: seqid
        type: uint64_t
      - name: version
        type: unsigned int
      - name: label[LUKS2_LABEL_L]
        type: char
      - name: subsystem[LUKS2_LABEL_L]
        type: char
      - name: checksum_alg[LUKS2_CHECKSUM_ALG_L]
        type: char
      - name: salt1[LUKS2_SALT_L]
        type: uint8_t
      - name: salt2[LUKS2_SALT_L]
        type: uint8_t
      - name: uuid[LUKS2_UUID_L]
        type: char
      - name: '*jobj'
        type: void
      - name: '*jobj_rollback'
        type: void
      - name: on_disk_json_end_offset
        type: size_t
      item_type: struct
      name: luks2_hdr
      pos:
        line_end: 114
        line_start: 101
        source_file: /src/cryptsetup/lib/luks2/luks2.h
    - fields:
      - name: af_type
        type: enum { LUKS2_KEYSLOT_AF_LUKS1 = 0 }
      - name: area_type
        type: enum { LUKS2_KEYSLOT_AREA_RAW = 0 }
      - name: af
        type: "union {\n\tstruct {\n\t\tchar hash[LUKS2_CHECKSUM_ALG_L]; // or include
          luks.h\n\t\tunsigned int stripes;\n\t} luks1;\n\t}"
      - name: area
        type: "union {\n\tstruct {\n\t\tchar encryption[65]; // or include utils_crypt.h\n\t\tsize_t
          key_size;\n\t} raw;\n\t}"
      item_type: struct
      name: luks2_keyslot_params
      pos:
        line_end: 133
        line_start: 116
        source_file: /src/cryptsetup/lib/luks2/luks2.h
    typedefs: []
    union: []
- function_names:
  - luks2_encrypt_to_storage
  - luks2_decrypt_from_storage
  - luks2_keyslot_get_pbkdf_params
  - luks2_keyslot_set_key
  - luks2_keyslot_get_key
  - luks2_keyslot_update_json
  - luks2_keyslot_alloc
  - luks2_keyslot_open
  - luks2_keyslot_store
  - luks2_keyslot_wipe
  - luks2_keyslot_dump
  - luks2_keyslot_validate
  - luks2_keyslot_update
  - luks2_keyslot_repair
  - json_object_object_foreach
  - json_object_object_foreach
  source_file: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUKS_SALTSIZE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
      type_or_value: '32'
    - item_type: preproc_def
      name: LUKS_SLOT_ITERATIONS_MIN
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
      type_or_value: '1000'
    - item_type: preproc_def
      name: MIN_MEMORY_FOR_SERIALIZE_LOCK_KB
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/cryptsetup/lib/luks2/luks2_keyslot_luks2.c
      type_or_value: '32*1024 '
    structs: []
    typedefs: []
    union: []
- function_names:
  - sr
  - srs
  - segment_linear_serialize
  - segment_crypt_serialize
  - segment_serialize
  - backup_segments_serialize
  - reenc_keyslot_serialize
  - blob_serialize
  - reencrypt_assembly_verification_data
  - LUKS2_keyslot_reencrypt_digest_create
  - LUKS2_reencrypt_digest_verify
  source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_STR
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
      type_or_value: '64'
    structs:
    - fields:
      - name: type
        type: enum { JNONE = 0, JSTR, JU64, JX64, JU32 }
      - name: '*jobj'
        type: json_object
      - name: '*id'
        type: char
      item_type: struct
      name: jtype
      pos:
        line_end: 17
        line_start: 13
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt_digest.c
    typedefs: []
    union: []
- function_names:
  - data_shift_value
  - reencrypt_segment
  - reencrypt_segment_new
  - reencrypt_segment_old
  - reencrypt_segments_old
  - reencrypt_segment_cipher_new
  - reencrypt_segment_cipher_old
  - reencrypt_get_sector_size_new
  - reencrypt_get_sector_size_old
  - reencrypt_data_offset
  - LUKS2_reencrypt_get_data_offset_moved
  - reencrypt_get_data_offset_new
  - reencrypt_get_data_offset_old
  - reencrypt_digest
  - LUKS2_reencrypt_digest_new
  - LUKS2_reencrypt_digest_old
  - LUKS2_reencrypt_segment_new
  - LUKS2_reencrypt_segment_old
  - LUKS2_reencrypt_vks_count
  - reencrypt_resilience_type
  - reencrypt_resilience_hash
  - _enc_create_segments_shift_after
  - reencrypt_make_hot_segments_encrypt_shift
  - reencrypt_make_segment_new
  - reencrypt_make_post_segments_forward
  - reencrypt_make_post_segments_backward
  - reencrypt_make_segment_reencrypt
  - reencrypt_make_segment_old
  - reencrypt_make_hot_segments_forward
  - reencrypt_make_hot_segments_decrypt_shift
  - _dec_create_segments_shift_after
  - reencrypt_make_hot_segments_backward
  - reencrypt_make_hot_segments
  - reencrypt_make_post_segments
  - reencrypt_data_shift
  - reencrypt_mode
  - reencrypt_direction
  - LUKS2_reencrypt_protection_erase
  - LUKS2_reencrypt_free
  - LUKS2_reencrypt_max_hotzone_size
  - reencrypt_get_alignment
  - _load_backup_segments
  - reencrypt_offset_backward_moved
  - reencrypt_offset_forward_moved
  - _offset_forward
  - _offset_backward
  - reencrypt_offset
  - reencrypt_length
  - reencrypt_context_init
  - reencrypt_buffer_length
  - reencrypt_load_clean
  - reencrypt_make_segments
  - reencrypt_make_segments_crashed
  - json_object_object_foreach
  - reencrypt_load_crashed
  - reencrypt_init_storage_wrappers
  - reencrypt_context_set_names
  - modify_offset
  - reencrypt_update_flag
  - reencrypt_hotzone_protect_ready
  - reencrypt_recover_segment
  - reencrypt_add_moved_segment
  - reencrypt_add_backup_segment
  - reencrypt_assign_segments_simple
  - reencrypt_assign_segments
  - reencrypt_set_encrypt_segments
  - reencrypt_set_decrypt_shift_segments
  - reencrypt_make_targets
  - reencrypt_load_overlay_device
  - reencrypt_replace_device
  - reencrypt_swap_backing_device
  - reencrypt_activate_hotzone_device
  - reencrypt_init_device_stack
  - reenc_refresh_helper_devices
  - reencrypt_refresh_overlay_devices
  - reencrypt_move_data
  - reencrypt_make_backup_segments
  - reencrypt_verify_single_key
  - reencrypt_verify_keys
  - reencrypt_upload_single_key
  - reencrypt_upload_keys
  - reencrypt_verify_and_upload_keys
  - reencrypt_verify_checksum_params
  - reencrypt_verify_datashift_params
  - reencrypt_verify_resilience_params
  - reencrypt_decrypt_with_datashift_init
  - reencrypt_init
  - reencrypt_hotzone_protect_final
  - reencrypt_context_update
  - reencrypt_load
  - LUKS2_reencrypt_max_hotzone_size
  - reencrypt_lock_internal
  - LUKS2_reencrypt_lock_by_dm_uuid
  - LUKS2_reencrypt_lock
  - LUKS2_reencrypt_unlock
  - reencrypt_lock_and_verify
  - reencrypt_load_by_keyslot_context
  - reencrypt_locked_recovery
  - reencrypt_recovery_by_keyslot_context
  - reencrypt_repair
  - reencrypt_init_by_keyslot_context
  - reencrypt_init_by_keyslot_context
  - crypt_reencrypt_init_by_keyring
  - crypt_reencrypt_init_by_passphrase
  - crypt_reencrypt_init_by_keyslot_context
  - reencrypt_step
  - reencrypt_erase_backup_segments
  - reencrypt_wipe_unused_device_area
  - reencrypt_teardown_ok
  - reencrypt_teardown_fatal
  - reencrypt_teardown
  - crypt_reencrypt_run
  - reencrypt_recovery
  - crypt_reencrypt_run
  - crypt_reencrypt
  - LUKS2_reencrypt_data_offset
  - LUKS2_reencrypt_check_device_size
  - LUKS2_reencrypt_locked_recovery_by_vks
  - LUKS2_reencrypt_get_params
  source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: offset
        type: uint64_t
      - name: progress
        type: uint64_t
      - name: length
        type: uint64_t
      - name: device_size
        type: uint64_t
      - name: online
        type: bool
      - name: fixed_length
        type: bool
      - name: direction
        type: crypt_reencrypt_direction_info
      - name: mode
        type: crypt_reencrypt_mode_info
      - name: '*device_name'
        type: char
      - name: '*hotzone_name'
        type: char
      - name: '*overlay_name'
        type: char
      - name: flags
        type: uint32_t
      - name: rp
        type: struct reenc_protection
      - name: rp_moved_segment
        type: struct reenc_protection
      - name: reenc_keyslot
        type: int
      - name: '*jobj_segs_hot'
        type: json_object
      - name: '*jobj_segs_post'
        type: json_object
      - name: '*jobj_segment_new'
        type: json_object
      - name: digest_new
        type: int
      - name: '*jobj_segment_old'
        type: json_object
      - name: digest_old
        type: int
      - name: '*jobj_segment_moved'
        type: json_object
      - name: '*vks'
        type: struct volume_key
      - name: '*reenc_buffer'
        type: void
      - name: read
        type: ssize_t
      - name: '*cw1'
        type: struct crypt_storage_wrapper
      - name: '*cw2'
        type: struct crypt_storage_wrapper
      - name: wflags1
        type: uint32_t
      - name: wflags2
        type: uint32_t
      - name: '*hotzone_device'
        type: struct device
      - name: '*reenc_lock'
        type: struct crypt_lock_handle
      item_type: struct
      name: luks2_reencrypt
      pos:
        line_end: 59
        line_start: 12
        source_file: /src/cryptsetup/lib/luks2/luks2_reencrypt.c
    typedefs: []
    union: []
- function_names:
  - parse_json_len
  - log_dbg_checksum
  - hdr_checksum_calculate
  - hdr_checksum_check
  - hdr_from_disk
  - hdr_to_disk
  - hdr_disk_sanity_check_pre
  - hdr_read_disk
  - hdr_write_disk
  - LUKS2_check_sequence_id
  - LUKS2_device_write_lock
  - LUKS2_disk_hdr_write
  - validate_json_area
  - validate_luks2_json_object
  - parse_and_validate_json
  - detect_device_signatures
  - LUKS2_disk_hdr_read
  - LUKS2_hdr_version_unlocked
  source_file: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: magic[LUKS2_MAGIC_L]
        type: char
      - name: version
        type: uint16_t
      item_type: struct
      name: hdr
      pos:
        line_end: 813
        line_start: 810
        source_file: /src/cryptsetup/lib/luks2/luks2_disk_metadata.c
    typedefs: []
    union: []
- function_names:
  - LUKS2_digest_handler_type
  - LUKS2_digest_handler
  - LUKS2_digest_find_free
  - LUKS2_digest_create
  - LUKS2_digest_by_keyslot
  - json_object_object_foreach
  - LUKS2_digest_verify_by_digest
  - LUKS2_digest_verify
  - LUKS2_digest_dump
  - LUKS2_digest_verify_by_any_matching
  - LUKS2_digest_verify_by_segment
  - LUKS2_digest_by_segment
  - json_object_object_foreach
  - assign_one_digest
  - LUKS2_digest_assign
  - json_object_object_foreach
  - assign_all_segments
  - json_object_object_foreach
  - assign_one_segment
  - LUKS2_digest_segment_assign
  - json_object_object_foreach
  - digest_unused
  - LUKS2_digests_erase_unused
  - json_object_object_foreach
  - get_key_description_by_digest
  - LUKS2_key_description_by_segment
  - LUKS2_volume_key_load_in_keyring_by_digest
  source_file: /src/cryptsetup/lib/luks2/luks2_digest.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - crypt_jobj_to_string_on_disk
  - crypt_reencrypt_mode_to_str
  source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: JSON_C_TO_STRING_NOSLASHESCAPE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type_or_value: '0'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: alloc
        type: keyslot_alloc_func
      - name: update
        type: keyslot_update_func
      - name: open
        type: keyslot_open_func
      - name: store
        type: keyslot_store_func
      - name: wipe
        type: keyslot_wipe_func
      - name: dump
        type: keyslot_dump_func
      - name: validate
        type: keyslot_validate_func
      - name: repair
        type: keyslot_repair_func
      item_type: struct
      name: keyslot_handler
      pos:
        line_end: 138
        line_start: 128
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
    - fields:
      - name: type
        type: "enum { REENC_PROTECTION_NOT_SET = 0,\n\t       REENC_PROTECTION_NONE,\n\t
          \      REENC_PROTECTION_CHECKSUM,\n\t       REENC_PROTECTION_JOURNAL,\n\t
          \      REENC_PROTECTION_DATASHIFT }"
      - name: p
        type: "union {\n\tstruct {\n\t\tchar hash[LUKS2_CHECKSUM_ALG_L];\n\t\tstruct
          crypt_hash *ch;\n\t\tsize_t hash_size;\n\t\t/* buffer for checksums */\n\t\tvoid
          *checksums;\n\t\tsize_t checksums_len;\n\t\tsize_t block_size;\n\t} csum;\n\tstruct
          {\n\t\tuint64_t data_shift;\n\t} ds;\n\t}"
      item_type: struct
      name: reenc_protection
      pos:
        line_end: 161
        line_start: 140
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
    - fields:
      - name: '*name'
        type: char
      - name: verify
        type: digest_verify_func
      - name: store
        type: digest_store_func
      - name: dump
        type: digest_dump_func
      item_type: struct
      name: digest_handler
      pos:
        line_end: 177
        line_start: 172
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
    - fields:
      - name: '*name'
        type: char
      - name: open
        type: crypt_token_open_func
      - name: buffer_free
        type: crypt_token_buffer_free_func
      - name: validate
        type: crypt_token_validate_func
      - name: dump
        type: crypt_token_dump_func
      - name: open_pin
        type: crypt_token_open_pin_func
      - name: version
        type: crypt_token_version_func
      - name: '*dlhandle'
        type: void
      item_type: struct
      name: crypt_token_handler_v2
      pos:
        line_end: 204
        line_start: 191
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
    - fields:
      - name: version
        type: uint32_t
      - name: u
        type: "union {\n\t\tcrypt_token_handler v1; /* deprecated public structure
          */\n\t\tstruct crypt_token_handler_v2 v2; /* internal helper v2 structure
          */\n\t}"
      item_type: struct
      name: crypt_token_handler_internal
      pos:
        line_end: 219
        line_start: 213
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
    typedefs:
    - item_type: typedef
      name: "(*keyslot_alloc_func)(struct crypt_device *cd, int keyslot,\n\t\t\t\t
        \ size_t volume_key_len,\n\t\t\t\t  const struct luks2_keyslot_params *params)"
      pos:
        line_end: 105
        line_start: 103
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    - item_type: typedef
      name: "(*keyslot_update_func)(struct crypt_device *cd, int keyslot,\n\t\t\t\t
        \  const struct luks2_keyslot_params *params)"
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    - item_type: typedef
      name: "(*keyslot_open_func) (struct crypt_device *cd, int keyslot,\n\t\t\t\t
        \ const char *password, size_t password_len,\n\t\t\t\t  char *volume_key,
        size_t volume_key_len)"
      pos:
        line_end: 110
        line_start: 108
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    - item_type: typedef
      name: "(*keyslot_store_func)(struct crypt_device *cd, int keyslot,\n\t\t\t\t
        \ const char *password, size_t password_len,\n\t\t\t\t  const char *volume_key,
        size_t volume_key_len)"
      pos:
        line_end: 113
        line_start: 111
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    - item_type: typedef
      name: (*keyslot_wipe_func) (struct crypt_device *cd, int keyslot)
      pos:
        line_end: 114
        line_start: 114
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    - item_type: typedef
      name: (*keyslot_dump_func) (struct crypt_device *cd, int keyslot)
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    - item_type: typedef
      name: (*keyslot_validate_func) (struct crypt_device *cd, json_object *jobj_keyslot)
      pos:
        line_end: 116
        line_start: 116
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    - item_type: typedef
      name: (*keyslot_repair_func) (json_object *jobj_keyslot)
      pos:
        line_end: 117
        line_start: 117
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: void
    - item_type: typedef
      name: "(*digest_verify_func)(struct crypt_device *cd, int digest,\n\t\t\t\t
        \ const char *volume_key, size_t volume_key_len)"
      pos:
        line_end: 167
        line_start: 166
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    - item_type: typedef
      name: "(*digest_store_func) (struct crypt_device *cd, int digest,\n\t\t\t\t
        \ const char *volume_key, size_t volume_key_len)"
      pos:
        line_end: 169
        line_start: 168
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    - item_type: typedef
      name: (*digest_dump_func)  (struct crypt_device *cd, int digest)
      pos:
        line_end: 170
        line_start: 170
        source_file: /src/cryptsetup/lib/luks2/luks2_internal.h
      type: int
    union: []
- function_names:
  - hexprint_base64
  - JSON_DBG
  - LUKS2_array_jobj
  - LUKS2_array_remove
  - LUKS2_get_keyslot_jobj
  - LUKS2_get_tokens_jobj
  - LUKS2_get_token_jobj
  - LUKS2_get_digest_jobj
  - json_get_segments_jobj
  - LUKS2_get_segment_jobj
  - LUKS2_get_segments_jobj
  - LUKS2_segments_count
  - LUKS2_get_default_segment
  - crypt_jobj_get_uint32
  - json_str_to_uint64
  - crypt_jobj_get_uint64
  - crypt_jobj_new_uint64
  - numbered
  - json_contains
  - json_contains_string
  - validate_json_uint32
  - validate_keyslots_array
  - validate_segments_array
  - segment_has_digest
  - json_object_object_foreach
  - validate_intervals
  - LUKS2_keyslot_validate
  - LUKS2_token_validate
  - hdr_validate_json_size
  - LUKS2_check_json_size
  - hdr_validate_keyslots
  - json_object_object_foreach
  - hdr_validate_tokens
  - json_object_object_foreach
  - hdr_validate_crypt_segment
  - validate_segment_intervals
  - reqs_unknown
  - reqs_reencrypt
  - reqs_reencrypt_online
  - reqs_opal
  - reqs_inline_hw_tags
  - validate_reencrypt_segments
  - hdr_validate_segments
  - json_object_object_foreach
  - LUKS2_metadata_size_jobj
  - LUKS2_metadata_size
  - hdr_validate_areas
  - json_object_object_foreach
  - hdr_validate_digests
  - json_object_object_foreach
  - hdr_validate_config
  - reencrypt_candidate_flag
  - hdr_validate_requirements
  - LUKS2_hdr_validate
  - hdr_json_free
  - hdr_update_copy_for_rollback
  - LUKS2_hdr_read
  - hdr_cleanup_and_validate
  - LUKS2_hdr_write_force
  - LUKS2_hdr_write
  - LUKS2_hdr_rollback
  - LUKS2_hdr_uuid
  - LUKS2_hdr_labels
  - LUKS2_hdr_free
  - LUKS2_keyslots_size_jobj
  - LUKS2_keyslots_size
  - LUKS2_hdr_and_areas_size_jobj
  - LUKS2_hdr_and_areas_size
  - LUKS2_hdr_backup
  - LUKS2_hdr_restore
  - LUKS2_config_get_flags
  - LUKS2_config_set_flags
  - get_requirement_by_name
  - mandatory_requirements_jobj
  - LUKS2_reencrypt_requirement_candidate
  - LUKS2_config_get_reencrypt_version
  - stored_requirement_name_by_id
  - LUKS2_config_get_requirements
  - LUKS2_config_set_requirements
  - LUKS2_get_mandatory_requirements_filtered_jobj
  - LUKS2_config_set_requirement_version
  - hdr_dump_config
  - get_priority_desc
  - hdr_dump_keyslots
  - json_object_object_foreach
  - hdr_dump_tokens
  - hdr_dump_segments
  - hdr_dump_digests
  - LUKS2_hdr_dump
  - LUKS2_hdr_dump_json
  - LUKS2_get_data_size
  - LUKS2_get_data_offset
  - LUKS2_get_cipher
  - LUKS2_reencrypt_status
  - LUKS2_get_keyslot_cipher
  - LUKS2_get_integrity
  - LUKS2_get_integrity_key_size
  - LUKS2_integrity_compatible
  - LUKS2_keyslot_get_volume_key_size
  - LUKS2_get_keyslot_stored_key_size
  - LUKS2_get_volume_key_size
  - json_object_object_foreach
  - LUKS2_get_old_volume_key_size
  - LUKS2_get_sector_size
  - LUKS2_assembly_multisegment_dmd
  - _reload_custom_multi
  - LUKS2_reload
  - LUKS2_activate_multi
  - LUKS2_activate
  - is_reencryption_helper
  - contains_reencryption_helper
  - LUKS2_deactivate
  - LUKS2_unmet_requirements
  - LUKS2_hdr_repair
  - json_object_object_del_by_uint
  - json_object_object_add_by_uint
  - json_object_object_add_by_uint_by_ref
  - json_object_copy
  - LUKS2_split_crypt_and_opal_keys
  source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: offset
        type: uint64_t
      - name: length
        type: uint64_t
      item_type: struct
      name: interval
      pos:
        line_end: 18
        line_start: 15
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    - fields:
      - name: (*validate)(struct crypt_device *, json_object *)
        type: int
      item_type: struct
      name: "checks[] = {\n\t\t{ hdr_validate_requirements },\n\t\t{ hdr_validate_tokens
        \  },\n\t\t{ hdr_validate_digests  },\n\t\t{ hdr_validate_segments },\n\t\t{
        hdr_validate_keyslots },\n\t\t{ hdr_validate_config   },\n\t\t{ hdr_validate_areas
        \   },\n\t\t{ NULL }\n\t}"
      pos:
        line_end: 1107
        line_start: 1105
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    - fields:
      - name: flag
        type: uint64_t
      - name: '*description'
        type: char
      item_type: struct
      name: "persistent_flags[] = {\n\t{ CRYPT_ACTIVATE_ALLOW_DISCARDS,         \"allow-discards\"
        },\n\t{ CRYPT_ACTIVATE_SAME_CPU_CRYPT,         \"same-cpu-crypt\" },\n\t{
        CRYPT_ACTIVATE_SUBMIT_FROM_CRYPT_CPUS, \"submit-from-crypt-cpus\" },\n\t{
        CRYPT_ACTIVATE_NO_JOURNAL,             \"no-journal\" },\n\t{ CRYPT_ACTIVATE_NO_READ_WORKQUEUE,
        \     \"no-read-workqueue\" },\n\t{ CRYPT_ACTIVATE_NO_WRITE_WORKQUEUE,     \"no-write-workqueue\"
        },\n\t{ CRYPT_ACTIVATE_HIGH_PRIORITY,          \"high_priority\" },\n\t{ 0,
        NULL }\n}"
      pos:
        line_end: 1551
        line_start: 1548
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    - fields:
      - name: flag
        type: uint32_t
      - name: version
        type: uint8_t
      - name: '*description'
        type: char
      item_type: struct
      name: requirement_flag
      pos:
        line_end: 1639
        line_start: 1635
        source_file: /src/cryptsetup/lib/luks2/luks2_json_metadata.c
    typedefs: []
    union: []
- function_names:
  - crypt_token_external_disable
  - crypt_token_external_path
  - crypt_token_set_external_path
  - crypt_token_set_external_path
  - token_validate_v1
  - token_dlvsym
  - token_validate_v2
  - external_token_name_valid
  - crypt_token_load_external
  - crypt_token_unload_external_all
  - crypt_token_load_external
  - crypt_token_unload_external_all
  - is_builtin_candidate
  - crypt_token_find_free
  - crypt_token_register
  - LUKS2_token_handler_type
  - LUKS2_token_handler
  - LUKS2_token_find_free
  - LUKS2_token_create
  - LUKS2_token_status
  - token_is_usable
  - translate_errno
  - token_open
  - LUKS2_token_buffer_free
  - break_loop_retval
  - update_return_errno
  - try_token_keyslot_unlock
  - LUKS2_keyslot_open_by_token
  - token_is_blocked
  - token_block
  - token_open_priority
  - json_object_object_foreach
  - token_open_any
  - LUKS2_token_unlock_key
  - LUKS2_token_dump
  - LUKS2_token_json_get
  - assign_one_keyslot
  - assign_one_token
  - json_object_object_foreach
  - LUKS2_token_assign
  - json_object_object_foreach
  - token_is_assigned
  - LUKS2_token_is_assigned
  - LUKS2_tokens_count
  - LUKS2_token_assignment_copy
  - LUKS2_token_unlock_passphrase
  - json_object_object_foreach
  source_file: /src/cryptsetup/lib/luks2/luks2_token.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TOKENS_PATH_MAX
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/cryptsetup/lib/luks2/luks2_token.c
      type_or_value: PATH_MAX
    structs: []
    typedefs: []
    union: []
- function_names:
  - LUKS2_check_cipher
  - json_luks1_keyslot
  - json_luks1_keyslots
  - json_luks1_segment
  - json_luks1_segments
  - json_luks1_digest
  - json_luks1_digests
  - json_luks1_object
  - move_keyslot_offset
  - json_object_object_foreach
  - move_keyslot_areas
  - luks_header_in_use
  - luksmeta_header_present
  - LUKS2_luks1_to_luks2
  - keyslot_LUKS1_compatible
  - LUKS2_luks2_to_luks1
  source_file: /src/cryptsetup/lib/luks2/luks2_luks1_convert.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LUKS2_keyslot_handler_type
  - LUKS2_keyslot_handler
  - LUKS2_keyslot_find_empty
  - _keyslot_for_segment
  - json_object_object_foreach
  - LUKS2_keyslot_for_segment
  - LUKS2_keyslot_active_count
  - json_object_object_foreach
  - LUKS2_keyslot_cipher_incompatible
  - LUKS2_keyslot_params_default
  - LUKS2_keyslot_pbkdf
  - LUKS2_keyslot_unbound
  - LUKS2_keyslot_info
  - LUKS2_keyslot_jobj_area
  - LUKS2_keyslot_area
  - _open_and_verify
  - LUKS2_open_and_verify
  - LUKS2_keyslot_open_priority
  - json_object_object_foreach
  - keyslot_context_open_all_segments
  - LUKS2_keyslot_context_open_all_segments
  - LUKS2_keyslot_open
  - LUKS2_keyslot_reencrypt_store
  - LUKS2_keyslot_store
  - LUKS2_keyslot_wipe
  - LUKS2_keyslot_dump
  - LUKS2_keyslot_priority_get
  - LUKS2_keyslot_priority_set
  - placeholder_keyslot_alloc
  - LUKS2_get_keyslot_digests_count
  - json_object_object_foreach
  - LUKS2_keyslots_validate
  - json_object_object_foreach
  - LUKS2_keyslots_repair
  - json_object_object_foreach
  - LUKS2_find_keyslot
  - LUKS2_keyslot_swap
  source_file: /src/cryptsetup/lib/luks2/luks2_keyslot.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - opal_status_to_string
  - opal_ioctl_to_string
  - opal_ioctl_debug
  - opal_ioctl
  - opal_geometry_fd
  - opal_range_check_attributes_fd
  - opal_query_status
  - opal_enabled
  - opal_activate_lsp
  - opal_reuse_active_lsp
  - opal_setup_range
  - opal_setup_user
  - opal_setup_ranges
  - opal_lock_unlock
  - opal_lock
  - opal_unlock
  - opal_factory_reset
  - opal_reset_segment
  - opal_supported
  - opal_geometry
  - opal_range_check_attributes_and_get_lock_state
  - opal_lock_internal
  - opal_exclusive_lock
  - opal_exclusive_unlock
  - opal_setup_ranges
  - opal_lock
  - opal_unlock
  - opal_supported
  - opal_factory_reset
  - opal_reset_segment
  - opal_geometry
  - opal_range_check_attributes_and_get_lock_state
  - opal_exclusive_lock
  - opal_exclusive_unlock
  source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
  types:
    enum:
    - enumerators:
      - name: OPAL_STATUS_SUCCESS
        value: '0x00'
      - name: OPAL_STATUS_SP_BUSY
        value: '0x03'
      - name: OPAL_STATUS_SP_FROZEN
        value: '0x06'
      - name: OPAL_STATUS_TPER_MALFUNCTION
        value: '0x0f'
      - name: OPAL_STATUS_INVALID_PARAMETER
        value: '0x0c'
      - name: _OPAL_STATUS_MAX
        value: '0x13'
      - name: OPAL_STATUS_OBSOLETE0
        value: '0x02'
      - name: OPAL_STATUS_SP_DISABLED
        value: '0x05'
      - name: OPAL_STATUS_INSUFFICIENT_SPACE
        value: '0x09'
      - name: OPAL_STATUS_AUTHORITY_LOCKED_OUT
        value: '0x12'
      - name: OPAL_STATUS_OBSOLETE3
        value: '0x0e'
      - name: OPAL_STATUS_OBSOLETE1
        value: '0x0b'
      - name: OPAL_STATUS_SP_FAILED
        value: '0x04'
      - name: OPAL_STATUS_NOT_AUTHORIZED
        value: '0x01'
      - name: OPAL_STATUS_UNIQUENESS_CONFLICT
        value: '0x08'
      - name: OPAL_STATUS_INSUFFICIENT_ROWS
        value: '0x0a'
      - name: OPAL_STATUS_RESPONSE_OVERFLOW
        value: '0x11'
      - name: OPAL_STATUS_OBSOLETE2
        value: '0x0d'
      - name: OPAL_STATUS_NO_SESSIONS_AVAILABLE
        value: '0x07'
      - name: OPAL_STATUS_TRANSACTION_FAILURE
        value: '0x10'
      item_type: enum
      name: OpalStatus
      pos:
        line_end: 58
        line_start: 37
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
    preproc_defs:
    - item_type: preproc_def
      name: OPAL_STATUS_FAIL
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.c
      type_or_value: '0x3f'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/cryptsetup/lib/luks2/hw_opal/hw_opal.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
