void update_cell_2D_BRANCH(double *sc_old, double *sc_new, double *u_buff,
                           int iX, int iY, int nX, int nY, double delta_t,
                           double alpha, int scheme) {
  int tid;
  double sum_face_a = 0.;
  double sum_face_d = 0.;
  double u_face;
  double u_face_t = 0.;
  double sc_face;
  double sc_face_grad;
  tid = iY * nX + iX;
  get_uface_2d(iX, iY, nX, nY, 1, 0, 0, tid, &u_face, u_buff);
  if (scheme == 0)
    get_face_2d_up(iX, iY, nX, nY, 1, 0, 1, tid, delta_t, u_face, u_face_t,
                   &sc_face, sc_old);
  else if (scheme == 1)
    get_face_2d_laxwend(iX, iY, nX, nY, 1, 0, 1, tid, delta_t, u_face, u_face_t,
                        &sc_face, sc_old);
  else if (scheme == 2)
    get_face_2d_quickest_a(iX, iY, nX, nY, 1, 0, 1, tid, delta_t, u_face,
                           u_face_t, &sc_face, sc_old);
  else if (scheme == 3)
    get_face_2d_quickest_b(iX, iY, nX, nY, 1, 0, 1, tid, delta_t, u_face,
                           u_face_t, &sc_face, sc_old);
  else if (scheme == 4) {
    get_uface_2d(iX, iY, nX, nY, 1, 0, 1, tid, &u_face_t, u_buff);
    get_face_2d_upmulti(iX, iY, nX, nY, 1, 0, 1, tid, delta_t, u_face, u_face_t,
                        &sc_face, sc_old);
  } else if (scheme == 5) {
    get_uface_2d(iX, iY, nX, nY, 1, 0, 1, tid, &u_face_t, u_buff);
    get_face_2d_utopia_simp(iX, iY, nX, nY, 1, 0, 1, tid, delta_t, u_face,
                            u_face_t, &sc_face, sc_old);
  } else if (scheme == 6) {
    get_uface_2d(iX, iY, nX, nY, 1, 0, 1, tid, &u_face_t, u_buff);
    get_face_2d_utopia(iX, iY, nX, nY, 1, 0, 1, tid, delta_t, u_face, u_face_t,
                       &sc_face, sc_old);
  } else
    sc_face = 0.;
  get_face_grad_2d(iX, iY, nX, nY, 1, 0, tid, &sc_face_grad, sc_old);
  sum_face_a += sc_face * u_face;
  sum_face_d += sc_face_grad;
  get_uface_2d(iX, iY, nX, nY, -1, 0, 0, tid, &u_face, u_buff);
  if (scheme == 0)
    get_face_2d_up(iX, iY, nX, nY, -1, 0, -1, tid, delta_t, u_face, u_face_t,
                   &sc_face, sc_old);
  else if (scheme == 1)
    get_face_2d_laxwend(iX, iY, nX, nY, -1, 0, -1, tid, delta_t, u_face,
                        u_face_t, &sc_face, sc_old);
  else if (scheme == 2)
    get_face_2d_quickest_a(iX, iY, nX, nY, -1, 0, -1, tid, delta_t, u_face,
                           u_face_t, &sc_face, sc_old);
  else if (scheme == 3)
    get_face_2d_quickest_b(iX, iY, nX, nY, -1, 0, -1, tid, delta_t, u_face,
                           u_face_t, &sc_face, sc_old);
  else if (scheme == 4) {
    get_uface_2d(iX, iY, nX, nY, -1, 0, 1, tid, &u_face_t, u_buff);
    get_face_2d_upmulti(iX, iY, nX, nY, -1, 0, -1, tid, delta_t, u_face,
                        u_face_t, &sc_face, sc_old);
  } else if (scheme == 5) {
    get_uface_2d(iX, iY, nX, nY, -1, 0, 1, tid, &u_face_t, u_buff);
    get_face_2d_utopia_simp(iX, iY, nX, nY, -1, 0, -1, tid, delta_t, u_face,
                            u_face_t, &sc_face, sc_old);
  } else if (scheme == 6) {
    get_uface_2d(iX, iY, nX, nY, -1, 0, 1, tid, &u_face_t, u_buff);
    get_face_2d_utopia(iX, iY, nX, nY, -1, 0, -1, tid, delta_t, u_face,
                       u_face_t, &sc_face, sc_old);
  } else
    sc_face = 0.;
  get_face_grad_2d(iX, iY, nX, nY, -1, 0, tid, &sc_face_grad, sc_old);
  sum_face_a -= sc_face * u_face;
  sum_face_d += sc_face_grad;
  get_uface_2d(iX, iY, nX, nY, 0, 1, 1, tid, &u_face, u_buff);
  if (scheme == 0)
    get_face_2d_up(iX, iY, nX, nY, 0, 1, 1, tid, delta_t, u_face, u_face_t,
                   &sc_face, sc_old);
  else if (scheme == 1)
    get_face_2d_laxwend(iX, iY, nX, nY, 0, 1, 1, tid, delta_t, u_face, u_face_t,
                        &sc_face, sc_old);
  else if (scheme == 2)
    get_face_2d_quickest_a(iX, iY, nX, nY, 0, 1, 1, tid, delta_t, u_face,
                           u_face_t, &sc_face, sc_old);
  else if (scheme == 3)
    get_face_2d_quickest_b(iX, iY, nX, nY, 0, 1, 1, tid, delta_t, u_face,
                           u_face_t, &sc_face, sc_old);
  else if (scheme == 4) {
    get_uface_2d(iX, iY, nX, nY, 0, 1, 0, tid, &u_face_t, u_buff);
    get_face_2d_upmulti(iX, iY, nX, nY, 0, 1, 1, tid, delta_t, u_face, u_face_t,
                        &sc_face, sc_old);
  } else if (scheme == 5) {
    get_uface_2d(iX, iY, nX, nY, 0, 1, 0, tid, &u_face_t, u_buff);
    get_face_2d_utopia_simp(iX, iY, nX, nY, 0, 1, 1, tid, delta_t, u_face,
                            u_face_t, &sc_face, sc_old);
  } else if (scheme == 6) {
    get_uface_2d(iX, iY, nX, nY, 0, 1, 0, tid, &u_face_t, u_buff);
    get_face_2d_utopia(iX, iY, nX, nY, 0, 1, 1, tid, delta_t, u_face, u_face_t,
                       &sc_face, sc_old);
  } else
    sc_face = 0.;
  get_face_grad_2d(iX, iY, nX, nY, 0, 1, tid, &sc_face_grad, sc_old);
  sum_face_a += sc_face * u_face;
  sum_face_d += sc_face_grad;
  get_uface_2d(iX, iY, nX, nY, 0, -1, 1, tid, &u_face, u_buff);
  if (scheme == 0)
    get_face_2d_up(iX, iY, nX, nY, 0, -1, -1, tid, delta_t, u_face, u_face_t,
                   &sc_face, sc_old);
  else if (scheme == 1)
    get_face_2d_laxwend(iX, iY, nX, nY, 0, -1, -1, tid, delta_t, u_face,
                        u_face_t, &sc_face, sc_old);
  else if (scheme == 2)
    get_face_2d_quickest_a(iX, iY, nX, nY, 0, -1, -1, tid, delta_t, u_face,
                           u_face_t, &sc_face, sc_old);
  else if (scheme == 3)
    get_face_2d_quickest_b(iX, iY, nX, nY, 0, -1, -1, tid, delta_t, u_face,
                           u_face_t, &sc_face, sc_old);
  else if (scheme == 4) {
    get_uface_2d(iX, iY, nX, nY, 0, -1, 0, tid, &u_face_t, u_buff);
    get_face_2d_upmulti(iX, iY, nX, nY, 0, -1, -1, tid, delta_t, u_face,
                        u_face_t, &sc_face, sc_old);
  } else if (scheme == 5) {
    get_uface_2d(iX, iY, nX, nY, 0, -1, 0, tid, &u_face_t, u_buff);
    get_face_2d_utopia_simp(iX, iY, nX, nY, 0, -1, -1, tid, delta_t, u_face,
                            u_face_t, &sc_face, sc_old);
  } else if (scheme == 6) {
    get_uface_2d(iX, iY, nX, nY, 0, -1, 0, tid, &u_face_t, u_buff);
    get_face_2d_utopia(iX, iY, nX, nY, 0, -1, -1, tid, delta_t, u_face,
                       u_face_t, &sc_face, sc_old);
  } else
    sc_face = 0.;
  get_face_grad_2d(iX, iY, nX, nY, 0, -1, tid, &sc_face_grad, sc_old);
  sum_face_a -= sc_face * u_face;
  sum_face_d += sc_face_grad;
  *(sc_new + tid) =
      *(sc_old + tid) + 1. * delta_t * (1. * alpha * sum_face_d - sum_face_a);
}


