// File: /workspace/github_c_makefile_star2_O0/mvermeulen[P]wspy/topdown.c
// Function: print_topdown
void print_topdown(struct counter_group *cgroup,enum output_format oformat,int mask){
  unsigned long slots=0;
  unsigned long slots_no_contention = 0;
  unsigned long retiring=0;
  unsigned long frontend=0;
  unsigned long frontend_latency=0;
  unsigned long frontend_bandwidth=0;
  unsigned long backend=0;
  unsigned long retire_not_complete=0;
  unsigned long retire_load_not_complete=0;
  unsigned long backend_cpu=0;
  unsigned long backend_memory=0;
  unsigned long speculation=0;
  unsigned long speculation_branches=0;
  unsigned long speculation_pipeline=0;
  unsigned long branches_mispredicted=0;
  unsigned long resyncs_or_nc_redirects=0;
  unsigned long contention=0;
  unsigned long retire_ucode=0;
  unsigned long retire_fastpath=0;
  int too_short = 0;
  struct counter_info *cinfo;

  if (oformat == PRINT_CSV_HEADER){
    fprintf(outfile,"retire,frontend,backend,speculate,");
  }

  switch(cpu_info->vendor){
  case VENDOR_INTEL:
    if (cinfo = find_ci_label(cgroup,"slots")) slots = cinfo->value;
    if (cinfo = find_ci_label(cgroup,"core.topdown-retiring")) retiring = cinfo->value;
    if (cinfo = find_ci_label(cgroup,"core.topdown-fe-bound")) frontend = cinfo->value;
    if (cinfo = find_ci_label(cgroup,"core.topdown-be-bound")) backend = cinfo->value;
    if (cinfo = find_ci_label(cgroup,"core.topdown-bad-spec")) speculation = cinfo->value;

    // backend level 2
    if (cinfo = find_ci_label(cgroup,"core.topdown-mem-bound")){
      backend_memory = cinfo->value;
      backend_cpu = backend - backend_memory;
    }

    // speculation level 2
    if (cinfo = find_ci_label(cgroup,"core.topdown-br-mispredict")){
      speculation_branches = cinfo->value;
      speculation_pipeline = speculation - speculation_branches;
    }

    // frontend level 2
    if (cinfo = find_ci_label(cgroup,"core.topdown-fetch-lat")){
      frontend_latency = cinfo->value;
      frontend_bandwidth = frontend - frontend_latency;
    }

    // retire level 2
    if (cinfo = find_ci_label(cgroup,"core.topdown-heavy-ops")){
      retire_ucode = cinfo->value;
      retire_fastpath = retiring - retire_ucode;
    }
    
    slots_no_contention = slots;
    break;
  case VENDOR_AMD:
    if (cinfo = find_ci_label(cgroup,"cpu-cycles")){
      if (cpu_info->coreinfo[0].vendor == CORE_AMD_ZEN){
	slots = cinfo->value * 6;
      } else if (cpu_info->coreinfo[0].vendor == CORE_AMD_ZEN5){
	slots = cinfo->value * 8;	
      }
    }
    if (cinfo = find_ci_label(cgroup,"ex_ret_ops")) retiring = cinfo->value;
    if (cinfo = find_ci_label(cgroup,"de_no_dispatch_per_slot.no_ops_from_frontend")) frontend = cinfo->value;
    if (cinfo = find_ci_label(cgroup,"de_no_dispatch_per_slot.backend_stalls")) backend = cinfo->value;
    if (cinfo = find_ci_label(cgroup,"de_no_dispatch_per_slot.smt_contention")) contention = cinfo->value;    
    if (cinfo = find_ci_label(cgroup,"de_src_op_disp.all")){
      if (cinfo->time_running == 0) too_short = 1;
      speculation = cinfo->value - retiring;
    }
    // backend level 2
    if (cinfo = find_ci_label(cgroup,"ex_no_retire.load_not_complete"))
      retire_load_not_complete = cinfo->value;
    if (cinfo = find_ci_label(cgroup,"ex_no_retire.not_complete"))
      retire_not_complete = cinfo->value;
    if (retire_load_not_complete && retire_not_complete){
      backend_memory = backend * (double) retire_load_not_complete / retire_not_complete;
      backend_cpu = backend - backend_memory;
    }

    // speculation level 2
    if (cinfo = find_ci_label(cgroup,"ex_ret_brn_misp"))
      branches_mispredicted = cinfo->value;
    if (cinfo = find_ci_label(cgroup,"resyncs_or_nc_redirects"))
      resyncs_or_nc_redirects = cinfo->value;
    if (branches_mispredicted && resyncs_or_nc_redirects){
      speculation_pipeline = speculation * (double) resyncs_or_nc_redirects / (resyncs_or_nc_redirects + branches_mispredicted);
      speculation_branches = speculation - speculation_pipeline;
    }

    // frontend level 2
    if (cinfo = find_ci_label(cgroup,"de_no_dispatch_per_slot.no_ops_from_frontend.cmask_0x6")){
      frontend_latency = cinfo->value*6;
      frontend_bandwidth = frontend - frontend_latency;
    }

    // retire level 2
    if (cinfo = find_ci_label(cgroup,"ex_ret_ucode_ops")){
      retire_ucode = retiring * (double) cinfo->value / retiring;
      retire_fastpath = retiring - retire_ucode;
    }
    
    slots_no_contention = slots - contention;
    break;
  default:
    return;
  }

  if (slots){
    switch(oformat){
    case PRINT_CSV:
      fprintf(outfile,"%4.1f,",(double) retiring/slots_no_contention*100);
      fprintf(outfile,"%4.1f,",(double) frontend/slots_no_contention*100);
      fprintf(outfile,"%4.1f,",(double) backend/slots_no_contention*100);
      fprintf(outfile,"%4.1f,",(double) speculation/slots_no_contention*100);
      
      break;
    case PRINT_NORMAL:
      if (too_short){
	warning("unable to read performance counter, is runtime too short?\n");
      } else {
	fprintf(outfile,"slots                %-14lu #\n",slots);
	fprintf(outfile,"retiring             %-14lu # %4.1f%% (%4.1lf%%)",
		retiring,(double) retiring/slots*100, (double) retiring/slots_no_contention*100);
	if (((double) retiring/slots_no_contention) > 0.54){
	  fprintf(outfile," high");
	} else if (((double) retiring/slots_no_contention) < 0.14){
	  fprintf(outfile," low");
	}
	fprintf(outfile,"\n");
	if (retire_ucode && frontend_bandwidth){
	  fprintf(outfile,"-- ucode             %-14lu #    %4.1f%%\n",
		  retire_ucode,(double) retire_ucode/slots*100);
	  fprintf(outfile,"-- fastpath          %-14lu #    %4.1f%%\n",
		  retire_fastpath,(double) retire_fastpath/slots*100);
	}		
	fprintf(outfile,"frontend             %-14lu # %4.1f%% (%4.1lf%%)",
		frontend,(double) frontend/slots*100, (double) frontend/slots_no_contention*100);
	if (((double) frontend/slots_no_contention) > 0.45){
	  fprintf(outfile," high");
	} else if (((double) frontend/slots_no_contention) < 0.05){
	  fprintf(outfile," low");
	}
	fprintf(outfile,"\n");
	if (frontend_latency && frontend_bandwidth){
	  fprintf(outfile,"-- latency           %-14lu #    %4.1f%%\n",
		  frontend_latency,(double) frontend_latency/slots*100);
	  fprintf(outfile,"-- bandwidth         %-14lu #    %4.1f%%\n",
		  frontend_bandwidth,(double) frontend_bandwidth/slots*100);
	}	
	fprintf(outfile,"backend              %-14lu # %4.1f%% (%4.1lf%%)",
		backend,(double) backend/slots*100, (double) backend/slots_no_contention*100);
	if (((double) backend/slots_no_contention) > 0.70){
	  fprintf(outfile," high");
	} else if (((double) backend/slots_no_contention) < 0.18){
	  fprintf(outfile," low");
	}
	fprintf(outfile,"\n");
	if (backend_memory && backend_cpu){
	  fprintf(outfile,"-- cpu               %-14lu #    %4.1f%%\n",
		  backend_cpu,(double) backend_cpu/slots*100);
	  fprintf(outfile,"-- memory            %-14lu #    %4.1f%%\n",
		  backend_memory,(double) backend_memory/slots*100);
	}
	fprintf(outfile,"speculation          %-14lu # %4.1f%% (%4.1lf%%)",
		speculation,(double) speculation/slots*100, (double) speculation/slots_no_contention*100);
	if (((double) speculation/slots_no_contention) > 0.10){
	  fprintf(outfile," high");
	} else if (((double) speculation/slots_no_contention) < 0.01){
	  fprintf(outfile," low");
	}
	fprintf(outfile,"\n");
	if (speculation_pipeline && speculation_branches){
	  fprintf(outfile,"-- branch mispredict %-14lu #    %4.1lf%%\n",
		  speculation_branches,(double) speculation_branches/slots*100);
	  fprintf(outfile,"-- pipeline restart  %-14lu #    %4.1f%%\n",
		  speculation_pipeline,(double) speculation_pipeline/slots*100);
	}
	fprintf(outfile,"smt-contention       %-14lu # %4.1f%% ( 0.0%%)\n",contention,(double) contention/slots*100);
      }
      break;
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x250, %rsp            # imm = 0x250
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movq $0x0, -0x60(%rbp)
movq $0x0, -0x68(%rbp)
movq $0x0, -0x70(%rbp)
movq $0x0, -0x78(%rbp)
movq $0x0, -0x80(%rbp)
movq $0x0, -0x88(%rbp)
movq $0x0, -0x90(%rbp)
movq $0x0, -0x98(%rbp)
movq $0x0, -0xa0(%rbp)
movq $0x0, -0xa8(%rbp)
movl $0x0, -0xac(%rbp)
cmpl $0x2, -0xc(%rbp)
jne 0x71d4
leaq 0xbf45(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x7c48(%rip), %rsi      # 0xee15
movb $0x0, %al
callq 0x31d0
leaq 0xcf95(%rip), %rax      # 0x14170
movq (%rax), %rax
movl (%rax), %eax
movl %eax, -0xbc(%rbp)
subl $0x1, %eax
je 0x73d4
jmp 0x71f1
movl -0xbc(%rbp), %eax
subl $0x2, %eax
jne 0x7859
jmp 0x7202
movq -0x8(%rbp), %rdi
leaq 0x6764(%rip), %rsi      # 0xd971
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x722e
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x6753(%rip), %rsi      # 0xd98c
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x725a
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x677f(%rip), %rsi      # 0xd9e4
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x7286
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x677f(%rip), %rsi      # 0xda10
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x72b2
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x66fb(%rip), %rsi      # 0xd9b8
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x72de
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x67de(%rip), %rsi      # 0xdac7
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x7316
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rax
subq -0x68(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x6748(%rip), %rsi      # 0xda69
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x734e
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
subq -0x78(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x6741(%rip), %rsi      # 0xda9a
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x7386
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
subq -0x38(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x66ab(%rip), %rsi      # 0xda3c
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x73c7
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x28(%rbp), %rax
subq -0xa0(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x785e
movq -0x8(%rbp), %rdi
leaq 0x657c(%rip), %rsi      # 0xd95b
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x7440
leaq 0xcd78(%rip), %rax      # 0x14170
movq (%rax), %rax
movq 0x18(%rax), %rax
cmpl $0x2, (%rax)
jne 0x7416
movq -0xb8(%rbp), %rax
imulq $0x6, 0x30(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x743e
leaq 0xcd53(%rip), %rax      # 0x14170
movq (%rax), %rax
movq 0x18(%rax), %rax
cmpl $0x3, (%rax)
jne 0x743c
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
shlq $0x3, %rax
movq %rax, -0x18(%rbp)
jmp 0x743e
jmp 0x7440
movq -0x8(%rbp), %rdi
leaq 0x695f(%rip), %rsi      # 0xddaa
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x746c
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x6949(%rip), %rsi      # 0xddc0
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x7498
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x6960(%rip), %rsi      # 0xde03
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x74c4
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x699a(%rip), %rsi      # 0xde69
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x74f3
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x6943(%rip), %rsi      # 0xde41
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x753b
movq -0xb8(%rbp), %rax
cmpq $0x0, 0x48(%rax)
jne 0x7528
movl $0x1, -0xac(%rbp)
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
subq -0x28(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x6961(%rip), %rsi      # 0xdea7
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x7567
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x696a(%rip), %rsi      # 0xdedc
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x7593
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x763e
cmpq $0x0, -0x50(%rbp)
je 0x763e
movq -0x48(%rbp), %xmm0
movaps 0x637b(%rip), %xmm3     # 0xd930
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x637f(%rip), %xmm2     # 0xd940
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x58(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm4
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm4, %xmm1
mulsd %xmm1, %xmm0
movq -0x50(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x62b1(%rip), %xmm1     # 0xd8d0
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rax
subq -0x68(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x68c2(%rip), %rsi      # 0xdf0b
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x766d
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x68ae(%rip), %rsi      # 0xdf26
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x769c
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x88(%rbp)
je 0x775e
cmpq $0x0, -0x90(%rbp)
je 0x775e
movq -0x70(%rbp), %xmm0
movaps 0x626c(%rip), %xmm3     # 0xd930
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6270(%rip), %xmm2     # 0xd940
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x90(%rbp), %rax
movq %rax, %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm4
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm4, %xmm1
mulsd %xmm1, %xmm0
movq -0x88(%rbp), %rcx
addq %rcx, %rax
movq %rax, %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x6191(%rip), %xmm1     # 0xd8d0
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x80(%rbp)
movq -0x70(%rbp), %rax
subq -0x80(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x67e0(%rip), %rsi      # 0xdf49
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x7797
movq -0xb8(%rbp), %rax
imulq $0x6, 0x30(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
subq -0x38(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x67fe(%rip), %rsi      # 0xdfa0
callq 0x6930
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x7848
movq -0x28(%rbp), %xmm1
movaps 0x616c(%rip), %xmm3     # 0xd930
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
movapd 0x6170(%rip), %xmm0     # 0xd940
subpd %xmm0, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
movq -0xb8(%rbp), %rax
movq 0x30(%rax), %xmm2
punpckldq %xmm3, %xmm2    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
subpd %xmm0, %xmm2
movaps %xmm2, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm0, %xmm2
movaps %xmm1, %xmm0
mulsd %xmm2, %xmm0
divsd %xmm1, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x60b0(%rip), %xmm1     # 0xd8d0
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0xa0(%rbp)
movq -0x28(%rbp), %rax
subq -0xa0(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x18(%rbp), %rax
subq -0x98(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x785e
jmp 0x853b
cmpq $0x0, -0x18(%rbp)
je 0x853b
movl -0xc(%rbp), %eax
movl %eax, -0xc0(%rbp)
testl %eax, %eax
je 0x7a5d
jmp 0x787c
movl -0xc0(%rbp), %eax
subl $0x1, %eax
jne 0x8539
jmp 0x788d
leaq 0xb874(%rip), %rax      # 0x13108
movq %rax, -0xc8(%rbp)
movq (%rax), %rdi
movq -0x28(%rbp), %xmm0
movaps 0x6086(%rip), %xmm3     # 0xd930
movaps %xmm3, -0xf0(%rbp)
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6083(%rip), %xmm2     # 0xd940
movaps %xmm2, -0xe0(%rbp)
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x20(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x5fb9(%rip), %xmm1     # 0xd8b0
movsd %xmm1, -0x108(%rbp)
mulsd %xmm1, %xmm0
leaq 0x7817(%rip), %rsi      # 0xf121
movq %rsi, -0x100(%rbp)
movb $0x1, %al
movb %al, -0xf1(%rbp)
callq 0x31d0
movsd -0x108(%rbp), %xmm1
movq -0x100(%rbp), %rsi
movq -0xc8(%rbp), %rcx
movaps -0xf0(%rbp), %xmm4
movaps -0xe0(%rbp), %xmm3
movb -0xf1(%rbp), %al
movq (%rcx), %rdi
movq -0x30(%rbp), %xmm0
punpckldq %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
subpd %xmm3, %xmm0
movaps %xmm0, %xmm2
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm2, %xmm0
movq -0x20(%rbp), %xmm2
punpckldq %xmm4, %xmm2    # xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
subpd %xmm3, %xmm2
movaps %xmm2, %xmm3
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm3, %xmm2
divsd %xmm2, %xmm0
mulsd %xmm1, %xmm0
callq 0x31d0
movsd -0x108(%rbp), %xmm1
movq -0x100(%rbp), %rsi
movq -0xc8(%rbp), %rcx
movaps -0xf0(%rbp), %xmm4
movaps -0xe0(%rbp), %xmm3
movb -0xf1(%rbp), %al
movq (%rcx), %rdi
movq -0x48(%rbp), %xmm0
punpckldq %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
subpd %xmm3, %xmm0
movaps %xmm0, %xmm2
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm2, %xmm0
movq -0x20(%rbp), %xmm2
punpckldq %xmm4, %xmm2    # xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
subpd %xmm3, %xmm2
movaps %xmm2, %xmm3
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm3, %xmm2
divsd %xmm2, %xmm0
mulsd %xmm1, %xmm0
callq 0x31d0
movaps -0xf0(%rbp), %xmm3
movaps -0xe0(%rbp), %xmm2
movq -0xc8(%rbp), %rax
movq (%rax), %rdi
movq -0x70(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x20(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x5e6a(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x76d0(%rip), %rsi      # 0xf121
movb $0x1, %al
callq 0x31d0
jmp 0x8539
cmpl $0x0, -0xac(%rbp)
je 0x7a79
leaq 0x73cb(%rip), %rdi      # 0xee38
movb $0x0, %al
callq 0xbd10
jmp 0x8537
leaq 0xb688(%rip), %rax      # 0x13108
movq %rax, -0x138(%rbp)
movq (%rax), %rdi
movq -0x18(%rbp), %rdx
leaq 0x73de(%rip), %rsi      # 0xee73
xorl %eax, %eax
callq 0x31d0
movq -0x138(%rbp), %rax
movq (%rax), %rdi
movq -0x28(%rbp), %rdx
movq %rdx, %xmm1
movaps 0x5e7a(%rip), %xmm5     # 0xd930
movaps %xmm5, -0x130(%rbp)
punpckldq %xmm5, %xmm1    # xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
movapd 0x5e77(%rip), %xmm4     # 0xd940
movaps %xmm4, -0x120(%rbp)
subpd %xmm4, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movq -0x18(%rbp), %xmm2
punpckldq %xmm5, %xmm2    # xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
subpd %xmm4, %xmm2
movaps %xmm2, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm0, %xmm2
movaps %xmm1, %xmm0
divsd %xmm2, %xmm0
movsd 0x5daa(%rip), %xmm2     # 0xd8b0
mulsd %xmm2, %xmm0
movq -0x20(%rbp), %xmm3
punpckldq %xmm5, %xmm3    # xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1]
subpd %xmm4, %xmm3
movaps %xmm3, %xmm4
unpckhpd %xmm3, %xmm3            # xmm3 = xmm3[1,1]
addsd %xmm4, %xmm3
divsd %xmm3, %xmm1
mulsd %xmm2, %xmm1
leaq 0x7361(%rip), %rsi      # 0xee92
movb $0x2, %al
callq 0x31d0
movaps -0x130(%rbp), %xmm3
movaps -0x120(%rbp), %xmm2
movq -0x28(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x20(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x5d56(%rip), %xmm1     # 0xd8d8
ucomisd %xmm1, %xmm0
jbe 0x7ba2
leaq 0xb579(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x726a(%rip), %rsi      # 0xee03
movb $0x0, %al
callq 0x31d0
jmp 0x7c0d
movq -0x28(%rbp), %xmm1
movaps 0x5d82(%rip), %xmm3     # 0xd930
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
movapd 0x5d86(%rip), %xmm2     # 0xd940
subpd %xmm2, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movq -0x20(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm2
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x5cf3(%rip), %xmm0     # 0xd8e0
ucomisd %xmm1, %xmm0
jbe 0x7c0b
leaq 0xb50e(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x7205(%rip), %rsi      # 0xee09
movb $0x0, %al
callq 0x31d0
jmp 0x7c0d
leaq 0xb4f4(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x7272(%rip), %rsi      # 0xee90
movb $0x0, %al
callq 0x31d0
cmpq $0x0, -0xa0(%rbp)
je 0x7d2e
cmpq $0x0, -0x40(%rbp)
je 0x7d2e
leaq 0xb4c3(%rip), %rax      # 0x13108
movq %rax, -0x140(%rbp)
movq (%rax), %rdi
movq -0xa0(%rbp), %rdx
movq %rdx, %xmm0
movaps 0x5cce(%rip), %xmm3     # 0xd930
movaps %xmm3, -0x160(%rbp)
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x5ccb(%rip), %xmm2     # 0xd940
movaps %xmm2, -0x150(%rbp)
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x5c01(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x7209(%rip), %rsi      # 0xeec3
movb $0x1, %al
callq 0x31d0
movaps -0x160(%rbp), %xmm3
movaps -0x150(%rbp), %xmm2
movq -0x140(%rbp), %rax
movq (%rax), %rdi
movq -0xa8(%rbp), %rdx
movq %rdx, %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x5b94(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x71c6(%rip), %rsi      # 0xeeed
movb $0x1, %al
callq 0x31d0
leaq 0xb3d3(%rip), %rax      # 0x13108
movq (%rax), %rdi
movq -0x30(%rbp), %rdx
movq %rdx, %xmm1
movaps 0x5be8(%rip), %xmm5     # 0xd930
movaps %xmm5, -0x180(%rbp)
punpckldq %xmm5, %xmm1    # xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
movapd 0x5be5(%rip), %xmm4     # 0xd940
movaps %xmm4, -0x170(%rbp)
subpd %xmm4, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movq -0x18(%rbp), %xmm2
punpckldq %xmm5, %xmm2    # xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
subpd %xmm4, %xmm2
movaps %xmm2, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm0, %xmm2
movaps %xmm1, %xmm0
divsd %xmm2, %xmm0
movsd 0x5b18(%rip), %xmm2     # 0xd8b0
mulsd %xmm2, %xmm0
movq -0x20(%rbp), %xmm3
punpckldq %xmm5, %xmm3    # xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1]
subpd %xmm4, %xmm3
movaps %xmm3, %xmm4
unpckhpd %xmm3, %xmm3            # xmm3 = xmm3[1,1]
addsd %xmm4, %xmm3
divsd %xmm3, %xmm1
mulsd %xmm2, %xmm1
leaq 0x7154(%rip), %rsi      # 0xef17
movb $0x2, %al
callq 0x31d0
movaps -0x180(%rbp), %xmm3
movaps -0x170(%rbp), %xmm2
movq -0x30(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x20(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x5ad4(%rip), %xmm1     # 0xd8e8
ucomisd %xmm1, %xmm0
jbe 0x7e34
leaq 0xb2e7(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x6fd8(%rip), %rsi      # 0xee03
movb $0x0, %al
callq 0x31d0
jmp 0x7e9f
movq -0x30(%rbp), %xmm1
movaps 0x5af0(%rip), %xmm3     # 0xd930
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
movapd 0x5af4(%rip), %xmm2     # 0xd940
subpd %xmm2, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movq -0x20(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm2
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x5a71(%rip), %xmm0     # 0xd8f0
ucomisd %xmm1, %xmm0
jbe 0x7e9d
leaq 0xb27c(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x6f73(%rip), %rsi      # 0xee09
movb $0x0, %al
callq 0x31d0
jmp 0x7e9f
leaq 0xb262(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x6fe0(%rip), %rsi      # 0xee90
movb $0x0, %al
callq 0x31d0
cmpq $0x0, -0x38(%rbp)
je 0x7fb7
cmpq $0x0, -0x40(%rbp)
je 0x7fb7
leaq 0xb234(%rip), %rax      # 0x13108
movq %rax, -0x188(%rbp)
movq (%rax), %rdi
movq -0x38(%rbp), %rdx
movq %rdx, %xmm0
movaps 0x5a42(%rip), %xmm3     # 0xd930
movaps %xmm3, -0x1b0(%rbp)
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x5a3f(%rip), %xmm2     # 0xd940
movaps %xmm2, -0x1a0(%rbp)
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x5975(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x7002(%rip), %rsi      # 0xef48
movb $0x1, %al
callq 0x31d0
movaps -0x1b0(%rbp), %xmm3
movaps -0x1a0(%rbp), %xmm2
movq -0x188(%rbp), %rax
movq (%rax), %rdi
movq -0x40(%rbp), %rdx
movq %rdx, %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x590b(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x6fc2(%rip), %rsi      # 0xef72
movb $0x1, %al
callq 0x31d0
leaq 0xb14a(%rip), %rax      # 0x13108
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
movq %rdx, %xmm1
movaps 0x595f(%rip), %xmm5     # 0xd930
movaps %xmm5, -0x1d0(%rbp)
punpckldq %xmm5, %xmm1    # xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
movapd 0x595c(%rip), %xmm4     # 0xd940
movaps %xmm4, -0x1c0(%rbp)
subpd %xmm4, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movq -0x18(%rbp), %xmm2
punpckldq %xmm5, %xmm2    # xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
subpd %xmm4, %xmm2
movaps %xmm2, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm0, %xmm2
movaps %xmm1, %xmm0
divsd %xmm2, %xmm0
movsd 0x588f(%rip), %xmm2     # 0xd8b0
mulsd %xmm2, %xmm0
movq -0x20(%rbp), %xmm3
punpckldq %xmm5, %xmm3    # xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1]
subpd %xmm4, %xmm3
movaps %xmm3, %xmm4
unpckhpd %xmm3, %xmm3            # xmm3 = xmm3[1,1]
addsd %xmm4, %xmm3
divsd %xmm3, %xmm1
mulsd %xmm2, %xmm1
leaq 0x6f50(%rip), %rsi      # 0xef9c
movb $0x2, %al
callq 0x31d0
movaps -0x1d0(%rbp), %xmm3
movaps -0x1c0(%rbp), %xmm2
movq -0x48(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x20(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x582b(%rip), %xmm1     # 0xd8c8
ucomisd %xmm1, %xmm0
jbe 0x80bd
leaq 0xb05e(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x6d4f(%rip), %rsi      # 0xee03
movb $0x0, %al
callq 0x31d0
jmp 0x8128
movq -0x48(%rbp), %xmm1
movaps 0x5867(%rip), %xmm3     # 0xd930
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
movapd 0x586b(%rip), %xmm2     # 0xd940
subpd %xmm2, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movq -0x20(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm2
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x57f0(%rip), %xmm0     # 0xd8f8
ucomisd %xmm1, %xmm0
jbe 0x8126
leaq 0xaff3(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x6cea(%rip), %rsi      # 0xee09
movb $0x0, %al
callq 0x31d0
jmp 0x8128
leaq 0xafd9(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x6d57(%rip), %rsi      # 0xee90
movb $0x0, %al
callq 0x31d0
cmpq $0x0, -0x68(%rbp)
je 0x8240
cmpq $0x0, -0x60(%rbp)
je 0x8240
leaq 0xafab(%rip), %rax      # 0x13108
movq %rax, -0x1d8(%rbp)
movq (%rax), %rdi
movq -0x60(%rbp), %rdx
movq %rdx, %xmm0
movaps 0x57b9(%rip), %xmm3     # 0xd930
movaps %xmm3, -0x200(%rbp)
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x57b6(%rip), %xmm2     # 0xd940
movaps %xmm2, -0x1f0(%rbp)
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x56ec(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x6dfe(%rip), %rsi      # 0xefcd
movb $0x1, %al
callq 0x31d0
movaps -0x200(%rbp), %xmm3
movaps -0x1f0(%rbp), %xmm2
movq -0x1d8(%rbp), %rax
movq (%rax), %rdi
movq -0x68(%rbp), %rdx
movq %rdx, %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x5682(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x6dbe(%rip), %rsi      # 0xeff7
movb $0x1, %al
callq 0x31d0
leaq 0xaec1(%rip), %rax      # 0x13108
movq (%rax), %rdi
movq -0x70(%rbp), %rdx
movq %rdx, %xmm1
movaps 0x56d6(%rip), %xmm5     # 0xd930
movaps %xmm5, -0x220(%rbp)
punpckldq %xmm5, %xmm1    # xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
movapd 0x56d3(%rip), %xmm4     # 0xd940
movaps %xmm4, -0x210(%rbp)
subpd %xmm4, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movq -0x18(%rbp), %xmm2
punpckldq %xmm5, %xmm2    # xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
subpd %xmm4, %xmm2
movaps %xmm2, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm0, %xmm2
movaps %xmm1, %xmm0
divsd %xmm2, %xmm0
movsd 0x5606(%rip), %xmm2     # 0xd8b0
mulsd %xmm2, %xmm0
movq -0x20(%rbp), %xmm3
punpckldq %xmm5, %xmm3    # xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1]
subpd %xmm4, %xmm3
movaps %xmm3, %xmm4
unpckhpd %xmm3, %xmm3            # xmm3 = xmm3[1,1]
addsd %xmm4, %xmm3
divsd %xmm3, %xmm1
mulsd %xmm2, %xmm1
leaq 0x6d4c(%rip), %rsi      # 0xf021
movb $0x2, %al
callq 0x31d0
movaps -0x220(%rbp), %xmm3
movaps -0x210(%rbp), %xmm2
movq -0x70(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x20(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x55da(%rip), %xmm1     # 0xd900
ucomisd %xmm1, %xmm0
jbe 0x8346
leaq 0xadd5(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x6ac6(%rip), %rsi      # 0xee03
movb $0x0, %al
callq 0x31d0
jmp 0x83b1
movq -0x70(%rbp), %xmm1
movaps 0x55de(%rip), %xmm3     # 0xd930
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
movapd 0x55e2(%rip), %xmm2     # 0xd940
subpd %xmm2, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movq -0x20(%rbp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm2
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x5577(%rip), %xmm0     # 0xd908
ucomisd %xmm1, %xmm0
jbe 0x83af
leaq 0xad6a(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x6a61(%rip), %rsi      # 0xee09
movb $0x0, %al
callq 0x31d0
jmp 0x83b1
leaq 0xad50(%rip), %rax      # 0x13108
movq (%rax), %rdi
leaq 0x6ace(%rip), %rsi      # 0xee90
movb $0x0, %al
callq 0x31d0
cmpq $0x0, -0x80(%rbp)
je 0x84c9
cmpq $0x0, -0x78(%rbp)
je 0x84c9
leaq 0xad22(%rip), %rax      # 0x13108
movq %rax, -0x228(%rbp)
movq (%rax), %rdi
movq -0x78(%rbp), %rdx
movq %rdx, %xmm0
movaps 0x5530(%rip), %xmm3     # 0xd930
movaps %xmm3, -0x250(%rbp)
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x552d(%rip), %xmm2     # 0xd940
movaps %xmm2, -0x240(%rbp)
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x5463(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x6bfa(%rip), %rsi      # 0xf052
movb $0x1, %al
callq 0x31d0
movaps -0x250(%rbp), %xmm3
movaps -0x240(%rbp), %xmm2
movq -0x228(%rbp), %rax
movq (%rax), %rdi
movq -0x80(%rbp), %rdx
movq %rdx, %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x53f9(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x6bbb(%rip), %rsi      # 0xf07d
movb $0x1, %al
callq 0x31d0
leaq 0xac38(%rip), %rax      # 0x13108
movq (%rax), %rdi
movq -0x98(%rbp), %rdx
movq %rdx, %xmm0
movaps 0x544a(%rip), %xmm3     # 0xd930
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x544e(%rip), %xmm2     # 0xd940
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x18(%rbp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x538b(%rip), %xmm1     # 0xd8b0
mulsd %xmm1, %xmm0
leaq 0x6b77(%rip), %rsi      # 0xf0a7
movb $0x1, %al
callq 0x31d0
jmp 0x8539
jmp 0x853b
addq $0x250, %rsp            # imm = 0x250
popq %rbp
retq
nopw %cs:(%rax,%rax)