// File: /workspace/github_c_makefile_star2_O0/LPD-EPFL[P]mctop/src/mctop_topology.c
// Function: mctop_print
void
mctop_print(mctop_t* topo)
{
#define PD_0 "|||||||||"
#define PD_1 "||||||"
#define PD_2 "|||"

  printf(PD_0" MCTOP Topology   / #HW contexts: %u / #Sockets: %u / Socket ref.: %u-xxxx / SMT: %d \n", 
	 topo->n_hwcs, topo->n_sockets, topo->socket_level, topo->is_smt);
  if (topo->cache)
    {
      printf(PD_0" #Cache lvls: %u\n", topo->cache->n_levels - 1);
      for (int i = 1; i < topo->cache->n_levels; i++)
	{
	  printf(PD_1" Level %u / Latency: %-4zu / Size:    OS: %5zu KB     Estimated: %5zu KB\n",
		 i, topo->cache->latencies[i], topo->cache->sizes_OS[i], topo->cache->sizes_estimated[i]);
	}
    }
  if (topo->pow_info)
    {
      mctop_pow_info_t* pi = topo->pow_info;
      printf(PD_0" Power info (Watt)   %-10s %-10s %-10s %-10s %-10s\n", "Cores", "Rest", "Package", "DRAM", "Total");
      printf(PD_1" %-22s "P5DOUBLE"\n", "idle", G5DOUBLE(pi->idle));
      printf(PD_1" %-22s "P5DOUBLE"\n", "1st core cost", G5DOUBLE(pi->first_core));
      printf(PD_1" %-22s "P5DOUBLE"\n", "2nd core cost", G5DOUBLE(pi->second_core));
      printf(PD_1" %-22s "P5DOUBLE"\n", "2nd hw ctx cost", G5DOUBLE(pi->second_hwc_core));
      printf(PD_1" %-22s "P5DOUBLE"\n", "all cores", G5DOUBLE(pi->all_cores));
      printf(PD_1" %-22s "P5DOUBLE"\n", "all hw ctxs", G5DOUBLE(pi->all_hwcs));
    }
  printf(PD_0" #Latency lvls: %u / Latencies: ", topo->n_levels);
  for (int i = 0; i < topo->n_levels; i++)
    {
      printf("%-u ", topo->latencies[i]);
    }
  printf("\n");

  /* hwc level */
  int l = 0;
  printf(PD_1" Level %u / Latency: %-4u / Ref level: %u / Type: %s\n",
	 l, topo->latencies[l], l, mctop_get_type_desc(topo->hwcs[0].type));
  printf(PD_2" Hardware contexts: \n");
  printf(PD_2" ");
  for (int i = 0; i < topo->n_hwcs; i++)
    {
      printf("%-4u ", topo->hwcs[i].id);
      if ((i != (topo->n_hwcs - 1)) && ((i + 1) & 15) == 0)
	{
	  printf("\n"PD_2" ");
	}
    }
  printf("\n");

  for (int l = 1; l <= topo->socket_level; l++)
    {
      hwc_gs_t* gs = mctop_get_first_gs_at_lvl(topo, l);
      printf(PD_1" Level %u / Latency: %-4u / Ref level: %u / Type: %s\n",
	     l, topo->latencies[l], l - 1, mctop_get_type_desc(gs->type));
      printf(PD_2" ID       Members\n");
      while (gs != NULL)
	{
	  printf(PD_2" " MCTOP_ID_PRINTER "   ", MCTOP_ID_PRINT(gs->id));
	  for (int i = 0; i < gs->n_children; i++)
	    {
	      printf(MCTOP_ID_PRINTER "  ", MCTOP_ID_PRINT(gs->children[i]->id));
	      if ((i != (gs->n_children - 1)) && ((i + 1) % 10) == 0)
		{
		  printf("\n"PD_2"          ");
		}
	    }
	  printf("\n");
	  gs = gs->next;
	}

      /* mem. latencies */
      if (topo->has_mem && l == topo->socket_level)
	{
	  printf(PD_2"          Memory latencies (cycles)\n");
	  hwc_gs_t* gs = mctop_get_first_gs_at_lvl(topo, l);
	  while (gs != NULL)
	    {
	      printf(PD_2" " MCTOP_ID_PRINTER "   ", MCTOP_ID_PRINT(gs->id));
	      for (int n = 0; n < gs->n_nodes; n++)
		{
		  printf("%6u%s ", gs->mem_latencies[n], (gs->local_node == n) ? "*" : " ");
		}
	      printf("\n");
	      gs = gs->next;
	    }
	}

      /* mem. bandwidht */
      if (topo->has_mem == BANDWIDTH && l == topo->socket_level)
	{
	  printf(PD_2"          Memory bandwidths (Read / Write) - max (GB/s)\n");
	  hwc_gs_t* gs = mctop_get_first_gs_at_lvl(topo, l);
	  while (gs != NULL)
	    {
	      printf(PD_2" " MCTOP_ID_PRINTER "   ", MCTOP_ID_PRINT(gs->id));
	      for (int n = 0; n < gs->n_nodes; n++)
		{
		  printf("%6.2f /%6.2f%s ",
			 gs->mem_bandwidths_r[n], gs->mem_bandwidths_w[n], (gs->local_node == n) ? "*" : " ");
		}
	      printf("\n");
	      gs = gs->next;
	    }

	  printf(PD_2"          Memory bandwidths (Read / Write) - single thread (GB/s)\n");
	  gs = mctop_get_first_gs_at_lvl(topo, l);
	  while (gs != NULL)
	    {
	      printf(PD_2" " MCTOP_ID_PRINTER "   ", MCTOP_ID_PRINT(gs->id));
	      for (int n = 0; n < gs->n_nodes; n++)
		{
		  printf("%6.2f /%6.2f%s ",
			 gs->mem_bandwidths1_r[n], gs->mem_bandwidths1_w[n], (gs->local_node == n) ? "*" : " ");
		}
	      printf("\n");
	      gs = gs->next;
	    }
	}
    }

  /* siblings */
  for (int l = topo->socket_level + 1; l < topo->n_levels; l++)
    {
      printf(PD_1" Level %u / Latency: %-4u / Ref level: %u / Type: %s\n",
	     l, topo->latencies[l], topo->socket_level, mctop_get_type_desc(CROSS_SOCKET));
      printf(PD_2" ID       Members\n");
      sibling_t* sibling = mctop_get_first_sibling_lvl(topo, l);
      while (sibling != NULL)
	{
	  printf(PD_2" "MCTOP_ID_PRINTER"   "MCTOP_ID_PRINTER"  "MCTOP_ID_PRINTER"\n", 
		 MCTOP_ID_PRINT(sibling->id), MCTOP_ID_PRINT(sibling->left->id), MCTOP_ID_PRINT(sibling->right->id));
	  sibling = sibling->next;
	}
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x10(%rax), %esi
movq -0x8(%rbp), %rax
movl 0x18(%rax), %edx
movq -0x8(%rbp), %rax
movl 0x14(%rax), %ecx
movq -0x8(%rbp), %rax
movl 0x28(%rax), %r8d
leaq 0x6850(%rip), %rdi      # 0x10d43
movb $0x0, %al
callq 0x20d0
movq -0x8(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0xa594
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movl (%rax), %esi
subl $0x1, %esi
leaq 0x6886(%rip), %rdi      # 0x10da3
movb $0x0, %al
callq 0x20d0
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
movq 0x58(%rcx), %rcx
cmpl (%rcx), %eax
jae 0xa592
movl -0xc(%rbp), %esi
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movq 0x8(%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movq 0x10(%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movq 0x18(%rax), %rax
movslq -0xc(%rbp), %rdi
movq (%rax,%rdi,8), %r8
leaq 0x683e(%rip), %rdi      # 0x10dbe
movb $0x0, %al
callq 0x20d0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0xa52b
jmp 0xa594
movq -0x8(%rbp), %rax
cmpq $0x0, 0x80(%rax)
je 0xa7a1
movq -0x8(%rbp), %rax
movq 0x80(%rax), %rax
movq %rax, -0x18(%rbp)
leaq 0x6852(%rip), %rdi      # 0x10e0e
leaq 0x6888(%rip), %rsi      # 0x10e4b
leaq 0x6887(%rip), %rdx      # 0x10e51
leaq 0x6885(%rip), %rcx      # 0x10e56
leaq 0x6886(%rip), %r8       # 0x10e5e
leaq 0x6884(%rip), %r9       # 0x10e63
movb $0x0, %al
callq 0x20d0
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq -0x18(%rbp), %rax
movsd 0x8(%rax), %xmm1
movq -0x18(%rbp), %rax
movsd 0x10(%rax), %xmm2
movq -0x18(%rbp), %rax
movsd 0x18(%rax), %xmm3
movq -0x18(%rbp), %rax
movsd 0x20(%rax), %xmm4
leaq 0x6850(%rip), %rdi      # 0x10e69
leaq 0x6880(%rip), %rsi      # 0x10ea0
movb $0x5, %al
callq 0x20d0
movq -0x18(%rbp), %rax
movsd 0x30(%rax), %xmm0
movq -0x18(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x18(%rbp), %rax
movsd 0x40(%rax), %xmm2
movq -0x18(%rbp), %rax
movsd 0x48(%rax), %xmm3
movq -0x18(%rbp), %rax
movsd 0x50(%rax), %xmm4
leaq 0x680e(%rip), %rdi      # 0x10e69
leaq 0x6843(%rip), %rsi      # 0x10ea5
movb $0x5, %al
callq 0x20d0
movq -0x18(%rbp), %rax
movsd 0x60(%rax), %xmm0
movq -0x18(%rbp), %rax
movsd 0x68(%rax), %xmm1
movq -0x18(%rbp), %rax
movsd 0x70(%rax), %xmm2
movq -0x18(%rbp), %rax
movsd 0x78(%rax), %xmm3
movq -0x18(%rbp), %rax
movsd 0x80(%rax), %xmm4
leaq 0x67c9(%rip), %rdi      # 0x10e69
leaq 0x680c(%rip), %rsi      # 0x10eb3
movb $0x5, %al
callq 0x20d0
movq -0x18(%rbp), %rax
movsd 0x90(%rax), %xmm0
movq -0x18(%rbp), %rax
movsd 0x98(%rax), %xmm1
movq -0x18(%rbp), %rax
movsd 0xa0(%rax), %xmm2
movq -0x18(%rbp), %rax
movsd 0xa8(%rax), %xmm3
movq -0x18(%rbp), %rax
movsd 0xb0(%rax), %xmm4
leaq 0x6778(%rip), %rdi      # 0x10e69
leaq 0x67c9(%rip), %rsi      # 0x10ec1
movb $0x5, %al
callq 0x20d0
movq -0x18(%rbp), %rax
movsd 0xc0(%rax), %xmm0
movq -0x18(%rbp), %rax
movsd 0xc8(%rax), %xmm1
movq -0x18(%rbp), %rax
movsd 0xd0(%rax), %xmm2
movq -0x18(%rbp), %rax
movsd 0xd8(%rax), %xmm3
movq -0x18(%rbp), %rax
movsd 0xe0(%rax), %xmm4
leaq 0x6727(%rip), %rdi      # 0x10e69
leaq 0x6788(%rip), %rsi      # 0x10ed1
movb $0x5, %al
callq 0x20d0
movq -0x18(%rbp), %rax
movsd 0xf0(%rax), %xmm0
movq -0x18(%rbp), %rax
movsd 0xf8(%rax), %xmm1
movq -0x18(%rbp), %rax
movsd 0x100(%rax), %xmm2
movq -0x18(%rbp), %rax
movsd 0x108(%rax), %xmm3
movq -0x18(%rbp), %rax
movsd 0x110(%rax), %xmm4
leaq 0x66d6(%rip), %rdi      # 0x10e69
leaq 0x6741(%rip), %rsi      # 0x10edb
movb $0x5, %al
callq 0x20d0
movq -0x8(%rbp), %rax
movl (%rax), %esi
leaq 0x6739(%rip), %rdi      # 0x10ee7
movb $0x0, %al
callq 0x20d0
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jae 0xa7ef
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x1c(%rbp), %rcx
movl (%rax,%rcx,4), %esi
leaq 0x6734(%rip), %rdi      # 0x10f11
movb $0x0, %al
callq 0x20d0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0xa7bc
leaq 0x4c75(%rip), %rdi      # 0xf46b
movb $0x0, %al
callq 0x20d0
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0x74(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x20(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x70(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0x6c(%rbp)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movl 0x8(%rax), %edi
callq 0xaed0
movl -0x74(%rbp), %esi
movl -0x70(%rbp), %edx
movl -0x6c(%rbp), %ecx
movq %rax, %r8
leaq 0x66d1(%rip), %rdi      # 0x10f16
movb $0x0, %al
callq 0x20d0
leaq 0x66ff(%rip), %rdi      # 0x10f52
movb $0x0, %al
callq 0x20d0
leaq 0x6711(%rip), %rdi      # 0x10f72
movb $0x0, %al
callq 0x20d0
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0xa8d8
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movslq -0x24(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %esi
leaq 0x66d4(%rip), %rdi      # 0x10f6b
movb $0x0, %al
callq 0x20d0
movl -0x24(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0xa8cb
movl -0x24(%rbp), %eax
addl $0x1, %eax
andl $0xf, %eax
cmpl $0x0, %eax
jne 0xa8cb
leaq 0x66ad(%rip), %rdi      # 0x10f71
movb $0x0, %al
callq 0x20d0
jmp 0xa8cd
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0xa86f
leaq 0x4b8c(%rip), %rdi      # 0xf46b
movb $0x0, %al
callq 0x20d0
movl $0x1, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x14(%rcx), %eax
ja 0xad5c
movq -0x8(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0xbb10
movq %rax, -0x30(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x28(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x7c(%rbp)
movl -0x28(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x78(%rbp)
movq -0x30(%rbp), %rax
movl 0x8(%rax), %edi
callq 0xaed0
movl -0x80(%rbp), %esi
movl -0x7c(%rbp), %edx
movl -0x78(%rbp), %ecx
movq %rax, %r8
leaq 0x65c9(%rip), %rdi      # 0x10f16
movb $0x0, %al
callq 0x20d0
leaq 0x661c(%rip), %rdi      # 0x10f77
movb $0x0, %al
callq 0x20d0
cmpq $0x0, -0x30(%rbp)
je 0xaa61
movq -0x30(%rbp), %rax
movl (%rax), %edi
callq 0xaef0
movl %eax, -0x84(%rbp)
movq -0x30(%rbp), %rax
movl (%rax), %edi
callq 0xaf10
movl -0x84(%rbp), %esi
movl %eax, %edx
leaq 0x65f5(%rip), %rdi      # 0x10f8d
movb $0x0, %al
callq 0x20d0
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x30(%rbp), %rcx
cmpl 0x3c(%rcx), %eax
jae 0xaa42
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl (%rax), %edi
callq 0xaef0
movl %eax, -0x88(%rbp)
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl (%rax), %edi
callq 0xaf10
movl -0x88(%rbp), %esi
movl %eax, %edx
leaq 0x65a3(%rip), %rdi      # 0x10f9c
movb $0x0, %al
callq 0x20d0
movl -0x34(%rbp), %eax
movq -0x30(%rbp), %rcx
movl 0x3c(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0xaa32
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl $0xa, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0xaa32
leaq 0x657b(%rip), %rdi      # 0x10fa6
movb $0x0, %al
callq 0x20d0
jmp 0xaa34
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0xa9a6
leaq 0x4a22(%rip), %rdi      # 0xf46b
movb $0x0, %al
callq 0x20d0
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0xa962
movq -0x8(%rbp), %rax
cmpl $0x0, 0x30(%rax)
je 0xab54
movl -0x28(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jne 0xab54
leaq 0x652f(%rip), %rdi      # 0x10fb5
movb $0x0, %al
callq 0x20d0
movq -0x8(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0xbb10
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0xab52
movq -0x40(%rbp), %rax
movl (%rax), %edi
callq 0xaef0
movl %eax, -0x8c(%rbp)
movq -0x40(%rbp), %rax
movl (%rax), %edi
callq 0xaf10
movl -0x8c(%rbp), %esi
movl %eax, %edx
leaq 0x64ba(%rip), %rdi      # 0x10f8d
movb $0x0, %al
callq 0x20d0
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
movq -0x40(%rbp), %rcx
cmpl 0x70(%rcx), %eax
jae 0xab33
movq -0x40(%rbp), %rax
movq 0x78(%rax), %rax
movslq -0x44(%rbp), %rcx
movl (%rax,%rcx,4), %esi
movq -0x40(%rbp), %rax
movl 0x6c(%rax), %ecx
movl -0x44(%rbp), %edi
leaq 0x64a6(%rip), %rdx      # 0x10fb3
leaq 0x64d0(%rip), %rax      # 0x10fe4
cmpl %edi, %ecx
cmoveq %rax, %rdx
leaq 0x64bc(%rip), %rdi      # 0x10fdd
movb $0x0, %al
callq 0x20d0
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0xaae1
leaq 0x4931(%rip), %rdi      # 0xf46b
movb $0x0, %al
callq 0x20d0
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0xaa9d
jmp 0xab54
movq -0x8(%rbp), %rax
cmpl $0x2, 0x30(%rax)
jne 0xad4c
movl -0x28(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jne 0xad4c
leaq 0x646d(%rip), %rdi      # 0x10fe6
movb $0x0, %al
callq 0x20d0
movq -0x8(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0xbb10
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0xac5e
movq -0x50(%rbp), %rax
movl (%rax), %edi
callq 0xaef0
movl %eax, -0x90(%rbp)
movq -0x50(%rbp), %rax
movl (%rax), %edi
callq 0xaf10
movl -0x90(%rbp), %esi
movl %eax, %edx
leaq 0x63c7(%rip), %rdi      # 0x10f8d
movb $0x0, %al
callq 0x20d0
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
movq -0x50(%rbp), %rcx
cmpl 0x70(%rcx), %eax
jae 0xac3f
movq -0x50(%rbp), %rax
movq 0x80(%rax), %rax
movslq -0x54(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x50(%rbp), %rax
movq 0x90(%rax), %rax
movslq -0x54(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq -0x50(%rbp), %rax
movl 0x6c(%rax), %ecx
movl -0x54(%rbp), %edx
leaq 0x639a(%rip), %rsi      # 0x10fb3
leaq 0x63c4(%rip), %rax      # 0x10fe4
cmpl %edx, %ecx
cmoveq %rax, %rsi
leaq 0x63f5(%rip), %rdi      # 0x11022
movb $0x2, %al
callq 0x20d0
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0xabd4
leaq 0x4825(%rip), %rdi      # 0xf46b
movb $0x0, %al
callq 0x20d0
movq -0x50(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0xab90
leaq 0x63cd(%rip), %rdi      # 0x11032
movb $0x0, %al
callq 0x20d0
movq -0x8(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0xbb10
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0xad4a
movq -0x50(%rbp), %rax
movl (%rax), %edi
callq 0xaef0
movl %eax, -0x94(%rbp)
movq -0x50(%rbp), %rax
movl (%rax), %edi
callq 0xaf10
movl -0x94(%rbp), %esi
movl %eax, %edx
leaq 0x62db(%rip), %rdi      # 0x10f8d
movb $0x0, %al
callq 0x20d0
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
movq -0x50(%rbp), %rcx
cmpl 0x70(%rcx), %eax
jae 0xad2b
movq -0x50(%rbp), %rax
movq 0x88(%rax), %rax
movslq -0x58(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x50(%rbp), %rax
movq 0x98(%rax), %rax
movslq -0x58(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq -0x50(%rbp), %rax
movl 0x6c(%rax), %ecx
movl -0x58(%rbp), %edx
leaq 0x62ae(%rip), %rsi      # 0x10fb3
leaq 0x62d8(%rip), %rax      # 0x10fe4
cmpl %edx, %ecx
cmoveq %rax, %rsi
leaq 0x6309(%rip), %rdi      # 0x11022
movb $0x2, %al
callq 0x20d0
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0xacc0
leaq 0x4739(%rip), %rdi      # 0xf46b
movb $0x0, %al
callq 0x20d0
movq -0x50(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0xac7c
jmp 0xad4c
jmp 0xad4e
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0xa8ed
movq -0x8(%rbp), %rax
movl 0x14(%rax), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jae 0xaebb
movl -0x5c(%rbp), %eax
movl %eax, -0xa0(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x5c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x9c(%rbp)
movq -0x8(%rbp), %rax
movl 0x14(%rax), %eax
movl %eax, -0x98(%rbp)
movl $0x4, %edi
callq 0xaed0
movl -0xa0(%rbp), %esi
movl -0x9c(%rbp), %edx
movl -0x98(%rbp), %ecx
movq %rax, %r8
leaq 0x614d(%rip), %rdi      # 0x10f16
movb $0x0, %al
callq 0x20d0
leaq 0x61a0(%rip), %rdi      # 0x10f77
movb $0x0, %al
callq 0x20d0
movq -0x8(%rbp), %rdi
movl -0x5c(%rbp), %esi
callq 0xbb70
movq %rax, -0x68(%rbp)
cmpq $0x0, -0x68(%rbp)
je 0xaeab
movq -0x68(%rbp), %rax
movl (%rax), %edi
callq 0xaef0
movl %eax, -0xb4(%rbp)
movq -0x68(%rbp), %rax
movl (%rax), %edi
callq 0xaf10
movl %eax, -0xb0(%rbp)
movq -0x68(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
callq 0xaef0
movl %eax, -0xac(%rbp)
movq -0x68(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
callq 0xaf10
movl %eax, -0xa8(%rbp)
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
callq 0xaef0
movl %eax, -0xa4(%rbp)
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
callq 0xaf10
movl -0xb4(%rbp), %esi
movl -0xb0(%rbp), %edx
movl -0xac(%rbp), %ecx
movl -0xa8(%rbp), %r8d
movl -0xa4(%rbp), %r9d
leaq 0x61e8(%rip), %rdi      # 0x11078
movl %eax, (%rsp)
movb $0x0, %al
callq 0x20d0
movq -0x68(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0xadee
jmp 0xaead
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xad69
addq $0xc0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)