// File: kulpreet[P]lightning-network-graph-analysis/src/readgraph_test.cpp
// Function: Degrees::degrees::test_method()
BOOST_AUTO_TEST_CASE(degrees) {
  vector<Degree> expected_in = boost::assign::list_of(1)(1)(2);
  vector<Degree> expected_out = boost::assign::list_of(2)(1)(1);
  vector<Degree> expected_total = boost::assign::list_of(3)(2)(3);

  vector<Degree> in_degrees, out_degrees, degrees;
  get_degrees(in_degrees, out_degrees, degrees, g);
  BOOST_TEST(in_degrees == expected_in, tt::per_element());
  BOOST_TEST(out_degrees == expected_out, tt::per_element());
  BOOST_TEST(degrees == expected_total, tt::per_element());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x550, %rsp            # imm = 0x550
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x460(%rbp)
movl $0x1, -0x74(%rbp)
leaq -0x70(%rbp), %rdi
movq %rdi, -0x458(%rbp)
leaq -0x74(%rbp), %rsi
callq 0xe470
movq -0x458(%rbp), %rdi
movl $0x1, -0x78(%rbp)
leaq -0x78(%rbp), %rsi
callq 0xe4f0
movq %rax, -0x450(%rbp)
jmp 0xb795
movq -0x450(%rbp), %rdi
movl $0x2, -0x88(%rbp)
leaq -0x88(%rbp), %rsi
callq 0xe4f0
movq %rax, -0x468(%rbp)
jmp 0xb7bb
movq -0x468(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0xe530
jmp 0xb7cd
leaq -0x70(%rbp), %rdi
callq 0xe560
movl $0x2, -0xf4(%rbp)
leaq -0xf0(%rbp), %rdi
leaq -0xf4(%rbp), %rsi
callq 0xe470
jmp 0xb7f5
movl $0x1, -0xf8(%rbp)
leaq -0xf0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0xe4f0
movq %rax, -0x470(%rbp)
jmp 0xb81b
movq -0x470(%rbp), %rdi
movl $0x1, -0xfc(%rbp)
leaq -0xfc(%rbp), %rsi
callq 0xe4f0
movq %rax, -0x478(%rbp)
jmp 0xb841
movq -0x478(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0xe530
jmp 0xb856
leaq -0xf0(%rbp), %rdi
callq 0xe560
movl $0x3, -0x16c(%rbp)
leaq -0x168(%rbp), %rdi
leaq -0x16c(%rbp), %rsi
callq 0xe470
jmp 0xb881
movl $0x2, -0x170(%rbp)
leaq -0x168(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xe4f0
movq %rax, -0x480(%rbp)
jmp 0xb8a7
movq -0x480(%rbp), %rdi
movl $0x3, -0x174(%rbp)
leaq -0x174(%rbp), %rsi
callq 0xe4f0
movq %rax, -0x488(%rbp)
jmp 0xb8cd
movq -0x488(%rbp), %rsi
leaq -0x118(%rbp), %rdi
callq 0xe530
jmp 0xb8e2
leaq -0x168(%rbp), %rdi
callq 0xe560
leaq -0x190(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
callq 0xde10
leaq -0x1a8(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0xde10
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0xde10
movq -0x4a0(%rbp), %rdi
movq -0x498(%rbp), %rsi
movq -0x490(%rbp), %rdx
movq -0x460(%rbp), %rcx
callq 0xa850
jmp 0xb94a
jmp 0xb94c
movq 0x62b25(%rip), %rax     # 0x6e478
movq %rax, -0x4a8(%rbp)
leaq 0x3b7f8(%rip), %rsi     # 0x47159
leaq -0x1d0(%rbp), %rdi
movl $0x16, %edx
callq 0xc300
jmp 0xb974
leaq -0x1e0(%rbp), %rdi
callq 0xe580
jmp 0xb982
movq -0x4a8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
movl $0x38, %edx
leaq -0x1e0(%rbp), %rcx
callq 0x8750
jmp 0xb9a3
leaq -0x238(%rbp), %rdi
leaq -0x239(%rbp), %rsi
leaq -0x190(%rbp), %rdx
callq 0xe640
jmp 0xb9bf
leaq -0x230(%rbp), %rdi
leaq -0x238(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0xe670
jmp 0xb9d8
leaq -0x220(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0xe610
jmp 0xb9ed
leaq -0x1f8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xe5b0
jmp 0xba02
callq 0xe730
movq %rax, -0x4b0(%rbp)
jmp 0xba10
leaq 0x3b761(%rip), %rsi     # 0x47178
leaq -0x270(%rbp), %rdi
movl $0x19, %edx
callq 0xc300
jmp 0xba2a
movq -0x4b0(%rbp), %rsi
leaq -0x260(%rbp), %rdi
leaq -0x270(%rbp), %rdx
callq 0xe6f0
jmp 0xba46
callq 0xe730
movq %rax, -0x4b8(%rbp)
jmp 0xba54
movq -0x4b8(%rbp), %rdi
callq 0xe740
movq %rax, -0x4c0(%rbp)
jmp 0xba69
movq -0x4c0(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0xe6b0
movq %rax, -0x4c8(%rbp)
jmp 0xba85
leaq 0x3b6cd(%rip), %rsi     # 0x47159
leaq -0x288(%rbp), %rdi
movl $0x16, %edx
callq 0xc300
jmp 0xba9f
leaq -0x290(%rbp), %rdi
movl $0x1, %esi
callq 0xe780
jmp 0xbab2
leaq -0x290(%rbp), %rdi
callq 0xe750
movl %eax, -0x4cc(%rbp)
jmp 0xbac6
movl -0x4cc(%rbp), %eax
movl %eax, -0x28c(%rbp)
leaq -0x28c(%rbp), %rdi
callq 0xe7a0
movl %eax, -0x4d0(%rbp)
jmp 0xbae6
movl -0x4d0(%rbp), %r9d
movq -0x4c8(%rbp), %rsi
movq %rsp, %rax
movq $0x0, (%rax)
xorl %eax, %eax
leaq -0x1f8(%rbp), %rdi
leaq -0x288(%rbp), %rdx
movl $0x38, %ecx
movl $0x1, %r8d
callq 0x8730
jmp 0xbb20
leaq -0x260(%rbp), %rdi
callq 0xe7b0
leaq -0x1f8(%rbp), %rdi
callq 0xe7d0
leaq -0x220(%rbp), %rdi
callq 0xe7f0
callq 0xe810
movb %al, -0x4d1(%rbp)
jmp 0xbb51
movb -0x4d1(%rbp), %al
testb $0x1, %al
jne 0xb94c
jmp 0xbb61
jmp 0xbb63
movq 0x6290e(%rip), %rax     # 0x6e478
movq %rax, -0x4e0(%rbp)
leaq 0x3b5e1(%rip), %rsi     # 0x47159
leaq -0x2a8(%rbp), %rdi
movl $0x16, %edx
callq 0xc300
jmp 0xbb8b
leaq -0x2b8(%rbp), %rdi
callq 0xe580
jmp 0xbb99
movq -0x4e0(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
movl $0x39, %edx
leaq -0x2b8(%rbp), %rcx
callq 0x8750
jmp 0xbbba
leaq -0x310(%rbp), %rdi
leaq -0x311(%rbp), %rsi
leaq -0x1a8(%rbp), %rdx
callq 0xe640
jmp 0xbbd6
leaq -0x308(%rbp), %rdi
leaq -0x310(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0xe670
jmp 0xbbf2
leaq -0x2f8(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0xe610
jmp 0xbc07
leaq -0x2d0(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0xe5b0
jmp 0xbc1c
callq 0xe730
movq %rax, -0x4e8(%rbp)
jmp 0xbc2a
leaq 0x3b561(%rip), %rsi     # 0x47192
leaq -0x348(%rbp), %rdi
movl $0x1b, %edx
callq 0xc300
jmp 0xbc44
movq -0x4e8(%rbp), %rsi
leaq -0x338(%rbp), %rdi
leaq -0x348(%rbp), %rdx
callq 0xe6f0
jmp 0xbc60
callq 0xe730
movq %rax, -0x4f0(%rbp)
jmp 0xbc6e
movq -0x4f0(%rbp), %rdi
callq 0xe740
movq %rax, -0x4f8(%rbp)
jmp 0xbc83
movq -0x4f8(%rbp), %rsi
leaq -0x338(%rbp), %rdi
callq 0xe6b0
movq %rax, -0x500(%rbp)
jmp 0xbc9f
leaq 0x3b4b3(%rip), %rsi     # 0x47159
leaq -0x360(%rbp), %rdi
movl $0x16, %edx
callq 0xc300
jmp 0xbcb9
leaq -0x368(%rbp), %rdi
movl $0x1, %esi
callq 0xe780
jmp 0xbccc
leaq -0x368(%rbp), %rdi
callq 0xe750
movl %eax, -0x504(%rbp)
jmp 0xbce0
movl -0x504(%rbp), %eax
movl %eax, -0x364(%rbp)
leaq -0x364(%rbp), %rdi
callq 0xe7a0
movl %eax, -0x508(%rbp)
jmp 0xbd00
movl -0x508(%rbp), %r9d
movq -0x500(%rbp), %rsi
movq %rsp, %rax
movq $0x0, (%rax)
xorl %eax, %eax
leaq -0x2d0(%rbp), %rdi
leaq -0x360(%rbp), %rdx
movl $0x39, %ecx
movl $0x1, %r8d
callq 0x8730
jmp 0xbd3a
leaq -0x338(%rbp), %rdi
callq 0xe7b0
leaq -0x2d0(%rbp), %rdi
callq 0xe7d0
leaq -0x2f8(%rbp), %rdi
callq 0xe7f0
callq 0xe810
movb %al, -0x509(%rbp)
jmp 0xbd6b
movb -0x509(%rbp), %al
testb $0x1, %al
jne 0xbb63
jmp 0xbd7b
jmp 0xbd7d
movq 0x626f4(%rip), %rax     # 0x6e478
movq %rax, -0x518(%rbp)
leaq 0x3b3c7(%rip), %rsi     # 0x47159
leaq -0x380(%rbp), %rdi
movl $0x16, %edx
callq 0xc300
jmp 0xbda5
leaq -0x390(%rbp), %rdi
callq 0xe580
jmp 0xbdb3
movq -0x518(%rbp), %rdi
leaq -0x380(%rbp), %rsi
movl $0x3a, %edx
leaq -0x390(%rbp), %rcx
callq 0x8750
jmp 0xbdd4
leaq -0x3e8(%rbp), %rdi
leaq -0x3e9(%rbp), %rsi
leaq -0x1c0(%rbp), %rdx
callq 0xe640
jmp 0xbdf0
leaq -0x3e0(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
leaq -0x118(%rbp), %rdx
callq 0xe670
jmp 0xbe0c
leaq -0x3d0(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0xe610
jmp 0xbe21
leaq -0x3a8(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0xe5b0
jmp 0xbe36
callq 0xe730
movq %rax, -0x520(%rbp)
jmp 0xbe44
leaq 0x3b363(%rip), %rsi     # 0x471ae
leaq -0x420(%rbp), %rdi
movl $0x19, %edx
callq 0xc300
jmp 0xbe5e
movq -0x520(%rbp), %rsi
leaq -0x410(%rbp), %rdi
leaq -0x420(%rbp), %rdx
callq 0xe6f0
jmp 0xbe7a
callq 0xe730
movq %rax, -0x528(%rbp)
jmp 0xbe88
movq -0x528(%rbp), %rdi
callq 0xe740
movq %rax, -0x530(%rbp)
jmp 0xbe9d
movq -0x530(%rbp), %rsi
leaq -0x410(%rbp), %rdi
callq 0xe6b0
movq %rax, -0x538(%rbp)
jmp 0xbeb9
leaq 0x3b299(%rip), %rsi     # 0x47159
leaq -0x438(%rbp), %rdi
movl $0x16, %edx
callq 0xc300
jmp 0xbed3
leaq -0x440(%rbp), %rdi
movl $0x1, %esi
callq 0xe780
jmp 0xbee6
leaq -0x440(%rbp), %rdi
callq 0xe750
movl %eax, -0x53c(%rbp)
jmp 0xbefa
movl -0x53c(%rbp), %eax
movl %eax, -0x43c(%rbp)
leaq -0x43c(%rbp), %rdi
callq 0xe7a0
movl %eax, -0x540(%rbp)
jmp 0xbf1a
movl -0x540(%rbp), %r9d
movq -0x538(%rbp), %rsi
movq %rsp, %rax
movq $0x0, (%rax)
xorl %eax, %eax
leaq -0x3a8(%rbp), %rdi
leaq -0x438(%rbp), %rdx
movl $0x3a, %ecx
movl $0x1, %r8d
callq 0x8730
jmp 0xbf54
leaq -0x410(%rbp), %rdi
callq 0xe7b0
leaq -0x3a8(%rbp), %rdi
callq 0xe7d0
leaq -0x3d0(%rbp), %rdi
callq 0xe7f0
callq 0xe810
movb %al, -0x541(%rbp)
jmp 0xbf85
movb -0x541(%rbp), %al
testb $0x1, %al
jne 0xbd7d
jmp 0xbf95
leaq -0x1c0(%rbp), %rdi
callq 0xdf20
leaq -0x1a8(%rbp), %rdi
callq 0xdf20
leaq -0x190(%rbp), %rdi
callq 0xdf20
leaq -0x118(%rbp), %rdi
callq 0xdf20
leaq -0xa0(%rbp), %rdi
callq 0xdf20
leaq -0x20(%rbp), %rdi
callq 0xdf20
addq $0x550, %rsp            # imm = 0x550
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xe560
jmp 0xc1c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xc1be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0xe560
jmp 0xc1be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xc1b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x168(%rbp), %rdi
callq 0xe560
jmp 0xc1b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xc182
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xc0c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xc0b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x260(%rbp), %rdi
callq 0xe7b0
leaq -0x1f8(%rbp), %rdi
callq 0xe7d0
leaq -0x220(%rbp), %rdi
callq 0xe7f0
jmp 0xc182
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xc11f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xc113
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x338(%rbp), %rdi
callq 0xe7b0
leaq -0x2d0(%rbp), %rdi
callq 0xe7d0
leaq -0x2f8(%rbp), %rdi
callq 0xe7f0
jmp 0xc182
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xc176
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xc16a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x410(%rbp), %rdi
callq 0xe7b0
leaq -0x3a8(%rbp), %rdi
callq 0xe7d0
leaq -0x3d0(%rbp), %rdi
callq 0xe7f0
leaq -0x1c0(%rbp), %rdi
callq 0xdf20
leaq -0x1a8(%rbp), %rdi
callq 0xdf20
leaq -0x190(%rbp), %rdi
callq 0xdf20
leaq -0x118(%rbp), %rdi
callq 0xdf20
leaq -0xa0(%rbp), %rdi
callq 0xdf20
leaq -0x20(%rbp), %rdi
callq 0xdf20
movq -0x80(%rbp), %rdi
callq 0x86d0