x86 assembly (clang, -O0):
<update_cell_2D_BRANCH>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
movsd  %xmm0,-0x30(%rbp)
movsd  %xmm1,-0x38(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%eax
imul   -0x24(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x58(%rbp),%r10
movl   $0x0,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
cmpl   $0x0,0x18(%rbp)
jne    1281 <update_cell_2D_BRANCH+0xf1>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1070 <get_face_2d_up@plt>
jmp    1589 <update_cell_2D_BRANCH+0x3f9>
cmpl   $0x1,0x18(%rbp)
jne    12dd <update_cell_2D_BRANCH+0x14d>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1090 <get_face_2d_laxwend@plt>
jmp    1584 <update_cell_2D_BRANCH+0x3f4>
cmpl   $0x2,0x18(%rbp)
jne    1339 <update_cell_2D_BRANCH+0x1a9>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1050 <get_face_2d_quickest_a@plt>
jmp    157f <update_cell_2D_BRANCH+0x3ef>
cmpl   $0x3,0x18(%rbp)
jne    1395 <update_cell_2D_BRANCH+0x205>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   10a0 <get_face_2d_quickest_b@plt>
jmp    157a <update_cell_2D_BRANCH+0x3ea>
cmpl   $0x4,0x18(%rbp)
jne    142f <update_cell_2D_BRANCH+0x29f>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x60(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1060 <get_face_2d_upmulti@plt>
jmp    1575 <update_cell_2D_BRANCH+0x3e5>
cmpl   $0x5,0x18(%rbp)
jne    14c9 <update_cell_2D_BRANCH+0x339>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x60(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   10b0 <get_face_2d_utopia_simp@plt>
jmp    1570 <update_cell_2D_BRANCH+0x3e0>
cmpl   $0x6,0x18(%rbp)
jne    1563 <update_cell_2D_BRANCH+0x3d3>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x60(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1030 <get_face_2d_utopia@plt>
jmp    156b <update_cell_2D_BRANCH+0x3db>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1570 <update_cell_2D_BRANCH+0x3e0>
jmp    1575 <update_cell_2D_BRANCH+0x3e5>
jmp    157a <update_cell_2D_BRANCH+0x3ea>
jmp    157f <update_cell_2D_BRANCH+0x3ef>
jmp    1584 <update_cell_2D_BRANCH+0x3f4>
jmp    1589 <update_cell_2D_BRANCH+0x3f9>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x8(%rbp),%rax
mov    $0x1,%r8d
xor    %r9d,%r9d
lea    -0x70(%rbp),%r10
mov    %r11d,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1080 <get_face_grad_2d@plt>
movsd  -0x68(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x58(%rbp),%r10
movl   $0x0,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
cmpl   $0x0,0x18(%rbp)
jne    1684 <update_cell_2D_BRANCH+0x4f4>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1070 <get_face_2d_up@plt>
jmp    198c <update_cell_2D_BRANCH+0x7fc>
cmpl   $0x1,0x18(%rbp)
jne    16e0 <update_cell_2D_BRANCH+0x550>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1090 <get_face_2d_laxwend@plt>
jmp    1987 <update_cell_2D_BRANCH+0x7f7>
cmpl   $0x2,0x18(%rbp)
jne    173c <update_cell_2D_BRANCH+0x5ac>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1050 <get_face_2d_quickest_a@plt>
jmp    1982 <update_cell_2D_BRANCH+0x7f2>
cmpl   $0x3,0x18(%rbp)
jne    1798 <update_cell_2D_BRANCH+0x608>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   10a0 <get_face_2d_quickest_b@plt>
jmp    197d <update_cell_2D_BRANCH+0x7ed>
cmpl   $0x4,0x18(%rbp)
jne    1832 <update_cell_2D_BRANCH+0x6a2>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x60(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1060 <get_face_2d_upmulti@plt>
jmp    1978 <update_cell_2D_BRANCH+0x7e8>
cmpl   $0x5,0x18(%rbp)
jne    18cc <update_cell_2D_BRANCH+0x73c>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x60(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   10b0 <get_face_2d_utopia_simp@plt>
jmp    1973 <update_cell_2D_BRANCH+0x7e3>
cmpl   $0x6,0x18(%rbp)
jne    1966 <update_cell_2D_BRANCH+0x7d6>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x60(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1030 <get_face_2d_utopia@plt>
jmp    196e <update_cell_2D_BRANCH+0x7de>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1973 <update_cell_2D_BRANCH+0x7e3>
jmp    1978 <update_cell_2D_BRANCH+0x7e8>
jmp    197d <update_cell_2D_BRANCH+0x7ed>
jmp    1982 <update_cell_2D_BRANCH+0x7f2>
jmp    1987 <update_cell_2D_BRANCH+0x7f7>
jmp    198c <update_cell_2D_BRANCH+0x7fc>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x8(%rbp),%rax
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
lea    -0x70(%rbp),%r10
mov    %r11d,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1080 <get_face_grad_2d@plt>
movsd  -0x68(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x58(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
cmpl   $0x0,0x18(%rbp)
jne    1a9e <update_cell_2D_BRANCH+0x90e>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1070 <get_face_2d_up@plt>
jmp    1da6 <update_cell_2D_BRANCH+0xc16>
cmpl   $0x1,0x18(%rbp)
jne    1afa <update_cell_2D_BRANCH+0x96a>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1090 <get_face_2d_laxwend@plt>
jmp    1da1 <update_cell_2D_BRANCH+0xc11>
cmpl   $0x2,0x18(%rbp)
jne    1b56 <update_cell_2D_BRANCH+0x9c6>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1050 <get_face_2d_quickest_a@plt>
jmp    1d9c <update_cell_2D_BRANCH+0xc0c>
cmpl   $0x3,0x18(%rbp)
jne    1bb2 <update_cell_2D_BRANCH+0xa22>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   10a0 <get_face_2d_quickest_b@plt>
jmp    1d97 <update_cell_2D_BRANCH+0xc07>
cmpl   $0x4,0x18(%rbp)
jne    1c4c <update_cell_2D_BRANCH+0xabc>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x60(%rbp),%r10
movl   $0x0,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1060 <get_face_2d_upmulti@plt>
jmp    1d92 <update_cell_2D_BRANCH+0xc02>
cmpl   $0x5,0x18(%rbp)
jne    1ce6 <update_cell_2D_BRANCH+0xb56>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x60(%rbp),%r10
movl   $0x0,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   10b0 <get_face_2d_utopia_simp@plt>
jmp    1d8d <update_cell_2D_BRANCH+0xbfd>
cmpl   $0x6,0x18(%rbp)
jne    1d80 <update_cell_2D_BRANCH+0xbf0>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x60(%rbp),%r10
movl   $0x0,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x68(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1030 <get_face_2d_utopia@plt>
jmp    1d88 <update_cell_2D_BRANCH+0xbf8>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1d8d <update_cell_2D_BRANCH+0xbfd>
jmp    1d92 <update_cell_2D_BRANCH+0xc02>
jmp    1d97 <update_cell_2D_BRANCH+0xc07>
jmp    1d9c <update_cell_2D_BRANCH+0xc0c>
jmp    1da1 <update_cell_2D_BRANCH+0xc11>
jmp    1da6 <update_cell_2D_BRANCH+0xc16>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0x1,%r9d
lea    -0x70(%rbp),%r10
mov    %r11d,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1080 <get_face_grad_2d@plt>
movsd  -0x68(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x58(%rbp),%r10
movl   $0x1,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
cmpl   $0x0,0x18(%rbp)
jne    1ea1 <update_cell_2D_BRANCH+0xd11>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1070 <get_face_2d_up@plt>
jmp    21a9 <update_cell_2D_BRANCH+0x1019>
cmpl   $0x1,0x18(%rbp)
jne    1efd <update_cell_2D_BRANCH+0xd6d>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1090 <get_face_2d_laxwend@plt>
jmp    21a4 <update_cell_2D_BRANCH+0x1014>
cmpl   $0x2,0x18(%rbp)
jne    1f59 <update_cell_2D_BRANCH+0xdc9>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1050 <get_face_2d_quickest_a@plt>
jmp    219f <update_cell_2D_BRANCH+0x100f>
cmpl   $0x3,0x18(%rbp)
jne    1fb5 <update_cell_2D_BRANCH+0xe25>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   10a0 <get_face_2d_quickest_b@plt>
jmp    219a <update_cell_2D_BRANCH+0x100a>
cmpl   $0x4,0x18(%rbp)
jne    204f <update_cell_2D_BRANCH+0xebf>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x60(%rbp),%r10
movl   $0x0,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1060 <get_face_2d_upmulti@plt>
jmp    2195 <update_cell_2D_BRANCH+0x1005>
cmpl   $0x5,0x18(%rbp)
jne    20e9 <update_cell_2D_BRANCH+0xf59>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x60(%rbp),%r10
movl   $0x0,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   10b0 <get_face_2d_utopia_simp@plt>
jmp    2190 <update_cell_2D_BRANCH+0x1000>
cmpl   $0x6,0x18(%rbp)
jne    2183 <update_cell_2D_BRANCH+0xff3>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x18(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x60(%rbp),%r10
movl   $0x0,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1040 <get_uface_2d@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x68(%rbp),%r10
movl   $0xffffffff,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x3,%al
call   1030 <get_face_2d_utopia@plt>
jmp    218b <update_cell_2D_BRANCH+0xffb>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    2190 <update_cell_2D_BRANCH+0x1000>
jmp    2195 <update_cell_2D_BRANCH+0x1005>
jmp    219a <update_cell_2D_BRANCH+0x100a>
jmp    219f <update_cell_2D_BRANCH+0x100f>
jmp    21a4 <update_cell_2D_BRANCH+0x1014>
jmp    21a9 <update_cell_2D_BRANCH+0x1019>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
mov    0x10(%rbp),%ecx
mov    -0x3c(%rbp),%r11d
mov    -0x8(%rbp),%rax
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
lea    -0x70(%rbp),%r10
mov    %r11d,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1080 <get_face_grad_2d@plt>
movsd  -0x68(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xdca(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  0xdbd(%rip),%xmm2
mulsd  -0x38(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm4
movsd  -0x48(%rbp),%xmm3
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<update_cell_2D_BRANCH>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
movsd  %xmm1,0x90(%rsp)
movsd  %xmm0,0x28(%rsp)
mov    %r9d,%r12d
mov    %r8d,%r15d
mov    %ecx,%r14d
mov    %rdx,%rbx
mov    %rsi,0x70(%rsp)
mov    %rdi,%r13
mov    0xd8(%rsp),%r10d
mov    0xd0(%rsp),%ecx
movq   $0x0,(%rsp)
mov    %r9d,%ebp
imul   %r8d,%ebp
add    %r14d,%ebp
lea    0x10(%rsp),%r11
mov    %r14d,%edi
mov    %r8d,%esi
mov    %r9d,%edx
mov    $0x1,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
mov    %rbx,0x38(%rsp)
push   %rbx
mov    %r10,%rbx
push   %r11
push   %rbp
push   $0x0
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
test   %ebx,%ebx
mov    %r12d,0x30(%rsp)
mov    %r13,0x20(%rsp)
mov    %rbp,0x18(%rsp)
je     129a <update_cell_2D_BRANCH+0x10a>
lea    -0x1(%rbx),%eax
cmp    $0x5,%eax
ja     208e <update_cell_2D_BRANCH+0xefe>
lea    0x1dc5(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%r12d
mov    %r15d,%esi
mov    0x30(%rsp),%r15d
mov    %r15d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
mov    0x28(%rsp),%rbp
push   %rbp
push   $0x1
call   1090 <get_face_2d_laxwend@plt>
jmp    1514 <update_cell_2D_BRANCH+0x384>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %r12d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
push   %r13
push   %r10
push   %rbp
push   $0x1
call   1070 <get_face_2d_up@plt>
add    $0x20,%rsp
mov    %ebx,%ecx
mov    %r12d,%eax
mov    %r15d,%r12d
mov    %eax,%r15d
jmp    151a <update_cell_2D_BRANCH+0x38a>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%r12d
mov    %r15d,%esi
mov    0x30(%rsp),%r15d
mov    %r15d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
mov    0x28(%rsp),%rbp
push   %rbp
push   $0x1
call   1050 <get_face_2d_quickest_a@plt>
jmp    1514 <update_cell_2D_BRANCH+0x384>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%r12d
mov    %r15d,%esi
mov    0x30(%rsp),%r15d
mov    %r15d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
mov    0x28(%rsp),%rbp
push   %rbp
push   $0x1
call   10a0 <get_face_2d_quickest_b@plt>
jmp    1514 <update_cell_2D_BRANCH+0x384>
mov    %rsp,%r10
mov    %r14d,%edi
mov    %r15d,%r12d
mov    %r15d,%esi
mov    0x30(%rsp),%r15d
mov    %r15d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
mov    0x28(%rsp),%rbp
push   %rbp
push   $0x1
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
push   %rbp
push   $0x1
call   1060 <get_face_2d_upmulti@plt>
jmp    1514 <update_cell_2D_BRANCH+0x384>
mov    %rsp,%r10
mov    %r14d,%edi
mov    %r15d,%r12d
mov    %r15d,%esi
mov    0x30(%rsp),%r15d
mov    %r15d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
mov    0x28(%rsp),%rbp
push   %rbp
push   $0x1
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
push   %rbp
push   $0x1
call   10b0 <get_face_2d_utopia_simp@plt>
jmp    1514 <update_cell_2D_BRANCH+0x384>
mov    %rsp,%r10
mov    %r14d,%edi
mov    %r15d,%r12d
mov    %r15d,%esi
mov    0x30(%rsp),%r15d
mov    %r15d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
mov    0x28(%rsp),%rbp
push   %rbp
push   $0x1
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    $0x1,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
push   %rbp
push   $0x1
call   1030 <get_face_2d_utopia@plt>
mov    %ebx,%ecx
add    $0x20,%rsp
sub    $0x8,%rsp
lea    0x80(%rsp),%rbx
mov    %r14d,%edi
mov    %r12d,%esi
mov    %r15d,%edx
mov    $0x1,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
push   %r13
push   %rbx
push   %rbp
mov    %ecx,%ebx
call   1080 <get_face_grad_2d@plt>
add    $0x20,%rsp
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x68(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x78(%rsp),%xmm0
movsd  %xmm0,0x88(%rsp)
mov    %r15d,%r13d
mov    %r14d,%r15d
mov    %r14d,%edi
mov    %r12d,%esi
mov    %r13d,%edx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
push   0x38(%rsp)
mov    %rbp,%r14
lea    0x18(%rsp),%rbp
push   %rbp
push   %r14
push   $0x0
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
mov    0xd8(%rsp),%eax
test   %eax,%eax
mov    %r15d,0x84(%rsp)
je     162c <update_cell_2D_BRANCH+0x49c>
add    $0xffffffff,%eax
cmp    $0x5,%eax
ja     20b5 <update_cell_2D_BRANCH+0xf25>
lea    0x1a4c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r15d,%edi
mov    %r12d,%r15d
mov    %r12d,%esi
mov    0x30(%rsp),%r12d
mov    %r12d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
mov    0x28(%rsp),%r14
push   %r14
push   $0xffffffffffffffff
call   1090 <get_face_2d_laxwend@plt>
jmp    18b8 <update_cell_2D_BRANCH+0x728>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r15d,%edi
mov    %r12d,%esi
mov    %r13d,%edx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbp
push   %rbp
push   %r10
push   %r14
push   $0xffffffffffffffff
call   1070 <get_face_2d_up@plt>
add    $0x20,%rsp
mov    %ebx,%ecx
mov    %r13d,%eax
mov    %rbp,%r13
mov    %r12d,%r15d
mov    %eax,%r12d
jmp    18be <update_cell_2D_BRANCH+0x72e>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r15d,%edi
mov    %r12d,%r15d
mov    %r12d,%esi
mov    0x30(%rsp),%r12d
mov    %r12d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
mov    0x28(%rsp),%r14
push   %r14
push   $0xffffffffffffffff
call   1050 <get_face_2d_quickest_a@plt>
jmp    18b8 <update_cell_2D_BRANCH+0x728>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r15d,%edi
mov    %r12d,%r15d
mov    %r12d,%esi
mov    0x30(%rsp),%r12d
mov    %r12d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
mov    0x28(%rsp),%r14
push   %r14
push   $0xffffffffffffffff
call   10a0 <get_face_2d_quickest_b@plt>
jmp    18b8 <update_cell_2D_BRANCH+0x728>
mov    %rsp,%r10
mov    %r15d,%ebp
mov    %r15d,%edi
mov    %r12d,%r15d
mov    %r12d,%esi
mov    0x30(%rsp),%r12d
mov    %r12d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
mov    0x28(%rsp),%r14
push   %r14
push   $0x1
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %ebp,%edi
mov    %r15d,%esi
mov    %r12d,%edx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
push   %r14
push   $0xffffffffffffffff
call   1060 <get_face_2d_upmulti@plt>
jmp    18b8 <update_cell_2D_BRANCH+0x728>
mov    %rsp,%r10
mov    %r15d,%ebp
mov    %r15d,%edi
mov    %r12d,%r15d
mov    %r12d,%esi
mov    0x30(%rsp),%r12d
mov    %r12d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
mov    0x28(%rsp),%r14
push   %r14
push   $0x1
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %ebp,%edi
mov    %r15d,%esi
mov    %r12d,%edx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
push   %r14
push   $0xffffffffffffffff
call   10b0 <get_face_2d_utopia_simp@plt>
jmp    18b8 <update_cell_2D_BRANCH+0x728>
mov    %rsp,%r10
mov    %r15d,%ebp
mov    %r15d,%edi
mov    %r12d,%r15d
mov    %r12d,%esi
mov    0x30(%rsp),%r12d
mov    %r12d,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
mov    0x28(%rsp),%r14
push   %r14
push   $0x1
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %ebp,%edi
mov    %r15d,%esi
mov    %r12d,%edx
mov    %ebx,%ecx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%r13
push   %r13
push   %r10
push   %r14
push   $0xffffffffffffffff
call   1030 <get_face_2d_utopia@plt>
mov    %ebx,%ecx
add    $0x20,%rsp
sub    $0x8,%rsp
mov    0x8c(%rsp),%ebp
mov    %ebp,%edi
mov    %r15d,%esi
mov    %r12d,%edx
mov    $0xffffffff,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
push   %r13
lea    0x88(%rsp),%rbx
push   %rbx
push   %r14
mov    %ecx,%ebx
call   1080 <get_face_grad_2d@plt>
add    $0x20,%rsp
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x58(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  0x78(%rsp),%xmm0
movsd  %xmm0,0x48(%rsp)
mov    %ebp,%edi
mov    %r15d,%esi
mov    %r12d,%edx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
xor    %eax,%eax
push   0x38(%rsp)
mov    %r12d,%ebp
mov    %r13,%r12
mov    %ebp,%r13d
lea    0x18(%rsp),%rbp
push   %rbp
push   %r14
push   $0x1
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
mov    0xd8(%rsp),%eax
test   %eax,%eax
je     19cf <update_cell_2D_BRANCH+0x83f>
mov    0x84(%rsp),%r14d
add    $0xffffffff,%eax
cmp    $0x5,%eax
ja     20d8 <update_cell_2D_BRANCH+0xf48>
lea    0x16bd(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    0x30(%rsp),%r13d
mov    %r13d,%edx
mov    0xd0(%rsp),%ebp
mov    %ebp,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbx
push   %rbx
push   %r10
mov    0x28(%rsp),%r12
push   %r12
push   $0x1
call   1090 <get_face_2d_laxwend@plt>
jmp    1c3d <update_cell_2D_BRANCH+0xaad>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    0x84(%rsp),%ebp
mov    %ebp,%edi
mov    %r15d,%esi
mov    %r13d,%edx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
push   %r12
push   %r10
push   %r14
push   $0x1
call   1070 <get_face_2d_up@plt>
add    $0x20,%rsp
mov    %ebx,%ecx
mov    %r12,%rbx
mov    %r14,%r12
mov    %ebp,%r14d
jmp    1c43 <update_cell_2D_BRANCH+0xab3>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    0x30(%rsp),%r13d
mov    %r13d,%edx
mov    0xd0(%rsp),%ebp
mov    %ebp,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbx
push   %rbx
push   %r10
mov    0x28(%rsp),%r12
push   %r12
push   $0x1
call   1050 <get_face_2d_quickest_a@plt>
jmp    1c3d <update_cell_2D_BRANCH+0xaad>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    0x30(%rsp),%r13d
mov    %r13d,%edx
mov    0xd0(%rsp),%ebp
mov    %ebp,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbx
push   %rbx
push   %r10
mov    0x28(%rsp),%r12
push   %r12
push   $0x1
call   10a0 <get_face_2d_quickest_b@plt>
jmp    1c3d <update_cell_2D_BRANCH+0xaad>
mov    %rsp,%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    0x30(%rsp),%r13d
mov    %r13d,%edx
mov    0xd0(%rsp),%ebp
mov    %ebp,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
mov    0x28(%rsp),%r12
push   %r12
push   $0x0
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbx
push   %rbx
push   %r10
push   %r12
push   $0x1
call   1060 <get_face_2d_upmulti@plt>
jmp    1c3d <update_cell_2D_BRANCH+0xaad>
mov    %rsp,%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    0x30(%rsp),%r13d
mov    %r13d,%edx
mov    0xd0(%rsp),%ebp
mov    %ebp,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
mov    0x28(%rsp),%r12
push   %r12
push   $0x0
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbx
push   %rbx
push   %r10
push   %r12
push   $0x1
call   10b0 <get_face_2d_utopia_simp@plt>
jmp    1c3d <update_cell_2D_BRANCH+0xaad>
mov    %rsp,%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    0x30(%rsp),%r13d
mov    %r13d,%edx
mov    0xd0(%rsp),%ebp
mov    %ebp,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
mov    0x28(%rsp),%r12
push   %r12
push   $0x0
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
xor    %r8d,%r8d
mov    $0x1,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbx
push   %rbx
push   %r10
push   %r12
push   $0x1
call   1030 <get_face_2d_utopia@plt>
mov    %ebp,%ecx
add    $0x20,%rsp
sub    $0x8,%rsp
mov    %r14d,%edi
mov    %r15d,%esi
mov    %r13d,%edx
xor    %r8d,%r8d
mov    $0x1,%r9d
xor    %eax,%eax
push   %rbx
lea    0x88(%rsp),%rbp
push   %rbp
push   %r12
mov    %r13d,%ebp
mov    %r12,%r13
mov    %ecx,%r12d
call   1080 <get_face_grad_2d@plt>
add    $0x20,%rsp
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x78(%rsp),%xmm0
movsd  %xmm0,0x40(%rsp)
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%edx
mov    %r12d,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
xor    %eax,%eax
push   0x38(%rsp)
lea    0x18(%rsp),%rbx
push   %rbx
push   %r13
push   $0x1
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
mov    0xd8(%rsp),%ecx
test   %ecx,%ecx
je     1d3c <update_cell_2D_BRANCH+0xbac>
add    $0xffffffff,%ecx
cmp    $0x5,%ecx
ja     20fc <update_cell_2D_BRANCH+0xf6c>
lea    0x1360(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%r12d
mov    %ebp,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbp
push   %rbp
push   %r10
push   %r13
push   $0xffffffffffffffff
call   1090 <get_face_2d_laxwend@plt>
jmp    1f80 <update_cell_2D_BRANCH+0xdf0>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%edx
mov    %r12d,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbx
push   %rbx
push   %r10
push   %r13
push   $0xffffffffffffffff
call   1070 <get_face_2d_up@plt>
add    $0x20,%rsp
mov    %r15d,%esi
mov    0x70(%rsp),%r15
mov    %r12d,%ecx
mov    %ebp,%r12d
jmp    1f91 <update_cell_2D_BRANCH+0xe01>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%r12d
mov    %ebp,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbp
push   %rbp
push   %r10
push   %r13
push   $0xffffffffffffffff
call   1050 <get_face_2d_quickest_a@plt>
jmp    1f80 <update_cell_2D_BRANCH+0xdf0>
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%r12d
mov    %ebp,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbp
push   %rbp
push   %r10
push   %r13
push   $0xffffffffffffffff
call   10a0 <get_face_2d_quickest_b@plt>
jmp    1f80 <update_cell_2D_BRANCH+0xdf0>
mov    %rsp,%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%r12d
mov    %ebp,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
push   %r13
push   $0x0
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%edx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbp
push   %rbp
push   %r10
push   %r13
push   $0xffffffffffffffff
call   1060 <get_face_2d_upmulti@plt>
jmp    1f80 <update_cell_2D_BRANCH+0xdf0>
mov    %rsp,%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%r12d
mov    %ebp,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
push   %r13
push   $0x0
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%edx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbp
push   %rbp
push   %r10
push   %r13
push   $0xffffffffffffffff
call   10b0 <get_face_2d_utopia_simp@plt>
jmp    1f80 <update_cell_2D_BRANCH+0xdf0>
mov    %rsp,%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%r12d
mov    %ebp,%edx
mov    0xd0(%rsp),%ebx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
xor    %eax,%eax
push   0x38(%rsp)
push   %r10
push   %r13
push   $0x0
call   1040 <get_uface_2d@plt>
add    $0x20,%rsp
movsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
lea    0x8(%rsp),%r10
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebp,%edx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
movsd  0x28(%rsp),%xmm0
mov    $0x3,%al
mov    0x20(%rsp),%rbp
push   %rbp
push   %r10
push   %r13
push   $0xffffffffffffffff
call   1030 <get_face_2d_utopia@plt>
mov    %ebx,%ecx
add    $0x20,%rsp
mov    %rbp,%rbx
mov    %r15d,%esi
mov    0x70(%rsp),%r15
movsd  0x68(%rsp),%xmm1
movsd  0x60(%rsp),%xmm2
movsd  0x58(%rsp),%xmm3
movsd  0x50(%rsp),%xmm4
movsd  0x48(%rsp),%xmm5
movsd  0x18(%rsp),%xmm6
movsd  0x40(%rsp),%xmm7
xorpd  %xmm8,%xmm8
movsd  0x88(%rsp),%xmm0
addsd  %xmm8,%xmm0
addsd  %xmm5,%xmm0
addsd  %xmm7,%xmm0
movsd  %xmm0,0x88(%rsp)
mulsd  %xmm2,%xmm1
addsd  %xmm8,%xmm1
mulsd  %xmm4,%xmm3
subsd  %xmm3,%xmm1
movsd  0x30(%rsp),%xmm0
mulsd  %xmm6,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%rsp)
sub    $0x8,%rsp
mov    %r14d,%edi
mov    %r12d,%edx
xor    %r8d,%r8d
mov    $0xffffffff,%r9d
xor    %eax,%eax
push   %rbx
lea    0x88(%rsp),%rbp
push   %rbp
push   %r13
call   1080 <get_face_grad_2d@plt>
add    $0x20,%rsp
movsd  0x8(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  0x88(%rsp),%xmm1
addsd  0x78(%rsp),%xmm1
movsd  0x30(%rsp),%xmm2
subsd  %xmm0,%xmm2
movslq %r13d,%rax
movsd  0x90(%rsp),%xmm0
mulsd  %xmm1,%xmm0
subsd  %xmm2,%xmm0
movsd  0x28(%rsp),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rbx,%rax,8),%xmm1
movsd  %xmm1,(%r15,%rax,8)
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
movq   $0x0,0x8(%rsp)
mov    0xd0(%rsp),%ecx
mov    %r15d,%r12d
mov    0x30(%rsp),%r15d
mov    0x20(%rsp),%r13
mov    0x18(%rsp),%rbp
jmp    151a <update_cell_2D_BRANCH+0x38a>
movq   $0x0,0x8(%rsp)
mov    0xd0(%rsp),%ecx
mov    0x30(%rsp),%eax
mov    0x20(%rsp),%r13
mov    0x18(%rsp),%r14
jmp    1675 <update_cell_2D_BRANCH+0x4e5>
movq   $0x0,0x8(%rsp)
mov    0xd0(%rsp),%ecx
mov    0x30(%rsp),%r13d
mov    0x20(%rsp),%rbx
mov    0x18(%rsp),%r12
jmp    1c43 <update_cell_2D_BRANCH+0xab3>
movq   $0x0,0x8(%rsp)
mov    0x20(%rsp),%rbx
mov    %r15d,%esi
mov    0x70(%rsp),%r15
mov    0xd0(%rsp),%ecx
jmp    1d88 <update_cell_2D_BRANCH+0xbf8>

LLVM IR (-O0):
define void @update_cell_2D_BRANCH(double* %0, double* %1, double* %2, i32 %3, i32 %4, i32 %5, i32 %6, double %7, double %8, i32 %9) {
%11 = alloca double*
%12 = alloca double*
%13 = alloca double*
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca double
%19 = alloca double
%20 = alloca i32
%21 = alloca i32
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
store double* %0, double** %11
store double* %1, double** %12
store double* %2, double** %13
store i32 %3, i32* %14
store i32 %4, i32* %15
store i32 %5, i32* %16
store i32 %6, i32* %17
store double %7, double* %18
store double %8, double* %19
store i32 %9, i32* %20
store double 0.000000e+00, double* %22
store double 0.000000e+00, double* %23
store double 0.000000e+00, double* %25
%28 = load i32, i32* %15
%29 = load i32, i32* %16
%30 = mul nsw i32 %28, %29
%31 = load i32, i32* %14
%32 = add nsw i32 %30, %31
store i32 %32, i32* %21
%33 = load i32, i32* %14
%34 = load i32, i32* %15
%35 = load i32, i32* %16
%36 = load i32, i32* %17
%37 = load i32, i32* %21
%38 = load double*, double** %13
%39 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %33, i32 %34, i32 %35, i32 %36, i32 1, i32 0, i32 0, i32 %37, double* %24, double* %38)
%40 = load i32, i32* %20
%41 = icmp eq i32 %40, 0
br i1 %41, label %42, label %53
42: ; preds = %10
%43 = load i32, i32* %14
%44 = load i32, i32* %15
%45 = load i32, i32* %16
%46 = load i32, i32* %17
%47 = load i32, i32* %21
%48 = load double, double* %18
%49 = load double, double* %24
%50 = load double, double* %25
%51 = load double*, double** %11
%52 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_up to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %43, i32 %44, i32 %45, i32 %46, i32 1, i32 0, i32 1, i32 %47, double %48, double %49, double %50, double* %26, double* %51)
br label %165
53: ; preds = %10
%54 = load i32, i32* %20
%55 = icmp eq i32 %54, 1
br i1 %55, label %56, label %67
56: ; preds = %53
%57 = load i32, i32* %14
%58 = load i32, i32* %15
%59 = load i32, i32* %16
%60 = load i32, i32* %17
%61 = load i32, i32* %21
%62 = load double, double* %18
%63 = load double, double* %24
%64 = load double, double* %25
%65 = load double*, double** %11
%66 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_laxwend to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %57, i32 %58, i32 %59, i32 %60, i32 1, i32 0, i32 1, i32 %61, double %62, double %63, double %64, double* %26, double* %65)
br label %164
67: ; preds = %53
%68 = load i32, i32* %20
%69 = icmp eq i32 %68, 2
br i1 %69, label %70, label %81
70: ; preds = %67
%71 = load i32, i32* %14
%72 = load i32, i32* %15
%73 = load i32, i32* %16
%74 = load i32, i32* %17
%75 = load i32, i32* %21
%76 = load double, double* %18
%77 = load double, double* %24
%78 = load double, double* %25
%79 = load double*, double** %11
%80 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_a to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %71, i32 %72, i32 %73, i32 %74, i32 1, i32 0, i32 1, i32 %75, double %76, double %77, double %78, double* %26, double* %79)
br label %163
81: ; preds = %67
%82 = load i32, i32* %20
%83 = icmp eq i32 %82, 3
br i1 %83, label %84, label %95
84: ; preds = %81
%85 = load i32, i32* %14
%86 = load i32, i32* %15
%87 = load i32, i32* %16
%88 = load i32, i32* %17
%89 = load i32, i32* %21
%90 = load double, double* %18
%91 = load double, double* %24
%92 = load double, double* %25
%93 = load double*, double** %11
%94 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_b to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %85, i32 %86, i32 %87, i32 %88, i32 1, i32 0, i32 1, i32 %89, double %90, double %91, double %92, double* %26, double* %93)
br label %162
95: ; preds = %81
%96 = load i32, i32* %20
%97 = icmp eq i32 %96, 4
br i1 %97, label %98, label %116
98: ; preds = %95
%99 = load i32, i32* %14
%100 = load i32, i32* %15
%101 = load i32, i32* %16
%102 = load i32, i32* %17
%103 = load i32, i32* %21
%104 = load double*, double** %13
%105 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %99, i32 %100, i32 %101, i32 %102, i32 1, i32 0, i32 1, i32 %103, double* %25, double* %104)
%106 = load i32, i32* %14
%107 = load i32, i32* %15
%108 = load i32, i32* %16
%109 = load i32, i32* %17
%110 = load i32, i32* %21
%111 = load double, double* %18
%112 = load double, double* %24
%113 = load double, double* %25
%114 = load double*, double** %11
%115 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_upmulti to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %106, i32 %107, i32 %108, i32 %109, i32 1, i32 0, i32 1, i32 %110, double %111, double %112, double %113, double* %26, double* %114)
br label %161
116: ; preds = %95
%117 = load i32, i32* %20
%118 = icmp eq i32 %117, 5
br i1 %118, label %119, label %137
119: ; preds = %116
%120 = load i32, i32* %14
%121 = load i32, i32* %15
%122 = load i32, i32* %16
%123 = load i32, i32* %17
%124 = load i32, i32* %21
%125 = load double*, double** %13
%126 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %120, i32 %121, i32 %122, i32 %123, i32 1, i32 0, i32 1, i32 %124, double* %25, double* %125)
%127 = load i32, i32* %14
%128 = load i32, i32* %15
%129 = load i32, i32* %16
%130 = load i32, i32* %17
%131 = load i32, i32* %21
%132 = load double, double* %18
%133 = load double, double* %24
%134 = load double, double* %25
%135 = load double*, double** %11
%136 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia_simp to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %127, i32 %128, i32 %129, i32 %130, i32 1, i32 0, i32 1, i32 %131, double %132, double %133, double %134, double* %26, double* %135)
br label %160
137: ; preds = %116
%138 = load i32, i32* %20
%139 = icmp eq i32 %138, 6
br i1 %139, label %140, label %158
140: ; preds = %137
%141 = load i32, i32* %14
%142 = load i32, i32* %15
%143 = load i32, i32* %16
%144 = load i32, i32* %17
%145 = load i32, i32* %21
%146 = load double*, double** %13
%147 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %141, i32 %142, i32 %143, i32 %144, i32 1, i32 0, i32 1, i32 %145, double* %25, double* %146)
%148 = load i32, i32* %14
%149 = load i32, i32* %15
%150 = load i32, i32* %16
%151 = load i32, i32* %17
%152 = load i32, i32* %21
%153 = load double, double* %18
%154 = load double, double* %24
%155 = load double, double* %25
%156 = load double*, double** %11
%157 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %148, i32 %149, i32 %150, i32 %151, i32 1, i32 0, i32 1, i32 %152, double %153, double %154, double %155, double* %26, double* %156)
br label %159
158: ; preds = %137
store double 0.000000e+00, double* %26
br label %159
159: ; preds = %158, %140
br label %160
160: ; preds = %159, %119
br label %161
161: ; preds = %160, %98
br label %162
162: ; preds = %161, %84
br label %163
163: ; preds = %162, %70
br label %164
164: ; preds = %163, %56
br label %165
165: ; preds = %164, %42
%166 = load i32, i32* %14
%167 = load i32, i32* %15
%168 = load i32, i32* %16
%169 = load i32, i32* %17
%170 = load i32, i32* %21
%171 = load double*, double** %11
%172 = call i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_face_grad_2d to i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %166, i32 %167, i32 %168, i32 %169, i32 1, i32 0, i32 %170, double* %27, double* %171)
%173 = load double, double* %26
%174 = load double, double* %24
%175 = load double, double* %22
%176 = call double @llvm.fmuladd.f64(double %173, double %174, double %175)
store double %176, double* %22
%177 = load double, double* %27
%178 = load double, double* %23
%179 = fadd double %178, %177
store double %179, double* %23
%180 = load i32, i32* %14
%181 = load i32, i32* %15
%182 = load i32, i32* %16
%183 = load i32, i32* %17
%184 = load i32, i32* %21
%185 = load double*, double** %13
%186 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %180, i32 %181, i32 %182, i32 %183, i32 -1, i32 0, i32 0, i32 %184, double* %24, double* %185)
%187 = load i32, i32* %20
%188 = icmp eq i32 %187, 0
br i1 %188, label %189, label %200
189: ; preds = %165
%190 = load i32, i32* %14
%191 = load i32, i32* %15
%192 = load i32, i32* %16
%193 = load i32, i32* %17
%194 = load i32, i32* %21
%195 = load double, double* %18
%196 = load double, double* %24
%197 = load double, double* %25
%198 = load double*, double** %11
%199 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_up to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %190, i32 %191, i32 %192, i32 %193, i32 -1, i32 0, i32 -1, i32 %194, double %195, double %196, double %197, double* %26, double* %198)
br label %312
200: ; preds = %165
%201 = load i32, i32* %20
%202 = icmp eq i32 %201, 1
br i1 %202, label %203, label %214
203: ; preds = %200
%204 = load i32, i32* %14
%205 = load i32, i32* %15
%206 = load i32, i32* %16
%207 = load i32, i32* %17
%208 = load i32, i32* %21
%209 = load double, double* %18
%210 = load double, double* %24
%211 = load double, double* %25
%212 = load double*, double** %11
%213 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_laxwend to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %204, i32 %205, i32 %206, i32 %207, i32 -1, i32 0, i32 -1, i32 %208, double %209, double %210, double %211, double* %26, double* %212)
br label %311
214: ; preds = %200
%215 = load i32, i32* %20
%216 = icmp eq i32 %215, 2
br i1 %216, label %217, label %228
217: ; preds = %214
%218 = load i32, i32* %14
%219 = load i32, i32* %15
%220 = load i32, i32* %16
%221 = load i32, i32* %17
%222 = load i32, i32* %21
%223 = load double, double* %18
%224 = load double, double* %24
%225 = load double, double* %25
%226 = load double*, double** %11
%227 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_a to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %218, i32 %219, i32 %220, i32 %221, i32 -1, i32 0, i32 -1, i32 %222, double %223, double %224, double %225, double* %26, double* %226)
br label %310
228: ; preds = %214
%229 = load i32, i32* %20
%230 = icmp eq i32 %229, 3
br i1 %230, label %231, label %242
231: ; preds = %228
%232 = load i32, i32* %14
%233 = load i32, i32* %15
%234 = load i32, i32* %16
%235 = load i32, i32* %17
%236 = load i32, i32* %21
%237 = load double, double* %18
%238 = load double, double* %24
%239 = load double, double* %25
%240 = load double*, double** %11
%241 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_b to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %232, i32 %233, i32 %234, i32 %235, i32 -1, i32 0, i32 -1, i32 %236, double %237, double %238, double %239, double* %26, double* %240)
br label %309
242: ; preds = %228
%243 = load i32, i32* %20
%244 = icmp eq i32 %243, 4
br i1 %244, label %245, label %263
245: ; preds = %242
%246 = load i32, i32* %14
%247 = load i32, i32* %15
%248 = load i32, i32* %16
%249 = load i32, i32* %17
%250 = load i32, i32* %21
%251 = load double*, double** %13
%252 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %246, i32 %247, i32 %248, i32 %249, i32 -1, i32 0, i32 1, i32 %250, double* %25, double* %251)
%253 = load i32, i32* %14
%254 = load i32, i32* %15
%255 = load i32, i32* %16
%256 = load i32, i32* %17
%257 = load i32, i32* %21
%258 = load double, double* %18
%259 = load double, double* %24
%260 = load double, double* %25
%261 = load double*, double** %11
%262 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_upmulti to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %253, i32 %254, i32 %255, i32 %256, i32 -1, i32 0, i32 -1, i32 %257, double %258, double %259, double %260, double* %26, double* %261)
br label %308
263: ; preds = %242
%264 = load i32, i32* %20
%265 = icmp eq i32 %264, 5
br i1 %265, label %266, label %284
266: ; preds = %263
%267 = load i32, i32* %14
%268 = load i32, i32* %15
%269 = load i32, i32* %16
%270 = load i32, i32* %17
%271 = load i32, i32* %21
%272 = load double*, double** %13
%273 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %267, i32 %268, i32 %269, i32 %270, i32 -1, i32 0, i32 1, i32 %271, double* %25, double* %272)
%274 = load i32, i32* %14
%275 = load i32, i32* %15
%276 = load i32, i32* %16
%277 = load i32, i32* %17
%278 = load i32, i32* %21
%279 = load double, double* %18
%280 = load double, double* %24
%281 = load double, double* %25
%282 = load double*, double** %11
%283 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia_simp to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %274, i32 %275, i32 %276, i32 %277, i32 -1, i32 0, i32 -1, i32 %278, double %279, double %280, double %281, double* %26, double* %282)
br label %307
284: ; preds = %263
%285 = load i32, i32* %20
%286 = icmp eq i32 %285, 6
br i1 %286, label %287, label %305
287: ; preds = %284
%288 = load i32, i32* %14
%289 = load i32, i32* %15
%290 = load i32, i32* %16
%291 = load i32, i32* %17
%292 = load i32, i32* %21
%293 = load double*, double** %13
%294 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %288, i32 %289, i32 %290, i32 %291, i32 -1, i32 0, i32 1, i32 %292, double* %25, double* %293)
%295 = load i32, i32* %14
%296 = load i32, i32* %15
%297 = load i32, i32* %16
%298 = load i32, i32* %17
%299 = load i32, i32* %21
%300 = load double, double* %18
%301 = load double, double* %24
%302 = load double, double* %25
%303 = load double*, double** %11
%304 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %295, i32 %296, i32 %297, i32 %298, i32 -1, i32 0, i32 -1, i32 %299, double %300, double %301, double %302, double* %26, double* %303)
br label %306
305: ; preds = %284
store double 0.000000e+00, double* %26
br label %306
306: ; preds = %305, %287
br label %307
307: ; preds = %306, %266
br label %308
308: ; preds = %307, %245
br label %309
309: ; preds = %308, %231
br label %310
310: ; preds = %309, %217
br label %311
311: ; preds = %310, %203
br label %312
312: ; preds = %311, %189
%313 = load i32, i32* %14
%314 = load i32, i32* %15
%315 = load i32, i32* %16
%316 = load i32, i32* %17
%317 = load i32, i32* %21
%318 = load double*, double** %11
%319 = call i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_face_grad_2d to i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %313, i32 %314, i32 %315, i32 %316, i32 -1, i32 0, i32 %317, double* %27, double* %318)
%320 = load double, double* %26
%321 = load double, double* %24
%322 = load double, double* %22
%323 = fneg double %320
%324 = call double @llvm.fmuladd.f64(double %323, double %321, double %322)
store double %324, double* %22
%325 = load double, double* %27
%326 = load double, double* %23
%327 = fadd double %326, %325
store double %327, double* %23
%328 = load i32, i32* %14
%329 = load i32, i32* %15
%330 = load i32, i32* %16
%331 = load i32, i32* %17
%332 = load i32, i32* %21
%333 = load double*, double** %13
%334 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %328, i32 %329, i32 %330, i32 %331, i32 0, i32 1, i32 1, i32 %332, double* %24, double* %333)
%335 = load i32, i32* %20
%336 = icmp eq i32 %335, 0
br i1 %336, label %337, label %348
337: ; preds = %312
%338 = load i32, i32* %14
%339 = load i32, i32* %15
%340 = load i32, i32* %16
%341 = load i32, i32* %17
%342 = load i32, i32* %21
%343 = load double, double* %18
%344 = load double, double* %24
%345 = load double, double* %25
%346 = load double*, double** %11
%347 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_up to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %338, i32 %339, i32 %340, i32 %341, i32 0, i32 1, i32 1, i32 %342, double %343, double %344, double %345, double* %26, double* %346)
br label %460
348: ; preds = %312
%349 = load i32, i32* %20
%350 = icmp eq i32 %349, 1
br i1 %350, label %351, label %362
351: ; preds = %348
%352 = load i32, i32* %14
%353 = load i32, i32* %15
%354 = load i32, i32* %16
%355 = load i32, i32* %17
%356 = load i32, i32* %21
%357 = load double, double* %18
%358 = load double, double* %24
%359 = load double, double* %25
%360 = load double*, double** %11
%361 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_laxwend to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %352, i32 %353, i32 %354, i32 %355, i32 0, i32 1, i32 1, i32 %356, double %357, double %358, double %359, double* %26, double* %360)
br label %459
362: ; preds = %348
%363 = load i32, i32* %20
%364 = icmp eq i32 %363, 2
br i1 %364, label %365, label %376
365: ; preds = %362
%366 = load i32, i32* %14
%367 = load i32, i32* %15
%368 = load i32, i32* %16
%369 = load i32, i32* %17
%370 = load i32, i32* %21
%371 = load double, double* %18
%372 = load double, double* %24
%373 = load double, double* %25
%374 = load double*, double** %11
%375 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_a to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %366, i32 %367, i32 %368, i32 %369, i32 0, i32 1, i32 1, i32 %370, double %371, double %372, double %373, double* %26, double* %374)
br label %458
376: ; preds = %362
%377 = load i32, i32* %20
%378 = icmp eq i32 %377, 3
br i1 %378, label %379, label %390
379: ; preds = %376
%380 = load i32, i32* %14
%381 = load i32, i32* %15
%382 = load i32, i32* %16
%383 = load i32, i32* %17
%384 = load i32, i32* %21
%385 = load double, double* %18
%386 = load double, double* %24
%387 = load double, double* %25
%388 = load double*, double** %11
%389 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_b to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %380, i32 %381, i32 %382, i32 %383, i32 0, i32 1, i32 1, i32 %384, double %385, double %386, double %387, double* %26, double* %388)
br label %457
390: ; preds = %376
%391 = load i32, i32* %20
%392 = icmp eq i32 %391, 4
br i1 %392, label %393, label %411
393: ; preds = %390
%394 = load i32, i32* %14
%395 = load i32, i32* %15
%396 = load i32, i32* %16
%397 = load i32, i32* %17
%398 = load i32, i32* %21
%399 = load double*, double** %13
%400 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %394, i32 %395, i32 %396, i32 %397, i32 0, i32 1, i32 0, i32 %398, double* %25, double* %399)
%401 = load i32, i32* %14
%402 = load i32, i32* %15
%403 = load i32, i32* %16
%404 = load i32, i32* %17
%405 = load i32, i32* %21
%406 = load double, double* %18
%407 = load double, double* %24
%408 = load double, double* %25
%409 = load double*, double** %11
%410 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_upmulti to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %401, i32 %402, i32 %403, i32 %404, i32 0, i32 1, i32 1, i32 %405, double %406, double %407, double %408, double* %26, double* %409)
br label %456
411: ; preds = %390
%412 = load i32, i32* %20
%413 = icmp eq i32 %412, 5
br i1 %413, label %414, label %432
414: ; preds = %411
%415 = load i32, i32* %14
%416 = load i32, i32* %15
%417 = load i32, i32* %16
%418 = load i32, i32* %17
%419 = load i32, i32* %21
%420 = load double*, double** %13
%421 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %415, i32 %416, i32 %417, i32 %418, i32 0, i32 1, i32 0, i32 %419, double* %25, double* %420)
%422 = load i32, i32* %14
%423 = load i32, i32* %15
%424 = load i32, i32* %16
%425 = load i32, i32* %17
%426 = load i32, i32* %21
%427 = load double, double* %18
%428 = load double, double* %24
%429 = load double, double* %25
%430 = load double*, double** %11
%431 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia_simp to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %422, i32 %423, i32 %424, i32 %425, i32 0, i32 1, i32 1, i32 %426, double %427, double %428, double %429, double* %26, double* %430)
br label %455
432: ; preds = %411
%433 = load i32, i32* %20
%434 = icmp eq i32 %433, 6
br i1 %434, label %435, label %453
435: ; preds = %432
%436 = load i32, i32* %14
%437 = load i32, i32* %15
%438 = load i32, i32* %16
%439 = load i32, i32* %17
%440 = load i32, i32* %21
%441 = load double*, double** %13
%442 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %436, i32 %437, i32 %438, i32 %439, i32 0, i32 1, i32 0, i32 %440, double* %25, double* %441)
%443 = load i32, i32* %14
%444 = load i32, i32* %15
%445 = load i32, i32* %16
%446 = load i32, i32* %17
%447 = load i32, i32* %21
%448 = load double, double* %18
%449 = load double, double* %24
%450 = load double, double* %25
%451 = load double*, double** %11
%452 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %443, i32 %444, i32 %445, i32 %446, i32 0, i32 1, i32 1, i32 %447, double %448, double %449, double %450, double* %26, double* %451)
br label %454
453: ; preds = %432
store double 0.000000e+00, double* %26
br label %454
454: ; preds = %453, %435
br label %455
455: ; preds = %454, %414
br label %456
456: ; preds = %455, %393
br label %457
457: ; preds = %456, %379
br label %458
458: ; preds = %457, %365
br label %459
459: ; preds = %458, %351
br label %460
460: ; preds = %459, %337
%461 = load i32, i32* %14
%462 = load i32, i32* %15
%463 = load i32, i32* %16
%464 = load i32, i32* %17
%465 = load i32, i32* %21
%466 = load double*, double** %11
%467 = call i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_face_grad_2d to i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %461, i32 %462, i32 %463, i32 %464, i32 0, i32 1, i32 %465, double* %27, double* %466)
%468 = load double, double* %26
%469 = load double, double* %24
%470 = load double, double* %22
%471 = call double @llvm.fmuladd.f64(double %468, double %469, double %470)
store double %471, double* %22
%472 = load double, double* %27
%473 = load double, double* %23
%474 = fadd double %473, %472
store double %474, double* %23
%475 = load i32, i32* %14
%476 = load i32, i32* %15
%477 = load i32, i32* %16
%478 = load i32, i32* %17
%479 = load i32, i32* %21
%480 = load double*, double** %13
%481 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %475, i32 %476, i32 %477, i32 %478, i32 0, i32 -1, i32 1, i32 %479, double* %24, double* %480)
%482 = load i32, i32* %20
%483 = icmp eq i32 %482, 0
br i1 %483, label %484, label %495
484: ; preds = %460
%485 = load i32, i32* %14
%486 = load i32, i32* %15
%487 = load i32, i32* %16
%488 = load i32, i32* %17
%489 = load i32, i32* %21
%490 = load double, double* %18
%491 = load double, double* %24
%492 = load double, double* %25
%493 = load double*, double** %11
%494 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_up to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %485, i32 %486, i32 %487, i32 %488, i32 0, i32 -1, i32 -1, i32 %489, double %490, double %491, double %492, double* %26, double* %493)
br label %607
495: ; preds = %460
%496 = load i32, i32* %20
%497 = icmp eq i32 %496, 1
br i1 %497, label %498, label %509
498: ; preds = %495
%499 = load i32, i32* %14
%500 = load i32, i32* %15
%501 = load i32, i32* %16
%502 = load i32, i32* %17
%503 = load i32, i32* %21
%504 = load double, double* %18
%505 = load double, double* %24
%506 = load double, double* %25
%507 = load double*, double** %11
%508 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_laxwend to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %499, i32 %500, i32 %501, i32 %502, i32 0, i32 -1, i32 -1, i32 %503, double %504, double %505, double %506, double* %26, double* %507)
br label %606
509: ; preds = %495
%510 = load i32, i32* %20
%511 = icmp eq i32 %510, 2
br i1 %511, label %512, label %523
512: ; preds = %509
%513 = load i32, i32* %14
%514 = load i32, i32* %15
%515 = load i32, i32* %16
%516 = load i32, i32* %17
%517 = load i32, i32* %21
%518 = load double, double* %18
%519 = load double, double* %24
%520 = load double, double* %25
%521 = load double*, double** %11
%522 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_a to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %513, i32 %514, i32 %515, i32 %516, i32 0, i32 -1, i32 -1, i32 %517, double %518, double %519, double %520, double* %26, double* %521)
br label %605
523: ; preds = %509
%524 = load i32, i32* %20
%525 = icmp eq i32 %524, 3
br i1 %525, label %526, label %537
526: ; preds = %523
%527 = load i32, i32* %14
%528 = load i32, i32* %15
%529 = load i32, i32* %16
%530 = load i32, i32* %17
%531 = load i32, i32* %21
%532 = load double, double* %18
%533 = load double, double* %24
%534 = load double, double* %25
%535 = load double*, double** %11
%536 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_b to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %527, i32 %528, i32 %529, i32 %530, i32 0, i32 -1, i32 -1, i32 %531, double %532, double %533, double %534, double* %26, double* %535)
br label %604
537: ; preds = %523
%538 = load i32, i32* %20
%539 = icmp eq i32 %538, 4
br i1 %539, label %540, label %558
540: ; preds = %537
%541 = load i32, i32* %14
%542 = load i32, i32* %15
%543 = load i32, i32* %16
%544 = load i32, i32* %17
%545 = load i32, i32* %21
%546 = load double*, double** %13
%547 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %541, i32 %542, i32 %543, i32 %544, i32 0, i32 -1, i32 0, i32 %545, double* %25, double* %546)
%548 = load i32, i32* %14
%549 = load i32, i32* %15
%550 = load i32, i32* %16
%551 = load i32, i32* %17
%552 = load i32, i32* %21
%553 = load double, double* %18
%554 = load double, double* %24
%555 = load double, double* %25
%556 = load double*, double** %11
%557 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_upmulti to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %548, i32 %549, i32 %550, i32 %551, i32 0, i32 -1, i32 -1, i32 %552, double %553, double %554, double %555, double* %26, double* %556)
br label %603
558: ; preds = %537
%559 = load i32, i32* %20
%560 = icmp eq i32 %559, 5
br i1 %560, label %561, label %579
561: ; preds = %558
%562 = load i32, i32* %14
%563 = load i32, i32* %15
%564 = load i32, i32* %16
%565 = load i32, i32* %17
%566 = load i32, i32* %21
%567 = load double*, double** %13
%568 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %562, i32 %563, i32 %564, i32 %565, i32 0, i32 -1, i32 0, i32 %566, double* %25, double* %567)
%569 = load i32, i32* %14
%570 = load i32, i32* %15
%571 = load i32, i32* %16
%572 = load i32, i32* %17
%573 = load i32, i32* %21
%574 = load double, double* %18
%575 = load double, double* %24
%576 = load double, double* %25
%577 = load double*, double** %11
%578 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia_simp to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %569, i32 %570, i32 %571, i32 %572, i32 0, i32 -1, i32 -1, i32 %573, double %574, double %575, double %576, double* %26, double* %577)
br label %602
579: ; preds = %558
%580 = load i32, i32* %20
%581 = icmp eq i32 %580, 6
br i1 %581, label %582, label %600
582: ; preds = %579
%583 = load i32, i32* %14
%584 = load i32, i32* %15
%585 = load i32, i32* %16
%586 = load i32, i32* %17
%587 = load i32, i32* %21
%588 = load double*, double** %13
%589 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %583, i32 %584, i32 %585, i32 %586, i32 0, i32 -1, i32 0, i32 %587, double* %25, double* %588)
%590 = load i32, i32* %14
%591 = load i32, i32* %15
%592 = load i32, i32* %16
%593 = load i32, i32* %17
%594 = load i32, i32* %21
%595 = load double, double* %18
%596 = load double, double* %24
%597 = load double, double* %25
%598 = load double*, double** %11
%599 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %590, i32 %591, i32 %592, i32 %593, i32 0, i32 -1, i32 -1, i32 %594, double %595, double %596, double %597, double* %26, double* %598)
br label %601
600: ; preds = %579
store double 0.000000e+00, double* %26
br label %601
601: ; preds = %600, %582
br label %602
602: ; preds = %601, %561
br label %603
603: ; preds = %602, %540
br label %604
604: ; preds = %603, %526
br label %605
605: ; preds = %604, %512
br label %606
606: ; preds = %605, %498
br label %607
607: ; preds = %606, %484
%608 = load i32, i32* %14
%609 = load i32, i32* %15
%610 = load i32, i32* %16
%611 = load i32, i32* %17
%612 = load i32, i32* %21
%613 = load double*, double** %11
%614 = call i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_face_grad_2d to i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %608, i32 %609, i32 %610, i32 %611, i32 0, i32 -1, i32 %612, double* %27, double* %613)
%615 = load double, double* %26
%616 = load double, double* %24
%617 = load double, double* %22
%618 = fneg double %615
%619 = call double @llvm.fmuladd.f64(double %618, double %616, double %617)
store double %619, double* %22
%620 = load double, double* %27
%621 = load double, double* %23
%622 = fadd double %621, %620
store double %622, double* %23
%623 = load double*, double** %11
%624 = load i32, i32* %21
%625 = sext i32 %624 to i64
%626 = getelementptr inbounds double, double* %623, i64 %625
%627 = load double, double* %626
%628 = load double, double* %18
%629 = fmul double 1.000000e+00, %628
%630 = load double, double* %19
%631 = fmul double 1.000000e+00, %630
%632 = load double, double* %23
%633 = load double, double* %22
%634 = fneg double %633
%635 = call double @llvm.fmuladd.f64(double %631, double %632, double %634)
%636 = call double @llvm.fmuladd.f64(double %629, double %635, double %627)
%637 = load double*, double** %12
%638 = load i32, i32* %21
%639 = sext i32 %638 to i64
%640 = getelementptr inbounds double, double* %637, i64 %639
store double %636, double* %640
ret void
}

