// File: dsharlet[P]array/test/ein_reduce.cpp
// Function: nda::test_ein_sum_cross_body()
TEST(ein_sum_cross) {
  const int count = 10;
  matrix<int, 3, dynamic> x({{}, count}, 0);
  matrix<int, 3, dynamic> y({{}, count}, 0);
  fill_pattern(x);
  fill_pattern(y, 3);

  // Compute the cross product of an array of vectors.
  // TODO: We can't infer the output shape of this, because ein<> of a function
  // doesn't provide a shape.
  matrix<int, 3, dynamic> cross({{}, count}, 0);
  ein_reduce(ein<i, l>(cross) += ein<i, j, k>(epsilon3) * ein<j, l>(x) * ein<k, l>(y));

  ASSERT_EQ(cross.rank(), 2);
  ASSERT_EQ(cross.rows(), 3);
  ASSERT_EQ(cross.columns(), count);
  for (int l = 0; l < count; l++) {
    ASSERT_EQ(x(1, l) * y(2, l) - x(2, l) * y(1, l), cross(0, l));
    ASSERT_EQ(x(2, l) * y(0, l) - x(0, l) * y(2, l), cross(1, l));
    ASSERT_EQ(x(0, l) * y(1, l) - x(1, l) * y(0, l), cross(2, l));
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1340, %rsp           # imm = 0x1340
movl $0xa, -0x70(%rbp)
leaq -0x108(%rbp), %rdi
movq %rdi, -0xf90(%rbp)
callq 0xc77a0
leaq -0x120(%rbp), %rdi
movq %rdi, -0xf88(%rbp)
movl $0xa, %esi
callq 0x10bf0
movq -0xf90(%rbp), %rsi
movq -0xf88(%rbp), %rdx
leaq -0xf0(%rbp), %rdi
movq %rdi, -0xf80(%rbp)
callq 0xc77c0
movq -0xf80(%rbp), %rsi
movl $0x0, -0x124(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0x124(%rbp), %rdx
callq 0xc7810
leaq -0x1c0(%rbp), %rdi
callq 0xc77a0
jmp 0xae500
leaq -0x1e8(%rbp), %rdi
movl $0xa, %esi
callq 0x10bf0
jmp 0xae513
leaq -0x1a8(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
leaq -0x1e8(%rbp), %rdx
callq 0xc77c0
jmp 0xae52f
movl $0x0, -0x1ec(%rbp)
leaq -0x178(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1ec(%rbp), %rdx
callq 0xc7810
jmp 0xae555
leaq -0xc0(%rbp), %rdi
xorl %esi, %esi
callq 0xc7890
jmp 0xae565
leaq -0x178(%rbp), %rdi
movl $0x3, %esi
callq 0xc7890
jmp 0xae578
leaq -0x288(%rbp), %rdi
callq 0xc77a0
jmp 0xae586
leaq -0x2a0(%rbp), %rdi
movl $0xa, %esi
callq 0x10bf0
jmp 0xae599
leaq -0x270(%rbp), %rdi
leaq -0x288(%rbp), %rsi
leaq -0x2a0(%rbp), %rdx
callq 0xc77c0
jmp 0xae5b5
movl $0x0, -0x2a4(%rbp)
leaq -0x240(%rbp), %rdi
leaq -0x270(%rbp), %rsi
leaq -0x2a4(%rbp), %rdx
callq 0xc7810
jmp 0xae5db
leaq 0x1930e(%rip), %rdi     # 0xc78f0
callq 0xc78c0
movq %rax, -0xf98(%rbp)
jmp 0xae5f0
movq -0xf98(%rbp), %rax
movq %rax, -0x418(%rbp)
leaq -0x450(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0xc7970
jmp 0xae613
leaq -0x410(%rbp), %rdi
leaq -0x418(%rbp), %rsi
leaq -0x450(%rbp), %rdx
callq 0xc7920
jmp 0xae62f
leaq -0x488(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0xc7a00
jmp 0xae644
leaq -0x3d0(%rbp), %rdi
leaq -0x410(%rbp), %rsi
leaq -0x488(%rbp), %rdx
callq 0xc79b0
jmp 0xae660
leaq -0x4c0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0xc7a40
jmp 0xae675
leaq -0x358(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
leaq -0x3d0(%rbp), %rdx
callq 0xc7a80
jmp 0xae691
leaq -0x4f8(%rbp), %rax
movq %rax, -0x8(%rbp)
leaq -0x358(%rbp), %rax
movq %rax, -0x10(%rbp)
movq $0x4, -0x18(%rbp)
movq -0x10(%rbp), %rdx
movq %rdx, %r8
addq $0x38, %r8
leaq -0x68(%rbp), %rdi
leaq -0x69(%rbp), %rsi
leaq -0x6a(%rbp), %rcx
callq 0xb9220
jmp 0xae6cd
movq -0x10(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0xba0d0
jmp 0xae6dc
movq -0x10(%rbp), %rsi
leaq -0x4f8(%rbp), %rdi
movl $0x38, %edx
callq 0x31c0
callq 0xc7ac0
movq %rax, -0xfa0(%rbp)
jmp 0xae6ff
movq -0xfa0(%rbp), %rax
subq $0x2, %rax
sete %al
movb %al, -0xfa9(%rbp)
leaq -0x6a9(%rbp), %rdi
movq %rdi, -0xfa8(%rbp)
callq 0x33b0
movq -0xfa8(%rbp), %rdx
leaq 0x13b329(%rip), %rsi    # 0x1e9a5d
leaq -0x6a8(%rbp), %rdi
callq 0x10a90
jmp 0xae742
movb -0xfa9(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x688(%rbp), %rdi
leaq -0x6a8(%rbp), %rdx
callq 0x10f80
jmp 0xae763
leaq 0x12e07b(%rip), %rsi    # 0x1dc7e5
leaq -0x688(%rbp), %rdi
callq 0x34320
movq %rax, -0xfb8(%rbp)
jmp 0xae77f
movq -0xfb8(%rbp), %rdi
leaq 0x13b2e2(%rip), %rsi    # 0x1e9a6f
callq 0x346f0
movq %rax, -0xfc0(%rbp)
jmp 0xae79b
movq -0xfc0(%rbp), %rdi
leaq 0x132003(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0xfc8(%rbp)
jmp 0xae7b7
callq 0xc7ac0
movq %rax, -0xfd0(%rbp)
jmp 0xae7c5
movq -0xfc8(%rbp), %rdi
movq -0xfd0(%rbp), %rax
movq %rax, -0x6b8(%rbp)
leaq -0x6b8(%rbp), %rsi
callq 0x355c0
movq %rax, -0xfd8(%rbp)
jmp 0xae7ef
movq -0xfd8(%rbp), %rdi
leaq 0x12dfe8(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0xfe0(%rbp)
jmp 0xae80b
movq -0xfe0(%rbp), %rdi
leaq 0x136ed8(%rip), %rsi    # 0x1e56f1
callq 0x34320
movq %rax, -0xfe8(%rbp)
jmp 0xae827
movq -0xfe8(%rbp), %rdi
leaq 0x131f77(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0xff0(%rbp)
jmp 0xae843
movq -0xff0(%rbp), %rdi
movl $0x2, -0x6bc(%rbp)
leaq -0x6bc(%rbp), %rsi
callq 0x343a0
movq %rax, -0xff8(%rbp)
jmp 0xae869
movq -0xff8(%rbp), %rdi
leaq 0x147c04(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0xae87e
leaq -0x688(%rbp), %rdi
callq 0x10ff0
jmp 0xae88c
leaq -0x6a8(%rbp), %rdi
callq 0x3100
leaq -0x6a9(%rbp), %rdi
callq 0x3290
leaq -0x240(%rbp), %rdi
callq 0xc7ad0
movq %rax, -0x1000(%rbp)
jmp 0xae8b9
movq -0x1000(%rbp), %rax
subq $0x3, %rax
sete %al
movb %al, -0x1009(%rbp)
leaq -0x871(%rbp), %rdi
movq %rdi, -0x1008(%rbp)
callq 0x33b0
movq -0x1008(%rbp), %rdx
leaq 0x13b18e(%rip), %rsi    # 0x1e9a7c
leaq -0x870(%rbp), %rdi
callq 0x10a90
jmp 0xae8fc
movb -0x1009(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x850(%rbp), %rdi
leaq -0x870(%rbp), %rdx
callq 0x10f80
jmp 0xae91d
leaq 0x12dec1(%rip), %rsi    # 0x1dc7e5
leaq -0x850(%rbp), %rdi
callq 0x34320
movq %rax, -0x1018(%rbp)
jmp 0xae939
movq -0x1018(%rbp), %rdi
leaq 0x13b147(%rip), %rsi    # 0x1e9a8e
callq 0x346f0
movq %rax, -0x1020(%rbp)
jmp 0xae955
movq -0x1020(%rbp), %rdi
leaq 0x131e49(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x1028(%rbp)
jmp 0xae971
leaq -0x240(%rbp), %rdi
callq 0xc7ad0
movq %rax, -0x1030(%rbp)
jmp 0xae986
movq -0x1028(%rbp), %rdi
movq -0x1030(%rbp), %rax
movq %rax, -0x880(%rbp)
leaq -0x880(%rbp), %rsi
callq 0x34510
movq %rax, -0x1038(%rbp)
jmp 0xae9b0
movq -0x1038(%rbp), %rdi
leaq 0x12de27(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0x1040(%rbp)
jmp 0xae9cc
movq -0x1040(%rbp), %rdi
leaq 0x138880(%rip), %rsi    # 0x1e725a
callq 0x34320
movq %rax, -0x1048(%rbp)
jmp 0xae9e8
movq -0x1048(%rbp), %rdi
leaq 0x131db6(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x1050(%rbp)
jmp 0xaea04
movq -0x1050(%rbp), %rdi
movl $0x3, -0x884(%rbp)
leaq -0x884(%rbp), %rsi
callq 0x343a0
movq %rax, -0x1058(%rbp)
jmp 0xaea2a
movq -0x1058(%rbp), %rdi
leaq 0x147a43(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0xaea3f
leaq -0x850(%rbp), %rdi
callq 0x10ff0
jmp 0xaea4d
leaq -0x870(%rbp), %rdi
callq 0x3100
leaq -0x871(%rbp), %rdi
callq 0x3290
leaq -0x240(%rbp), %rdi
callq 0xc7af0
movq %rax, -0x1060(%rbp)
jmp 0xaea7a
movq -0x1060(%rbp), %rax
subq $0xa, %rax
sete %al
movb %al, -0x1069(%rbp)
leaq -0xa39(%rbp), %rdi
movq %rdi, -0x1068(%rbp)
callq 0x33b0
movq -0x1068(%rbp), %rdx
leaq 0x13afec(%rip), %rsi    # 0x1e9a9b
leaq -0xa38(%rbp), %rdi
callq 0x10a90
jmp 0xaeabd
movb -0x1069(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0xa18(%rbp), %rdi
leaq -0xa38(%rbp), %rdx
callq 0x10f80
jmp 0xaeade
leaq 0x12dd00(%rip), %rsi    # 0x1dc7e5
leaq -0xa18(%rbp), %rdi
callq 0x34320
movq %rax, -0x1078(%rbp)
jmp 0xaeafa
movq -0x1078(%rbp), %rdi
leaq 0x13afac(%rip), %rsi    # 0x1e9ab4
callq 0x969a0
movq %rax, -0x1080(%rbp)
jmp 0xaeb16
movq -0x1080(%rbp), %rdi
leaq 0x131c88(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x1088(%rbp)
jmp 0xaeb32
leaq -0x240(%rbp), %rdi
callq 0xc7af0
movq %rax, -0x1090(%rbp)
jmp 0xaeb47
movq -0x1088(%rbp), %rdi
movq -0x1090(%rbp), %rax
movq %rax, -0xa48(%rbp)
leaq -0xa48(%rbp), %rsi
callq 0x34510
movq %rax, -0x1098(%rbp)
jmp 0xaeb71
movq -0x1098(%rbp), %rdi
leaq 0x12dc66(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0x10a0(%rbp)
jmp 0xaeb8d
movq -0x10a0(%rbp), %rdi
leaq 0x13af13(%rip), %rsi    # 0x1e9aae
callq 0x661c0
movq %rax, -0x10a8(%rbp)
jmp 0xaeba9
movq -0x10a8(%rbp), %rdi
leaq 0x131bf5(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x10b0(%rbp)
jmp 0xaebc5
movq -0x10b0(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x343a0
movq %rax, -0x10b8(%rbp)
jmp 0xaebde
movq -0x10b8(%rbp), %rdi
leaq 0x14788f(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0xaebf3
leaq -0xa18(%rbp), %rdi
callq 0x10ff0
jmp 0xaec01
leaq -0xa38(%rbp), %rdi
callq 0x3100
leaq -0xa39(%rbp), %rdi
callq 0x3290
movl $0x0, -0xa4c(%rbp)
cmpl $0xa, -0xa4c(%rbp)
jge 0xaf925
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x10c0(%rbp)
jmp 0xaec50
movq -0x10c0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x10cc(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x10c8(%rbp)
jmp 0xaec7f
movl -0x10cc(%rbp), %eax
movq -0x10c8(%rbp), %rcx
movl (%rcx), %ecx
imull %ecx, %eax
movl %eax, -0x10dc(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x10d8(%rbp)
jmp 0xaecb7
movq -0x10d8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x10ec(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x10e8(%rbp)
jmp 0xaece6
movl -0x10dc(%rbp), %eax
movl -0x10ec(%rbp), %ecx
movq -0x10e8(%rbp), %rdx
movl (%rdx), %edx
imull %edx, %ecx
subl %ecx, %eax
movl %eax, -0x10fc(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x240(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x10f8(%rbp)
jmp 0xaed23
movl -0x10fc(%rbp), %eax
movq -0x10f8(%rbp), %rcx
movl (%rcx), %ecx
subl %ecx, %eax
sete %al
movb %al, -0x1109(%rbp)
leaq -0xc01(%rbp), %rdi
movq %rdi, -0x1108(%rbp)
callq 0x33b0
movq -0x1108(%rbp), %rdx
leaq 0x13ad66(%rip), %rsi    # 0x1e9ac4
leaq -0xc00(%rbp), %rdi
callq 0x10a90
jmp 0xaed6c
movb -0x1109(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0xbe0(%rbp), %rdi
leaq -0xc00(%rbp), %rdx
callq 0x10f80
jmp 0xaed8d
leaq 0x12da51(%rip), %rsi    # 0x1dc7e5
leaq -0xbe0(%rbp), %rdi
callq 0x34320
movq %rax, -0x1118(%rbp)
jmp 0xaeda9
movq -0x1118(%rbp), %rdi
leaq 0x13ad42(%rip), %rsi    # 0x1e9af9
callq 0xc7b60
movq %rax, -0x1120(%rbp)
jmp 0xaedc5
movq -0x1120(%rbp), %rdi
leaq 0x1319d9(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x1128(%rbp)
jmp 0xaede1
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x1130(%rbp)
jmp 0xaee01
movq -0x1130(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x113c(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x1138(%rbp)
jmp 0xaee30
movl -0x113c(%rbp), %eax
movq -0x1138(%rbp), %rcx
movl (%rcx), %ecx
imull %ecx, %eax
movl %eax, -0x114c(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x1148(%rbp)
jmp 0xaee68
movq -0x1148(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x115c(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x1158(%rbp)
jmp 0xaee97
movq -0x1128(%rbp), %rdi
movl -0x114c(%rbp), %eax
movl -0x115c(%rbp), %ecx
movq -0x1158(%rbp), %rdx
movl (%rdx), %edx
imull %edx, %ecx
subl %ecx, %eax
movl %eax, -0xc08(%rbp)
leaq -0xc08(%rbp), %rsi
callq 0x343a0
movq %rax, -0x1168(%rbp)
jmp 0xaeed3
movq -0x1168(%rbp), %rdi
leaq 0x12d904(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0x1170(%rbp)
jmp 0xaeeef
movq -0x1170(%rbp), %rdi
leaq 0x13abf0(%rip), %rsi    # 0x1e9aed
callq 0xc7360
movq %rax, -0x1178(%rbp)
jmp 0xaef0b
movq -0x1178(%rbp), %rdi
leaq 0x131893(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x1180(%rbp)
jmp 0xaef27
movl -0xa4c(%rbp), %edx
leaq -0x240(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x1188(%rbp)
jmp 0xaef44
movq -0x1188(%rbp), %rsi
movq -0x1180(%rbp), %rdi
callq 0x343a0
movq %rax, -0x1190(%rbp)
jmp 0xaef60
movq -0x1190(%rbp), %rdi
leaq 0x14750d(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0xaef75
leaq -0xbe0(%rbp), %rdi
callq 0x10ff0
jmp 0xaef83
leaq -0xc00(%rbp), %rdi
callq 0x3100
leaq -0xc01(%rbp), %rdi
callq 0x3290
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x1198(%rbp)
jmp 0xaefbb
movq -0x1198(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x11a4(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x11a0(%rbp)
jmp 0xaefe7
movl -0x11a4(%rbp), %eax
movq -0x11a0(%rbp), %rcx
movl (%rcx), %ecx
imull %ecx, %eax
movl %eax, -0x11b4(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x11b0(%rbp)
jmp 0xaf01c
movq -0x11b0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x11c4(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x11c0(%rbp)
jmp 0xaf04b
movl -0x11b4(%rbp), %eax
movl -0x11c4(%rbp), %ecx
movq -0x11c0(%rbp), %rdx
movl (%rdx), %edx
imull %edx, %ecx
subl %ecx, %eax
movl %eax, -0x11d4(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x240(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x11d0(%rbp)
jmp 0xaf08b
movl -0x11d4(%rbp), %eax
movq -0x11d0(%rbp), %rcx
movl (%rcx), %ecx
subl %ecx, %eax
sete %al
movb %al, -0x11e1(%rbp)
leaq -0xdb9(%rbp), %rdi
movq %rdi, -0x11e0(%rbp)
callq 0x33b0
movq -0x11e0(%rbp), %rdx
leaq 0x13aa59(%rip), %rsi    # 0x1e9b1f
leaq -0xdb8(%rbp), %rdi
callq 0x10a90
jmp 0xaf0d4
movb -0x11e1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0xd98(%rbp), %rdi
leaq -0xdb8(%rbp), %rdx
callq 0x10f80
jmp 0xaf0f5
leaq 0x12d6e9(%rip), %rsi    # 0x1dc7e5
leaq -0xd98(%rbp), %rdi
callq 0x34320
movq %rax, -0x11f0(%rbp)
jmp 0xaf111
movq -0x11f0(%rbp), %rdi
leaq 0x13aa35(%rip), %rsi    # 0x1e9b54
callq 0xc7b60
movq %rax, -0x11f8(%rbp)
jmp 0xaf12d
movq -0x11f8(%rbp), %rdi
leaq 0x131671(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x1200(%rbp)
jmp 0xaf149
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x1208(%rbp)
jmp 0xaf169
movq -0x1208(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x1214(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x1210(%rbp)
jmp 0xaf195
movl -0x1214(%rbp), %eax
movq -0x1210(%rbp), %rcx
movl (%rcx), %ecx
imull %ecx, %eax
movl %eax, -0x1224(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x1220(%rbp)
jmp 0xaf1ca
movq -0x1220(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x1234(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x1230(%rbp)
jmp 0xaf1f9
movq -0x1200(%rbp), %rdi
movl -0x1224(%rbp), %eax
movl -0x1234(%rbp), %ecx
movq -0x1230(%rbp), %rdx
movl (%rdx), %edx
imull %edx, %ecx
subl %ecx, %eax
movl %eax, -0xdc0(%rbp)
leaq -0xdc0(%rbp), %rsi
callq 0x343a0
movq %rax, -0x1240(%rbp)
jmp 0xaf235
movq -0x1240(%rbp), %rdi
leaq 0x12d5a2(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0x1248(%rbp)
jmp 0xaf251
movq -0x1248(%rbp), %rdi
leaq 0x13a8e9(%rip), %rsi    # 0x1e9b48
callq 0xc7360
movq %rax, -0x1250(%rbp)
jmp 0xaf26d
movq -0x1250(%rbp), %rdi
leaq 0x131531(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x1258(%rbp)
jmp 0xaf289
movl -0xa4c(%rbp), %edx
leaq -0x240(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x1260(%rbp)
jmp 0xaf2a9
movq -0x1260(%rbp), %rsi
movq -0x1258(%rbp), %rdi
callq 0x343a0
movq %rax, -0x1268(%rbp)
jmp 0xaf2c5
movq -0x1268(%rbp), %rdi
leaq 0x1471a8(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0xaf2da
leaq -0xd98(%rbp), %rdi
callq 0x10ff0
jmp 0xaf2e8
leaq -0xdb8(%rbp), %rdi
callq 0x3100
leaq -0xdb9(%rbp), %rdi
callq 0x3290
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x1270(%rbp)
jmp 0xaf31d
movq -0x1270(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x127c(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x1278(%rbp)
jmp 0xaf34c
movl -0x127c(%rbp), %eax
movq -0x1278(%rbp), %rcx
movl (%rcx), %ecx
imull %ecx, %eax
movl %eax, -0x128c(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x1288(%rbp)
jmp 0xaf384
movq -0x1288(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x129c(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x1298(%rbp)
jmp 0xaf3b0
movl -0x128c(%rbp), %eax
movl -0x129c(%rbp), %ecx
movq -0x1298(%rbp), %rdx
movl (%rdx), %edx
imull %edx, %ecx
subl %ecx, %eax
movl %eax, -0x12ac(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x240(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x12a8(%rbp)
jmp 0xaf3f0
movl -0x12ac(%rbp), %eax
movq -0x12a8(%rbp), %rcx
movl (%rcx), %ecx
subl %ecx, %eax
sete %al
movb %al, -0x12b9(%rbp)
leaq -0xf71(%rbp), %rdi
movq %rdi, -0x12b8(%rbp)
callq 0x33b0
movq -0x12b8(%rbp), %rdx
leaq 0x13a74f(%rip), %rsi    # 0x1e9b7a
leaq -0xf70(%rbp), %rdi
callq 0x10a90
jmp 0xaf439
movb -0x12b9(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0xf50(%rbp), %rdi
leaq -0xf70(%rbp), %rdx
callq 0x10f80
jmp 0xaf45a
leaq 0x12d384(%rip), %rsi    # 0x1dc7e5
leaq -0xf50(%rbp), %rdi
callq 0x34320
movq %rax, -0x12c8(%rbp)
jmp 0xaf476
movq -0x12c8(%rbp), %rdi
leaq 0x13a72b(%rip), %rsi    # 0x1e9baf
callq 0xc7b60
movq %rax, -0x12d0(%rbp)
jmp 0xaf492
movq -0x12d0(%rbp), %rdi
leaq 0x13130c(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x12d8(%rbp)
jmp 0xaf4ae
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x12e0(%rbp)
jmp 0xaf4cb
movq -0x12e0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x12ec(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x12e8(%rbp)
jmp 0xaf4fa
movl -0x12ec(%rbp), %eax
movq -0x12e8(%rbp), %rcx
movl (%rcx), %ecx
imull %ecx, %eax
movl %eax, -0x12fc(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0xc0(%rbp), %rdi
movl $0x1, %esi
callq 0xc7b10
movq %rax, -0x12f8(%rbp)
jmp 0xaf532
movq -0x12f8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x130c(%rbp)
movl -0xa4c(%rbp), %edx
leaq -0x178(%rbp), %rdi
xorl %esi, %esi
callq 0xc7b10
movq %rax, -0x1308(%rbp)
jmp 0xaf55e
movq -0x12d8(%rbp), %rdi
movl -0x12fc(%rbp), %eax
movl -0x130c(%rbp), %ecx
movq -0x1308(%rbp), %rdx
movl (%rdx), %edx
imull %edx, %ecx
subl %ecx, %eax
movl %eax, -0xf78(%rbp)
leaq -0xf78(%rbp), %rsi
callq 0x343a0
movq %rax, -0x1318(%rbp)
jmp 0xaf59a
movq -0x1318(%rbp), %rdi
leaq 0x12d23d(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0x1320(%rbp)
jmp 0xaf5b6
movq -0x1320(%rbp), %rdi
leaq 0x13a5df(%rip), %rsi    # 0x1e9ba3
callq 0xc7360
movq %rax, -0x1328(%rbp)
jmp 0xaf5d2
movq -0x1328(%rbp), %rdi
leaq 0x1311cc(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x1330(%rbp)
jmp 0xaf5ee
movl -0xa4c(%rbp), %edx
leaq -0x240(%rbp), %rdi
movl $0x2, %esi
callq 0xc7b10
movq %rax, -0x1338(%rbp)
jmp 0xaf60e
movq -0x1338(%rbp), %rsi
movq -0x1330(%rbp), %rdi
callq 0x343a0
movq %rax, -0x1340(%rbp)
jmp 0xaf62a
movq -0x1340(%rbp), %rdi
leaq 0x146e43(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0xaf63f
leaq -0xf50(%rbp), %rdi
callq 0x10ff0
jmp 0xaf64d
leaq -0xf70(%rbp), %rdi
callq 0x3100
leaq -0xf71(%rbp), %rdi
callq 0x3290
movl -0xa4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4c(%rbp)
jmp 0xaec23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf96a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf95e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf952
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf714
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf708
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x688(%rbp), %rdi
callq 0x10ff0
jmp 0xaf706
jmp 0xaf708
leaq -0x6a8(%rbp), %rdi
callq 0x3100
leaq -0x6a9(%rbp), %rdi
callq 0x3290
jmp 0xaf952
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf77b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf76f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x850(%rbp), %rdi
callq 0x10ff0
jmp 0xaf76d
jmp 0xaf76f
leaq -0x870(%rbp), %rdi
callq 0x3100
leaq -0x871(%rbp), %rdi
callq 0x3290
jmp 0xaf952
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf7e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf7d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0xa18(%rbp), %rdi
callq 0x10ff0
jmp 0xaf7d4
jmp 0xaf7d6
leaq -0xa38(%rbp), %rdi
callq 0x3100
leaq -0xa39(%rbp), %rdi
callq 0x3290
jmp 0xaf952
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf83d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0xbe0(%rbp), %rdi
callq 0x10ff0
jmp 0xaf83b
jmp 0xaf83d
leaq -0xc00(%rbp), %rdi
callq 0x3100
leaq -0xc01(%rbp), %rdi
callq 0x3290
jmp 0xaf952
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf8b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf8a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0xd98(%rbp), %rdi
callq 0x10ff0
jmp 0xaf8a2
jmp 0xaf8a4
leaq -0xdb8(%rbp), %rdi
callq 0x3100
leaq -0xdb9(%rbp), %rdi
callq 0x3290
jmp 0xaf952
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf917
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaf90b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0xf50(%rbp), %rdi
callq 0x10ff0
jmp 0xaf909
jmp 0xaf90b
leaq -0xf70(%rbp), %rdi
callq 0x3100
leaq -0xf71(%rbp), %rdi
callq 0x3290
jmp 0xaf952
leaq -0x240(%rbp), %rdi
callq 0xc7ba0
leaq -0x178(%rbp), %rdi
callq 0xc7ba0
leaq -0xc0(%rbp), %rdi
callq 0xc7ba0
addq $0x1340, %rsp           # imm = 0x1340
popq %rbp
retq
leaq -0x240(%rbp), %rdi
callq 0xc7ba0
leaq -0x178(%rbp), %rdi
callq 0xc7ba0
leaq -0xc0(%rbp), %rdi
callq 0xc7ba0
movq -0x1c8(%rbp), %rdi
callq 0x33a0
movq %rax, %rdi
callq 0x116d0
nopw (%rax,%rax)