LLVM IR (-O2):
define void @update_cell_2D_BRANCH(double* %0, double* nocapture writeonly %1, double* %2, i32 %3, i32 %4, i32 %5, i32 %6, double %7, double %8, i32 %9) {
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = bitcast double* %11 to i8*
%16 = bitcast double* %12 to i8*
store double 0.000000e+00, double* %12
%17 = bitcast double* %13 to i8*
%18 = bitcast double* %14 to i8*
%19 = mul nsw i32 %5, %4
%20 = add nsw i32 %19, %3
%21 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 0, i32 %20, double* %11, double* %2)
%22 = icmp eq i32 %9, 0
br i1 %22, label %23, label %27
23: ; preds = %10
%24 = load double, double* %11
%25 = load double, double* %12
%26 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_up to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double %7, double %24, double %25, double* %13, double* %0)
br label %56
27: ; preds = %10
switch i32 %9, label %55 [
i32 1, label %28
i32 2, label %32
i32 3, label %36
i32 4, label %40
i32 5, label %45
i32 6, label %50
]
28: ; preds = %27
%29 = load double, double* %11
%30 = load double, double* %12
%31 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_laxwend to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double %7, double %29, double %30, double* %13, double* %0)
br label %56
32: ; preds = %27
%33 = load double, double* %11
%34 = load double, double* %12
%35 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_a to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double %7, double %33, double %34, double* %13, double* %0)
br label %56
36: ; preds = %27
%37 = load double, double* %11
%38 = load double, double* %12
%39 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_b to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double %7, double %37, double %38, double* %13, double* %0)
br label %56
40: ; preds = %27
%41 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double* %12, double* %2)
%42 = load double, double* %11
%43 = load double, double* %12
%44 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_upmulti to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double %7, double %42, double %43, double* %13, double* %0)
br label %56
45: ; preds = %27
%46 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double* %12, double* %2)
%47 = load double, double* %11
%48 = load double, double* %12
%49 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia_simp to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double %7, double %47, double %48, double* %13, double* %0)
br label %56
50: ; preds = %27
%51 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double* %12, double* %2)
%52 = load double, double* %11
%53 = load double, double* %12
%54 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 1, i32 %20, double %7, double %52, double %53, double* %13, double* %0)
br label %56
55: ; preds = %27
store double 0.000000e+00, double* %13
br label %56
56: ; preds = %28, %36, %45, %55, %50, %40, %32, %23
%57 = call i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_face_grad_2d to i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 1, i32 0, i32 %20, double* %14, double* %0)
%58 = load double, double* %13
%59 = load double, double* %11
%60 = load double, double* %14
%61 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 0, i32 %20, double* %11, double* %2)
br i1 %22, label %62, label %66
62: ; preds = %56
%63 = load double, double* %11
%64 = load double, double* %12
%65 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_up to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 -1, i32 %20, double %7, double %63, double %64, double* %13, double* %0)
br label %95
66: ; preds = %56
switch i32 %9, label %94 [
i32 1, label %67
i32 2, label %71
i32 3, label %75
i32 4, label %79
i32 5, label %84
i32 6, label %89
]
67: ; preds = %66
%68 = load double, double* %11
%69 = load double, double* %12
%70 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_laxwend to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 -1, i32 %20, double %7, double %68, double %69, double* %13, double* %0)
br label %95
71: ; preds = %66
%72 = load double, double* %11
%73 = load double, double* %12
%74 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_a to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 -1, i32 %20, double %7, double %72, double %73, double* %13, double* %0)
br label %95
75: ; preds = %66
%76 = load double, double* %11
%77 = load double, double* %12
%78 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_b to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 -1, i32 %20, double %7, double %76, double %77, double* %13, double* %0)
br label %95
79: ; preds = %66
%80 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 1, i32 %20, double* %12, double* %2)
%81 = load double, double* %11
%82 = load double, double* %12
%83 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_upmulti to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 -1, i32 %20, double %7, double %81, double %82, double* %13, double* %0)
br label %95
84: ; preds = %66
%85 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 1, i32 %20, double* %12, double* %2)
%86 = load double, double* %11
%87 = load double, double* %12
%88 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia_simp to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 -1, i32 %20, double %7, double %86, double %87, double* %13, double* %0)
br label %95
89: ; preds = %66
%90 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 1, i32 %20, double* %12, double* %2)
%91 = load double, double* %11
%92 = load double, double* %12
%93 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 -1, i32 %20, double %7, double %91, double %92, double* %13, double* %0)
br label %95
94: ; preds = %66
store double 0.000000e+00, double* %13
br label %95
95: ; preds = %67, %75, %84, %94, %89, %79, %71, %62
%96 = call i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_face_grad_2d to i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 -1, i32 0, i32 %20, double* %14, double* %0)
%97 = load double, double* %13
%98 = load double, double* %11
%99 = load double, double* %14
%100 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 1, i32 %20, double* %11, double* %2)
br i1 %22, label %101, label %105
101: ; preds = %95
%102 = load double, double* %11
%103 = load double, double* %12
%104 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_up to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 1, i32 %20, double %7, double %102, double %103, double* %13, double* %0)
br label %134
105: ; preds = %95
switch i32 %9, label %133 [
i32 1, label %106
i32 2, label %110
i32 3, label %114
i32 4, label %118
i32 5, label %123
i32 6, label %128
]
106: ; preds = %105
%107 = load double, double* %11
%108 = load double, double* %12
%109 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_laxwend to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 1, i32 %20, double %7, double %107, double %108, double* %13, double* %0)
br label %134
110: ; preds = %105
%111 = load double, double* %11
%112 = load double, double* %12
%113 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_a to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 1, i32 %20, double %7, double %111, double %112, double* %13, double* %0)
br label %134
114: ; preds = %105
%115 = load double, double* %11
%116 = load double, double* %12
%117 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_b to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 1, i32 %20, double %7, double %115, double %116, double* %13, double* %0)
br label %134
118: ; preds = %105
%119 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 0, i32 %20, double* %12, double* %2)
%120 = load double, double* %11
%121 = load double, double* %12
%122 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_upmulti to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 1, i32 %20, double %7, double %120, double %121, double* %13, double* %0)
br label %134
123: ; preds = %105
%124 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 0, i32 %20, double* %12, double* %2)
%125 = load double, double* %11
%126 = load double, double* %12
%127 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia_simp to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 1, i32 %20, double %7, double %125, double %126, double* %13, double* %0)
br label %134
128: ; preds = %105
%129 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 0, i32 %20, double* %12, double* %2)
%130 = load double, double* %11
%131 = load double, double* %12
%132 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 1, i32 %20, double %7, double %130, double %131, double* %13, double* %0)
br label %134
133: ; preds = %105
store double 0.000000e+00, double* %13
br label %134
134: ; preds = %106, %114, %123, %133, %128, %118, %110, %101
%135 = call i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_face_grad_2d to i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 1, i32 %20, double* %14, double* %0)
%136 = load double, double* %13
%137 = load double, double* %11
%138 = load double, double* %14
%139 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 1, i32 %20, double* %11, double* %2)
br i1 %22, label %140, label %144
140: ; preds = %134
%141 = load double, double* %11
%142 = load double, double* %12
%143 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_up to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 -1, i32 %20, double %7, double %141, double %142, double* %13, double* %0)
br label %173
144: ; preds = %134
switch i32 %9, label %172 [
i32 1, label %145
i32 2, label %149
i32 3, label %153
i32 4, label %157
i32 5, label %162
i32 6, label %167
]
145: ; preds = %144
%146 = load double, double* %11
%147 = load double, double* %12
%148 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_laxwend to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 -1, i32 %20, double %7, double %146, double %147, double* %13, double* %0)
br label %173
149: ; preds = %144
%150 = load double, double* %11
%151 = load double, double* %12
%152 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_a to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 -1, i32 %20, double %7, double %150, double %151, double* %13, double* %0)
br label %173
153: ; preds = %144
%154 = load double, double* %11
%155 = load double, double* %12
%156 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_quickest_b to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 -1, i32 %20, double %7, double %154, double %155, double* %13, double* %0)
br label %173
157: ; preds = %144
%158 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 0, i32 %20, double* %12, double* %2)
%159 = load double, double* %11
%160 = load double, double* %12
%161 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_upmulti to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 -1, i32 %20, double %7, double %159, double %160, double* %13, double* %0)
br label %173
162: ; preds = %144
%163 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 0, i32 %20, double* %12, double* %2)
%164 = load double, double* %11
%165 = load double, double* %12
%166 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia_simp to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 -1, i32 %20, double %7, double %164, double %165, double* %13, double* %0)
br label %173
167: ; preds = %144
%168 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_uface_2d to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 0, i32 %20, double* %12, double* %2)
%169 = load double, double* %11
%170 = load double, double* %12
%171 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...) bitcast (i32 (...)* @get_face_2d_utopia to i32 (i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 -1, i32 %20, double %7, double %169, double %170, double* %13, double* %0)
br label %173
172: ; preds = %144
store double 0.000000e+00, double* %13
br label %173
173: ; preds = %145, %153, %162, %172, %167, %157, %149, %140
%174 = fadd double %60, 0.000000e+00
%175 = fadd double %174, %99
%176 = fadd double %175, %138
%177 = fneg double %97
%178 = call double @llvm.fmuladd.f64(double %58, double %59, double 0.000000e+00)
%179 = call double @llvm.fmuladd.f64(double %177, double %98, double %178)
%180 = call double @llvm.fmuladd.f64(double %136, double %137, double %179)
%181 = call i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...) bitcast (i32 (...)* @get_face_grad_2d to i32 (i32, i32, i32, i32, i32, i32, i32, double*, double*, ...)*)(i32 %3, i32 %4, i32 %5, i32 %6, i32 0, i32 -1, i32 %20, double* %14, double* %0)
%182 = load double, double* %13
%183 = load double, double* %11
%184 = fneg double %182
%185 = call double @llvm.fmuladd.f64(double %184, double %183, double %180)
%186 = load double, double* %14
%187 = fadd double %176, %186
%188 = sext i32 %20 to i64
%189 = getelementptr inbounds double, double* %0, i64 %188
%190 = load double, double* %189
%191 = fneg double %185
%192 = call double @llvm.fmuladd.f64(double %8, double %187, double %191)
%193 = call double @llvm.fmuladd.f64(double %7, double %192, double %190)
%194 = getelementptr inbounds double, double* %1, i64 %188
store double %193, double* %194
ret void
}