#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ hwloc_topology_t;

/* Variables and functions */
int /*<<< orphan*/ HWLOC_OBJ_CORE;
int /*<<< orphan*/ assert(int);
unsigned int hwloc_get_nbobjs_by_depth(int /*<<< orphan*/, int);
int /*<<< orphan*/ hwloc_topology_destroy(int /*<<< orphan*/);
unsigned int hwloc_topology_get_depth(int /*<<< orphan*/);
int /*<<< orphan*/ hwloc_topology_init(int /*<<< orphan*/ *);
int /*<<< orphan*/ hwloc_topology_load(int /*<<< orphan*/);
int /*<<< orphan*/ hwloc_topology_set_distance_matrix(int /*<<< orphan*/,
                                                      int /*<<< orphan*/, int,
                                                      unsigned int *, float *);
int /*<<< orphan*/ hwloc_topology_set_synthetic(int /*<<< orphan*/, char *);
int /*<<< orphan*/ putenv(char *);
int main(void) {
  hwloc_topology_t topology;
  unsigned indexes[16];
  float distances[16 * 16];
  unsigned i, j;
  unsigned depth;
  unsigned width;
  hwloc_topology_init(&topology);
  hwloc_topology_set_synthetic(topology, "node:2 core:8 pu:1");
  hwloc_topology_load(topology);
  depth = hwloc_topology_get_depth(topology);
  assert(depth == 4);
  width = hwloc_get_nbobjs_by_depth(topology, 0);
  assert(width == 1);
  width = hwloc_get_nbobjs_by_depth(topology, 1);
  assert(width == 2);
  width = hwloc_get_nbobjs_by_depth(topology, 2);
  assert(width == 16);
  width = hwloc_get_nbobjs_by_depth(topology, 3);
  assert(width == 16);
  for (i = 0; i < 16; i++) {
    indexes[i] = i;
    for (j = 0; j < 16; j++)
      if (i == j)
        distances[i + 16 * j] = distances[j + 16 * i] = 3;
      else if (i / 2 == j / 2)
        distances[i + 16 * j] = distances[j + 16 * i] = 5;
      else if (i / 4 == j / 4)
        distances[i + 16 * j] = distances[j + 16 * i] = 7;
      else
        distances[i + 16 * j] = distances[j + 16 * i] = 9;
  }
  hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_CORE, 16, indexes,
                                     distances);
  hwloc_topology_load(topology);
  depth = hwloc_topology_get_depth(topology);
  assert(depth == 6);
  width = hwloc_get_nbobjs_by_depth(topology, 0);
  assert(width == 1);
  width = hwloc_get_nbobjs_by_depth(topology, 1);
  assert(width == 2);
  width = hwloc_get_nbobjs_by_depth(topology, 2);
  assert(width == 4);
  width = hwloc_get_nbobjs_by_depth(topology, 3);
  assert(width == 8);
  width = hwloc_get_nbobjs_by_depth(topology, 4);
  assert(width == 16);
  hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_CORE, 0, NULL, NULL);
  hwloc_topology_load(topology);
  depth = hwloc_topology_get_depth(topology);
  assert(depth == 4);
  width = hwloc_get_nbobjs_by_depth(topology, 0);
  assert(width == 1);
  width = hwloc_get_nbobjs_by_depth(topology, 1);
  assert(width == 2);
  width = hwloc_get_nbobjs_by_depth(topology, 2);
  assert(width == 16);
  width = hwloc_get_nbobjs_by_depth(topology, 3);
  assert(width == 16);
  hwloc_topology_set_synthetic(topology, "node:2 core:4 pu:4");
  hwloc_topology_load(topology);
  depth = hwloc_topology_get_depth(topology);
  assert(depth == 4);
  width = hwloc_get_nbobjs_by_depth(topology, 0);
  assert(width == 1);
  width = hwloc_get_nbobjs_by_depth(topology, 1);
  assert(width == 2);
  width = hwloc_get_nbobjs_by_depth(topology, 2);
  assert(width == 8);
  width = hwloc_get_nbobjs_by_depth(topology, 3);
  assert(width == 32);
  putenv("HWLOC_Core_DISTANCES=0,1,2,3,4,5,6,7:4*2");
  hwloc_topology_load(topology);
  depth = hwloc_topology_get_depth(topology);
  assert(depth == 5);
  width = hwloc_get_nbobjs_by_depth(topology, 0);
  assert(width == 1);
  width = hwloc_get_nbobjs_by_depth(topology, 1);
  assert(width == 2);
  width = hwloc_get_nbobjs_by_depth(topology, 2);
  assert(width == 4);
  width = hwloc_get_nbobjs_by_depth(topology, 3);
  assert(width == 8);
  width = hwloc_get_nbobjs_by_depth(topology, 4);
  assert(width == 32);
  putenv("HWLOC_PU_DISTANCES=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,"
         "20,21,22,23,24,25,26,27,28,29,30,31:16*2");
  hwloc_topology_load(topology);
  depth = hwloc_topology_get_depth(topology);
  assert(depth == 6);
  width = hwloc_get_nbobjs_by_depth(topology, 0);
  assert(width == 1);
  width = hwloc_get_nbobjs_by_depth(topology, 1);
  assert(width == 2);
  width = hwloc_get_nbobjs_by_depth(topology, 2);
  assert(width == 4);
  width = hwloc_get_nbobjs_by_depth(topology, 3);
  assert(width == 8);
  width = hwloc_get_nbobjs_by_depth(topology, 4);
  assert(width == 16);
  width = hwloc_get_nbobjs_by_depth(topology, 5);
  assert(width == 32);
  putenv("HWLOC_Core_DISTANCES=0,1,2,3,4,5,6,7:2*4");
  hwloc_topology_load(topology);
  depth = hwloc_topology_get_depth(topology);
  assert(depth == 5);
  width = hwloc_get_nbobjs_by_depth(topology, 0);
  assert(width == 1);
  width = hwloc_get_nbobjs_by_depth(topology, 1);
  assert(width == 2);
  width = hwloc_get_nbobjs_by_depth(topology, 2);
  assert(width == 8);
  width = hwloc_get_nbobjs_by_depth(topology, 3);
  assert(width == 16);
  width = hwloc_get_nbobjs_by_depth(topology, 4);
  assert(width == 32);
  hwloc_topology_destroy(topology);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x460,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x8(%rbp),%rdi
call   1030 <hwloc_topology_init@plt>
mov    -0x8(%rbp),%edi
lea    0xe5b(%rip),%rsi
call   10a0 <hwloc_topology_set_synthetic@plt>
mov    -0x8(%rbp),%edi
call   1040 <hwloc_topology_load@plt>
mov    -0x8(%rbp),%edi
call   1050 <hwloc_topology_get_depth@plt>
mov    %eax,-0x45c(%rbp)
cmpl   $0x4,-0x45c(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x1,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x2,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x10,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x10,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movl   $0x0,-0x454(%rbp)
cmpl   $0x10,-0x454(%rbp)
jae    146c <main+0x2dc>
mov    -0x454(%rbp),%ecx
mov    -0x454(%rbp),%eax
mov    %ecx,-0x50(%rbp,%rax,4)
movl   $0x0,-0x458(%rbp)
cmpl   $0x10,-0x458(%rbp)
jae    1453 <main+0x2c3>
mov    -0x454(%rbp),%eax
cmp    -0x458(%rbp),%eax
jne    131a <main+0x18a>
mov    -0x458(%rbp),%eax
mov    -0x454(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
mov    %eax,%eax
movss  0xd24(%rip),%xmm0
movss  %xmm0,-0x450(%rbp,%rax,4)
ff ff
mov    -0x454(%rbp),%eax
mov    -0x458(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
mov    %eax,%eax
movss  0xd00(%rip),%xmm0
movss  %xmm0,-0x450(%rbp,%rax,4)
ff ff
jmp    143a <main+0x2aa>
mov    -0x454(%rbp),%eax
shr    $0x1,%eax
mov    -0x458(%rbp),%ecx
shr    $0x1,%ecx
cmp    %ecx,%eax
jne    1381 <main+0x1f1>
mov    -0x458(%rbp),%eax
mov    -0x454(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
mov    %eax,%eax
movss  0xcb9(%rip),%xmm0
movss  %xmm0,-0x450(%rbp,%rax,4)
ff ff
mov    -0x454(%rbp),%eax
mov    -0x458(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
mov    %eax,%eax
movss  0xc95(%rip),%xmm0
movss  %xmm0,-0x450(%rbp,%rax,4)
ff ff
jmp    1435 <main+0x2a5>
mov    -0x454(%rbp),%eax
shr    $0x2,%eax
mov    -0x458(%rbp),%ecx
shr    $0x2,%ecx
cmp    %ecx,%eax
jne    13e8 <main+0x258>
mov    -0x458(%rbp),%eax
mov    -0x454(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
mov    %eax,%eax
movss  0xc4e(%rip),%xmm0
movss  %xmm0,-0x450(%rbp,%rax,4)
ff ff
mov    -0x454(%rbp),%eax
mov    -0x458(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
mov    %eax,%eax
movss  0xc2a(%rip),%xmm0
movss  %xmm0,-0x450(%rbp,%rax,4)
ff ff
jmp    1430 <main+0x2a0>
mov    -0x458(%rbp),%eax
mov    -0x454(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
mov    %eax,%eax
movss  0xbfd(%rip),%xmm0
movss  %xmm0,-0x450(%rbp,%rax,4)
ff ff
mov    -0x454(%rbp),%eax
mov    -0x458(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
mov    %eax,%eax
movss  0xbd9(%rip),%xmm0
movss  %xmm0,-0x450(%rbp,%rax,4)
ff ff
jmp    1435 <main+0x2a5>
jmp    143a <main+0x2aa>
jmp    143f <main+0x2af>
mov    -0x458(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x458(%rbp)
jmp    12ae <main+0x11e>
jmp    1458 <main+0x2c8>
mov    -0x454(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x454(%rbp)
jmp    1287 <main+0xf7>
mov    -0x8(%rbp),%edi
mov    0x2b6a(%rip),%rax
mov    (%rax),%esi
lea    -0x50(%rbp),%rcx
lea    -0x450(%rbp),%r8
mov    $0x10,%edx
call   1060 <hwloc_topology_set_distance_matrix@plt>
mov    -0x8(%rbp),%edi
call   1040 <hwloc_topology_load@plt>
mov    -0x8(%rbp),%edi
call   1050 <hwloc_topology_get_depth@plt>
mov    %eax,-0x45c(%rbp)
cmpl   $0x6,-0x45c(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x1,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x2,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x4,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x8,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x4,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x10,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    0x2a5f(%rip),%rax
mov    (%rax),%esi
xor    %edx,%edx
xor    %eax,%eax
mov    %eax,%r8d
mov    %r8,%rcx
call   1060 <hwloc_topology_set_distance_matrix@plt>
mov    -0x8(%rbp),%edi
call   1040 <hwloc_topology_load@plt>
mov    -0x8(%rbp),%edi
call   1050 <hwloc_topology_get_depth@plt>
mov    %eax,-0x45c(%rbp)
cmpl   $0x4,-0x45c(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x1,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x2,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x10,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x10,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
lea    0x9c4(%rip),%rsi
call   10a0 <hwloc_topology_set_synthetic@plt>
mov    -0x8(%rbp),%edi
call   1040 <hwloc_topology_load@plt>
mov    -0x8(%rbp),%edi
call   1050 <hwloc_topology_get_depth@plt>
mov    %eax,-0x45c(%rbp)
cmpl   $0x4,-0x45c(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x1,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x2,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x8,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x20,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
lea    0x908(%rip),%rdi
call   1070 <putenv@plt>
mov    -0x8(%rbp),%edi
call   1040 <hwloc_topology_load@plt>
mov    -0x8(%rbp),%edi
call   1050 <hwloc_topology_get_depth@plt>
mov    %eax,-0x45c(%rbp)
cmpl   $0x5,-0x45c(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x1,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x2,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x4,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x8,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x4,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x20,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
lea    0x83b(%rip),%rdi
call   1070 <putenv@plt>
mov    -0x8(%rbp),%edi
call   1040 <hwloc_topology_load@plt>
mov    -0x8(%rbp),%edi
call   1050 <hwloc_topology_get_depth@plt>
mov    %eax,-0x45c(%rbp)
cmpl   $0x6,-0x45c(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x1,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x2,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x4,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x8,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x4,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x10,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x5,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x20,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
lea    0x78c(%rip),%rdi
call   1070 <putenv@plt>
mov    -0x8(%rbp),%edi
call   1040 <hwloc_topology_load@plt>
mov    -0x8(%rbp),%edi
call   1050 <hwloc_topology_get_depth@plt>
mov    %eax,-0x45c(%rbp)
cmpl   $0x5,-0x45c(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x1,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x2,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x8,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x10,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
mov    $0x4,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
mov    %eax,-0x460(%rbp)
cmpl   $0x20,-0x460(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    -0x8(%rbp),%edi
call   10b0 <hwloc_topology_destroy@plt>
xor    %eax,%eax
add    $0x460,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x450,%rsp
lea    0xc(%rsp),%rdi
call   1030 <hwloc_topology_init@plt>
mov    0xc(%rsp),%edi
lea    0xe53(%rip),%rsi
call   10a0 <hwloc_topology_set_synthetic@plt>
mov    0xc(%rsp),%edi
call   1040 <hwloc_topology_load@plt>
mov    0xc(%rsp),%edi
call   1050 <hwloc_topology_get_depth@plt>
xor    %edi,%edi
cmp    $0x4,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
xor    %ebx,%ebx
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x10,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x10,%eax
sete   %dil
call   1080 <assert@plt>
lea    0x50(%rsp),%rax
mov    %rax,%r8
jmp    1266 <main+0xd6>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rbx
add    $0x4,%r8
add    $0x40,%rax
cmp    $0x10,%rbx
je     12e3 <main+0x153>
mov    %ebx,0x10(%rsp,%rbx,4)
mov    %rbx,%rdx
shl    $0x4,%rdx
add    %rbx,%rdx
mov    %r8,%rsi
xor    %edi,%edi
jmp    1296 <main+0x106>
nopl   0x0(%rax,%rax,1)
movl   $0x40400000,0x50(%rsp,%rdx,4)
40
add    $0x1,%rdi
add    $0x40,%rsi
cmp    $0x10,%rdi
je     1250 <main+0xc0>
cmp    %rdi,%rbx
je     1280 <main+0xf0>
mov    %edi,%ecx
xor    %ebx,%ecx
cmp    $0x1,%ecx
ja     12c0 <main+0x130>
movl   $0x40a00000,(%rax,%rdi,4)
movl   $0x40a00000,(%rsi)
jmp    1288 <main+0xf8>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    $0x3,%ecx
ja     12d4 <main+0x144>
movl   $0x40e00000,(%rax,%rdi,4)
movl   $0x40e00000,(%rsi)
jmp    1288 <main+0xf8>
movl   $0x41100000,(%rax,%rdi,4)
movl   $0x41100000,(%rsi)
jmp    1288 <main+0xf8>
mov    0xc(%rsp),%edi
mov    0x2cf2(%rip),%rbx
mov    (%rbx),%esi
lea    0x10(%rsp),%rcx
lea    0x50(%rsp),%r8
mov    $0x10,%edx
call   1060 <hwloc_topology_set_distance_matrix@plt>
mov    0xc(%rsp),%edi
call   1040 <hwloc_topology_load@plt>
mov    0xc(%rsp),%edi
call   1050 <hwloc_topology_get_depth@plt>
xor    %edi,%edi
cmp    $0x6,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x4,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x8,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x4,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x10,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    (%rbx),%esi
xor    %edx,%edx
xor    %ecx,%ecx
xor    %r8d,%r8d
call   1060 <hwloc_topology_set_distance_matrix@plt>
mov    0xc(%rsp),%edi
call   1040 <hwloc_topology_load@plt>
mov    0xc(%rsp),%edi
call   1050 <hwloc_topology_get_depth@plt>
xor    %edi,%edi
cmp    $0x4,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x10,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x10,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
lea    0xbbc(%rip),%rsi
call   10a0 <hwloc_topology_set_synthetic@plt>
mov    0xc(%rsp),%edi
call   1040 <hwloc_topology_load@plt>
mov    0xc(%rsp),%edi
call   1050 <hwloc_topology_get_depth@plt>
xor    %edi,%edi
cmp    $0x4,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x8,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x20,%eax
sete   %dil
call   1080 <assert@plt>
lea    0xb36(%rip),%rdi
call   1070 <putenv@plt>
mov    0xc(%rsp),%edi
call   1040 <hwloc_topology_load@plt>
mov    0xc(%rsp),%edi
call   1050 <hwloc_topology_get_depth@plt>
xor    %edi,%edi
cmp    $0x5,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x4,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x8,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x4,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x20,%eax
sete   %dil
call   1080 <assert@plt>
lea    0xaaa(%rip),%rdi
call   1070 <putenv@plt>
mov    0xc(%rsp),%edi
call   1040 <hwloc_topology_load@plt>
mov    0xc(%rsp),%edi
call   1050 <hwloc_topology_get_depth@plt>
xor    %edi,%edi
cmp    $0x6,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x4,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x8,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x4,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x10,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x5,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x20,%eax
sete   %dil
call   1080 <assert@plt>
lea    0xa47(%rip),%rdi
call   1070 <putenv@plt>
mov    0xc(%rsp),%edi
call   1040 <hwloc_topology_load@plt>
mov    0xc(%rsp),%edi
call   1050 <hwloc_topology_get_depth@plt>
xor    %edi,%edi
cmp    $0x5,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
xor    %esi,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x1,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x2,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x8,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x3,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x10,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
mov    $0x4,%esi
call   1090 <hwloc_get_nbobjs_by_depth@plt>
xor    %edi,%edi
cmp    $0x20,%eax
sete   %dil
call   1080 <assert@plt>
mov    0xc(%rsp),%edi
call   10b0 <hwloc_topology_destroy@plt>
xor    %eax,%eax
add    $0x450,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [19 x i8] c"node:2 core:8 pu:1\00"
@HWLOC_OBJ_CORE = global i32 0
@.str.1 = [19 x i8] c"node:2 core:4 pu:4\00"
@.str.2 = [41 x i8] c"HWLOC_Core_DISTANCES=0,1,2,3,4,5,6,7:4*2\00"
@.str.3 = [110 x i8] c"HWLOC_PU_DISTANCES=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31:16*2\00"
@.str.4 = [41 x i8] c"HWLOC_Core_DISTANCES=0,1,2,3,4,5,6,7:2*4\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca [16 x i32]
%4 = alloca [256 x float]
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
store i32 0, i32* %1
%9 = call i32 @hwloc_topology_init(i32* %2)
%10 = load i32, i32* %2
%11 = call i32 @hwloc_topology_set_synthetic(i32 %10, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0))
%12 = load i32, i32* %2
%13 = call i32 @hwloc_topology_load(i32 %12)
%14 = load i32, i32* %2
%15 = call i32 @hwloc_topology_get_depth(i32 %14)
store i32 %15, i32* %7
%16 = load i32, i32* %7
%17 = icmp eq i32 %16, 4
%18 = zext i1 %17 to i32
%19 = call i32 @assert(i32 %18)
%20 = load i32, i32* %2
%21 = call i32 @hwloc_get_nbobjs_by_depth(i32 %20, i32 0)
store i32 %21, i32* %8
%22 = load i32, i32* %8
%23 = icmp eq i32 %22, 1
%24 = zext i1 %23 to i32
%25 = call i32 @assert(i32 %24)
%26 = load i32, i32* %2
%27 = call i32 @hwloc_get_nbobjs_by_depth(i32 %26, i32 1)
store i32 %27, i32* %8
%28 = load i32, i32* %8
%29 = icmp eq i32 %28, 2
%30 = zext i1 %29 to i32
%31 = call i32 @assert(i32 %30)
%32 = load i32, i32* %2
%33 = call i32 @hwloc_get_nbobjs_by_depth(i32 %32, i32 2)
store i32 %33, i32* %8
%34 = load i32, i32* %8
%35 = icmp eq i32 %34, 16
%36 = zext i1 %35 to i32
%37 = call i32 @assert(i32 %36)
%38 = load i32, i32* %2
%39 = call i32 @hwloc_get_nbobjs_by_depth(i32 %38, i32 3)
store i32 %39, i32* %8
%40 = load i32, i32* %8
%41 = icmp eq i32 %40, 16
%42 = zext i1 %41 to i32
%43 = call i32 @assert(i32 %42)
store i32 0, i32* %5
br label %44
44: ; preds = %130, %0
%45 = load i32, i32* %5
%46 = icmp ult i32 %45, 16
br i1 %46, label %47, label %133
47: ; preds = %44
%48 = load i32, i32* %5
%49 = load i32, i32* %5
%50 = zext i32 %49 to i64
%51 = getelementptr inbounds [16 x i32], [16 x i32]* %3, i64 0, i64 %50
store i32 %48, i32* %51
store i32 0, i32* %6
br label %52
52: ; preds = %126, %47
%53 = load i32, i32* %6
%54 = icmp ult i32 %53, 16
br i1 %54, label %55, label %129
55: ; preds = %52
%56 = load i32, i32* %5
%57 = load i32, i32* %6
%58 = icmp eq i32 %56, %57
br i1 %58, label %59, label %72
59: ; preds = %55
%60 = load i32, i32* %6
%61 = load i32, i32* %5
%62 = mul i32 16, %61
%63 = add i32 %60, %62
%64 = zext i32 %63 to i64
%65 = getelementptr inbounds [256 x float], [256 x float]* %4, i64 0, i64 %64
store float 3.000000e+00, float* %65
%66 = load i32, i32* %5
%67 = load i32, i32* %6
%68 = mul i32 16, %67
%69 = add i32 %66, %68
%70 = zext i32 %69 to i64
%71 = getelementptr inbounds [256 x float], [256 x float]* %4, i64 0, i64 %70
store float 3.000000e+00, float* %71
br label %125
72: ; preds = %55
%73 = load i32, i32* %5
%74 = udiv i32 %73, 2
%75 = load i32, i32* %6
%76 = udiv i32 %75, 2
%77 = icmp eq i32 %74, %76
br i1 %77, label %78, label %91
78: ; preds = %72
%79 = load i32, i32* %6
%80 = load i32, i32* %5
%81 = mul i32 16, %80
%82 = add i32 %79, %81
%83 = zext i32 %82 to i64
%84 = getelementptr inbounds [256 x float], [256 x float]* %4, i64 0, i64 %83
store float 5.000000e+00, float* %84
%85 = load i32, i32* %5
%86 = load i32, i32* %6
%87 = mul i32 16, %86
%88 = add i32 %85, %87
%89 = zext i32 %88 to i64
%90 = getelementptr inbounds [256 x float], [256 x float]* %4, i64 0, i64 %89
store float 5.000000e+00, float* %90
br label %124
91: ; preds = %72
%92 = load i32, i32* %5
%93 = udiv i32 %92, 4
%94 = load i32, i32* %6
%95 = udiv i32 %94, 4
%96 = icmp eq i32 %93, %95
br i1 %96, label %97, label %110
97: ; preds = %91
%98 = load i32, i32* %6
%99 = load i32, i32* %5
%100 = mul i32 16, %99
%101 = add i32 %98, %100
%102 = zext i32 %101 to i64
%103 = getelementptr inbounds [256 x float], [256 x float]* %4, i64 0, i64 %102
store float 7.000000e+00, float* %103
%104 = load i32, i32* %5
%105 = load i32, i32* %6
%106 = mul i32 16, %105
%107 = add i32 %104, %106
%108 = zext i32 %107 to i64
%109 = getelementptr inbounds [256 x float], [256 x float]* %4, i64 0, i64 %108
store float 7.000000e+00, float* %109
br label %123
110: ; preds = %91
%111 = load i32, i32* %6
%112 = load i32, i32* %5
%113 = mul i32 16, %112
%114 = add i32 %111, %113
%115 = zext i32 %114 to i64
%116 = getelementptr inbounds [256 x float], [256 x float]* %4, i64 0, i64 %115
store float 9.000000e+00, float* %116
%117 = load i32, i32* %5
%118 = load i32, i32* %6
%119 = mul i32 16, %118
%120 = add i32 %117, %119
%121 = zext i32 %120 to i64
%122 = getelementptr inbounds [256 x float], [256 x float]* %4, i64 0, i64 %121
store float 9.000000e+00, float* %122
br label %123
123: ; preds = %110, %97
br label %124
124: ; preds = %123, %78
br label %125
125: ; preds = %124, %59
br label %126
126: ; preds = %125
%127 = load i32, i32* %6
%128 = add i32 %127, 1
store i32 %128, i32* %6
br label %52
129: ; preds = %52
br label %130
130: ; preds = %129
%131 = load i32, i32* %5
%132 = add i32 %131, 1
store i32 %132, i32* %5
br label %44
133: ; preds = %44
%134 = load i32, i32* %2
%135 = load i32, i32* @HWLOC_OBJ_CORE
%136 = getelementptr inbounds [16 x i32], [16 x i32]* %3, i64 0, i64 0
%137 = getelementptr inbounds [256 x float], [256 x float]* %4, i64 0, i64 0
%138 = call i32 @hwloc_topology_set_distance_matrix(i32 %134, i32 %135, i32 16, i32* %136, float* %137)
%139 = load i32, i32* %2
%140 = call i32 @hwloc_topology_load(i32 %139)
%141 = load i32, i32* %2
%142 = call i32 @hwloc_topology_get_depth(i32 %141)
store i32 %142, i32* %7
%143 = load i32, i32* %7
%144 = icmp eq i32 %143, 6
%145 = zext i1 %144 to i32
%146 = call i32 @assert(i32 %145)
%147 = load i32, i32* %2
%148 = call i32 @hwloc_get_nbobjs_by_depth(i32 %147, i32 0)
store i32 %148, i32* %8
%149 = load i32, i32* %8
%150 = icmp eq i32 %149, 1
%151 = zext i1 %150 to i32
%152 = call i32 @assert(i32 %151)
%153 = load i32, i32* %2
%154 = call i32 @hwloc_get_nbobjs_by_depth(i32 %153, i32 1)
store i32 %154, i32* %8
%155 = load i32, i32* %8
%156 = icmp eq i32 %155, 2
%157 = zext i1 %156 to i32
%158 = call i32 @assert(i32 %157)
%159 = load i32, i32* %2
%160 = call i32 @hwloc_get_nbobjs_by_depth(i32 %159, i32 2)
store i32 %160, i32* %8
%161 = load i32, i32* %8
%162 = icmp eq i32 %161, 4
%163 = zext i1 %162 to i32
%164 = call i32 @assert(i32 %163)
%165 = load i32, i32* %2
%166 = call i32 @hwloc_get_nbobjs_by_depth(i32 %165, i32 3)
store i32 %166, i32* %8
%167 = load i32, i32* %8
%168 = icmp eq i32 %167, 8
%169 = zext i1 %168 to i32
%170 = call i32 @assert(i32 %169)
%171 = load i32, i32* %2
%172 = call i32 @hwloc_get_nbobjs_by_depth(i32 %171, i32 4)
store i32 %172, i32* %8
%173 = load i32, i32* %8
%174 = icmp eq i32 %173, 16
%175 = zext i1 %174 to i32
%176 = call i32 @assert(i32 %175)
%177 = load i32, i32* %2
%178 = load i32, i32* @HWLOC_OBJ_CORE
%179 = call i32 @hwloc_topology_set_distance_matrix(i32 %177, i32 %178, i32 0, i32* null, float* null)
%180 = load i32, i32* %2
%181 = call i32 @hwloc_topology_load(i32 %180)
%182 = load i32, i32* %2
%183 = call i32 @hwloc_topology_get_depth(i32 %182)
store i32 %183, i32* %7
%184 = load i32, i32* %7
%185 = icmp eq i32 %184, 4
%186 = zext i1 %185 to i32
%187 = call i32 @assert(i32 %186)
%188 = load i32, i32* %2
%189 = call i32 @hwloc_get_nbobjs_by_depth(i32 %188, i32 0)
store i32 %189, i32* %8
%190 = load i32, i32* %8
%191 = icmp eq i32 %190, 1
%192 = zext i1 %191 to i32
%193 = call i32 @assert(i32 %192)
%194 = load i32, i32* %2
%195 = call i32 @hwloc_get_nbobjs_by_depth(i32 %194, i32 1)
store i32 %195, i32* %8
%196 = load i32, i32* %8
%197 = icmp eq i32 %196, 2
%198 = zext i1 %197 to i32
%199 = call i32 @assert(i32 %198)
%200 = load i32, i32* %2
%201 = call i32 @hwloc_get_nbobjs_by_depth(i32 %200, i32 2)
store i32 %201, i32* %8
%202 = load i32, i32* %8
%203 = icmp eq i32 %202, 16
%204 = zext i1 %203 to i32
%205 = call i32 @assert(i32 %204)
%206 = load i32, i32* %2
%207 = call i32 @hwloc_get_nbobjs_by_depth(i32 %206, i32 3)
store i32 %207, i32* %8
%208 = load i32, i32* %8
%209 = icmp eq i32 %208, 16
%210 = zext i1 %209 to i32
%211 = call i32 @assert(i32 %210)
%212 = load i32, i32* %2
%213 = call i32 @hwloc_topology_set_synthetic(i32 %212, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.1, i64 0, i64 0))
%214 = load i32, i32* %2
%215 = call i32 @hwloc_topology_load(i32 %214)
%216 = load i32, i32* %2
%217 = call i32 @hwloc_topology_get_depth(i32 %216)
store i32 %217, i32* %7
%218 = load i32, i32* %7
%219 = icmp eq i32 %218, 4
%220 = zext i1 %219 to i32
%221 = call i32 @assert(i32 %220)
%222 = load i32, i32* %2
%223 = call i32 @hwloc_get_nbobjs_by_depth(i32 %222, i32 0)
store i32 %223, i32* %8
%224 = load i32, i32* %8
%225 = icmp eq i32 %224, 1
%226 = zext i1 %225 to i32
%227 = call i32 @assert(i32 %226)
%228 = load i32, i32* %2
%229 = call i32 @hwloc_get_nbobjs_by_depth(i32 %228, i32 1)
store i32 %229, i32* %8
%230 = load i32, i32* %8
%231 = icmp eq i32 %230, 2
%232 = zext i1 %231 to i32
%233 = call i32 @assert(i32 %232)
%234 = load i32, i32* %2
%235 = call i32 @hwloc_get_nbobjs_by_depth(i32 %234, i32 2)
store i32 %235, i32* %8
%236 = load i32, i32* %8
%237 = icmp eq i32 %236, 8
%238 = zext i1 %237 to i32
%239 = call i32 @assert(i32 %238)
%240 = load i32, i32* %2
%241 = call i32 @hwloc_get_nbobjs_by_depth(i32 %240, i32 3)
store i32 %241, i32* %8
%242 = load i32, i32* %8
%243 = icmp eq i32 %242, 32
%244 = zext i1 %243 to i32
%245 = call i32 @assert(i32 %244)
%246 = call i32 @putenv(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.2, i64 0, i64 0))
%247 = load i32, i32* %2
%248 = call i32 @hwloc_topology_load(i32 %247)
%249 = load i32, i32* %2
%250 = call i32 @hwloc_topology_get_depth(i32 %249)
store i32 %250, i32* %7
%251 = load i32, i32* %7
%252 = icmp eq i32 %251, 5
%253 = zext i1 %252 to i32
%254 = call i32 @assert(i32 %253)
%255 = load i32, i32* %2
%256 = call i32 @hwloc_get_nbobjs_by_depth(i32 %255, i32 0)
store i32 %256, i32* %8
%257 = load i32, i32* %8
%258 = icmp eq i32 %257, 1
%259 = zext i1 %258 to i32
%260 = call i32 @assert(i32 %259)
%261 = load i32, i32* %2
%262 = call i32 @hwloc_get_nbobjs_by_depth(i32 %261, i32 1)
store i32 %262, i32* %8
%263 = load i32, i32* %8
%264 = icmp eq i32 %263, 2
%265 = zext i1 %264 to i32
%266 = call i32 @assert(i32 %265)
%267 = load i32, i32* %2
%268 = call i32 @hwloc_get_nbobjs_by_depth(i32 %267, i32 2)
store i32 %268, i32* %8
%269 = load i32, i32* %8
%270 = icmp eq i32 %269, 4
%271 = zext i1 %270 to i32
%272 = call i32 @assert(i32 %271)
%273 = load i32, i32* %2
%274 = call i32 @hwloc_get_nbobjs_by_depth(i32 %273, i32 3)
store i32 %274, i32* %8
%275 = load i32, i32* %8
%276 = icmp eq i32 %275, 8
%277 = zext i1 %276 to i32
%278 = call i32 @assert(i32 %277)
%279 = load i32, i32* %2
%280 = call i32 @hwloc_get_nbobjs_by_depth(i32 %279, i32 4)
store i32 %280, i32* %8
%281 = load i32, i32* %8
%282 = icmp eq i32 %281, 32
%283 = zext i1 %282 to i32
%284 = call i32 @assert(i32 %283)
%285 = call i32 @putenv(i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.3, i64 0, i64 0))
%286 = load i32, i32* %2
%287 = call i32 @hwloc_topology_load(i32 %286)
%288 = load i32, i32* %2
%289 = call i32 @hwloc_topology_get_depth(i32 %288)
store i32 %289, i32* %7
%290 = load i32, i32* %7
%291 = icmp eq i32 %290, 6
%292 = zext i1 %291 to i32
%293 = call i32 @assert(i32 %292)
%294 = load i32, i32* %2
%295 = call i32 @hwloc_get_nbobjs_by_depth(i32 %294, i32 0)
store i32 %295, i32* %8
%296 = load i32, i32* %8
%297 = icmp eq i32 %296, 1
%298 = zext i1 %297 to i32
%299 = call i32 @assert(i32 %298)
%300 = load i32, i32* %2
%301 = call i32 @hwloc_get_nbobjs_by_depth(i32 %300, i32 1)
store i32 %301, i32* %8
%302 = load i32, i32* %8
%303 = icmp eq i32 %302, 2
%304 = zext i1 %303 to i32
%305 = call i32 @assert(i32 %304)
%306 = load i32, i32* %2
%307 = call i32 @hwloc_get_nbobjs_by_depth(i32 %306, i32 2)
store i32 %307, i32* %8
%308 = load i32, i32* %8
%309 = icmp eq i32 %308, 4
%310 = zext i1 %309 to i32
%311 = call i32 @assert(i32 %310)
%312 = load i32, i32* %2
%313 = call i32 @hwloc_get_nbobjs_by_depth(i32 %312, i32 3)
store i32 %313, i32* %8
%314 = load i32, i32* %8
%315 = icmp eq i32 %314, 8
%316 = zext i1 %315 to i32
%317 = call i32 @assert(i32 %316)
%318 = load i32, i32* %2
%319 = call i32 @hwloc_get_nbobjs_by_depth(i32 %318, i32 4)
store i32 %319, i32* %8
%320 = load i32, i32* %8
%321 = icmp eq i32 %320, 16
%322 = zext i1 %321 to i32
%323 = call i32 @assert(i32 %322)
%324 = load i32, i32* %2
%325 = call i32 @hwloc_get_nbobjs_by_depth(i32 %324, i32 5)
store i32 %325, i32* %8
%326 = load i32, i32* %8
%327 = icmp eq i32 %326, 32
%328 = zext i1 %327 to i32
%329 = call i32 @assert(i32 %328)
%330 = call i32 @putenv(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.4, i64 0, i64 0))
%331 = load i32, i32* %2
%332 = call i32 @hwloc_topology_load(i32 %331)
%333 = load i32, i32* %2
%334 = call i32 @hwloc_topology_get_depth(i32 %333)
store i32 %334, i32* %7
%335 = load i32, i32* %7
%336 = icmp eq i32 %335, 5
%337 = zext i1 %336 to i32
%338 = call i32 @assert(i32 %337)
%339 = load i32, i32* %2
%340 = call i32 @hwloc_get_nbobjs_by_depth(i32 %339, i32 0)
store i32 %340, i32* %8
%341 = load i32, i32* %8
%342 = icmp eq i32 %341, 1
%343 = zext i1 %342 to i32
%344 = call i32 @assert(i32 %343)
%345 = load i32, i32* %2
%346 = call i32 @hwloc_get_nbobjs_by_depth(i32 %345, i32 1)
store i32 %346, i32* %8
%347 = load i32, i32* %8
%348 = icmp eq i32 %347, 2
%349 = zext i1 %348 to i32
%350 = call i32 @assert(i32 %349)
%351 = load i32, i32* %2
%352 = call i32 @hwloc_get_nbobjs_by_depth(i32 %351, i32 2)
store i32 %352, i32* %8
%353 = load i32, i32* %8
%354 = icmp eq i32 %353, 8
%355 = zext i1 %354 to i32
%356 = call i32 @assert(i32 %355)
%357 = load i32, i32* %2
%358 = call i32 @hwloc_get_nbobjs_by_depth(i32 %357, i32 3)
store i32 %358, i32* %8
%359 = load i32, i32* %8
%360 = icmp eq i32 %359, 16
%361 = zext i1 %360 to i32
%362 = call i32 @assert(i32 %361)
%363 = load i32, i32* %2
%364 = call i32 @hwloc_get_nbobjs_by_depth(i32 %363, i32 4)
store i32 %364, i32* %8
%365 = load i32, i32* %8
%366 = icmp eq i32 %365, 32
%367 = zext i1 %366 to i32
%368 = call i32 @assert(i32 %367)
%369 = load i32, i32* %2
%370 = call i32 @hwloc_topology_destroy(i32 %369)
ret i32 0
}

LLVM IR (-O2):
@.str = [19 x i8] c"node:2 core:8 pu:1\00"
@HWLOC_OBJ_CORE = global i32 0
@.str.1 = [19 x i8] c"node:2 core:4 pu:4\00"
@.str.2 = [41 x i8] c"HWLOC_Core_DISTANCES=0,1,2,3,4,5,6,7:4*2\00"
@.str.3 = [110 x i8] c"HWLOC_PU_DISTANCES=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31:16*2\00"
@.str.4 = [41 x i8] c"HWLOC_Core_DISTANCES=0,1,2,3,4,5,6,7:2*4\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [16 x i32]
%3 = alloca [256 x float]
%4 = bitcast i32* %1 to i8*
%5 = bitcast [16 x i32]* %2 to i8*
%6 = bitcast [256 x float]* %3 to i8*
%7 = call i32 @hwloc_topology_init(i32* %1)
%8 = load i32, i32* %1
%9 = call i32 @hwloc_topology_set_synthetic(i32 %8, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0))
%10 = load i32, i32* %1
%11 = call i32 @hwloc_topology_load(i32 %10)
%12 = load i32, i32* %1
%13 = call i32 @hwloc_topology_get_depth(i32 %12)
%14 = icmp eq i32 %13, 4
%15 = zext i1 %14 to i32
%16 = call i32 @assert(i32 %15)
%17 = load i32, i32* %1
%18 = call i32 @hwloc_get_nbobjs_by_depth(i32 %17, i32 0)
%19 = icmp eq i32 %18, 1
%20 = zext i1 %19 to i32
%21 = call i32 @assert(i32 %20)
%22 = load i32, i32* %1
%23 = call i32 @hwloc_get_nbobjs_by_depth(i32 %22, i32 1)
%24 = icmp eq i32 %23, 2
%25 = zext i1 %24 to i32
%26 = call i32 @assert(i32 %25)
%27 = load i32, i32* %1
%28 = call i32 @hwloc_get_nbobjs_by_depth(i32 %27, i32 2)
%29 = icmp eq i32 %28, 16
%30 = zext i1 %29 to i32
%31 = call i32 @assert(i32 %30)
%32 = load i32, i32* %1
%33 = call i32 @hwloc_get_nbobjs_by_depth(i32 %32, i32 3)
%34 = icmp eq i32 %33, 16
%35 = zext i1 %34 to i32
%36 = call i32 @assert(i32 %35)
br label %37
37: ; preds = %0, %73
%38 = phi i64 [ 0, %0 ], [ %74, %73 ]
%39 = getelementptr inbounds [16 x i32], [16 x i32]* %2, i64 0, i64 %38
%40 = trunc i64 %38 to i32
store i32 %40, i32* %39
%41 = shl i64 %38, 4
%42 = mul i64 %38, 17
%43 = getelementptr inbounds [256 x float], [256 x float]* %3, i64 0, i64 %42
br label %44
44: ; preds = %37, %70
%45 = phi i64 [ 0, %37 ], [ %71, %70 ]
%46 = icmp eq i64 %38, %45
br i1 %46, label %47, label %48
47: ; preds = %44
store float 3.000000e+00, float* %43
br label %70
48: ; preds = %44
%49 = xor i64 %45, %38
%50 = trunc i64 %49 to i32
%51 = icmp ult i32 %50, 2
br i1 %51, label %52, label %58
52: ; preds = %48
%53 = add nuw nsw i64 %45, %41
%54 = getelementptr inbounds [256 x float], [256 x float]* %3, i64 0, i64 %53
store float 5.000000e+00, float* %54
%55 = shl nuw nsw i64 %45, 4
%56 = add nuw nsw i64 %55, %38
%57 = getelementptr inbounds [256 x float], [256 x float]* %3, i64 0, i64 %56
store float 5.000000e+00, float* %57
br label %70
58: ; preds = %48
%59 = icmp ult i32 %50, 4
%60 = add nuw nsw i64 %45, %41
%61 = getelementptr inbounds [256 x float], [256 x float]* %3, i64 0, i64 %60
br i1 %59, label %62, label %66
62: ; preds = %58
store float 7.000000e+00, float* %61
%63 = shl nuw nsw i64 %45, 4
%64 = add nuw nsw i64 %63, %38
%65 = getelementptr inbounds [256 x float], [256 x float]* %3, i64 0, i64 %64
store float 7.000000e+00, float* %65
br label %70
66: ; preds = %58
store float 9.000000e+00, float* %61
%67 = shl nuw nsw i64 %45, 4
%68 = add nuw nsw i64 %67, %38
%69 = getelementptr inbounds [256 x float], [256 x float]* %3, i64 0, i64 %68
store float 9.000000e+00, float* %69
br label %70
70: ; preds = %47, %62, %66, %52
%71 = add nuw nsw i64 %45, 1
%72 = icmp eq i64 %71, 16
br i1 %72, label %73, label %44
73: ; preds = %70
%74 = add nuw nsw i64 %38, 1
%75 = icmp eq i64 %74, 16
br i1 %75, label %76, label %37
76: ; preds = %73
%77 = load i32, i32* %1
%78 = load i32, i32* @HWLOC_OBJ_CORE
%79 = getelementptr inbounds [16 x i32], [16 x i32]* %2, i64 0, i64 0
%80 = getelementptr inbounds [256 x float], [256 x float]* %3, i64 0, i64 0
%81 = call i32 @hwloc_topology_set_distance_matrix(i32 %77, i32 %78, i32 16, i32* %79, float* %80)
%82 = load i32, i32* %1
%83 = call i32 @hwloc_topology_load(i32 %82)
%84 = load i32, i32* %1
%85 = call i32 @hwloc_topology_get_depth(i32 %84)
%86 = icmp eq i32 %85, 6
%87 = zext i1 %86 to i32
%88 = call i32 @assert(i32 %87)
%89 = load i32, i32* %1
%90 = call i32 @hwloc_get_nbobjs_by_depth(i32 %89, i32 0)
%91 = icmp eq i32 %90, 1
%92 = zext i1 %91 to i32
%93 = call i32 @assert(i32 %92)
%94 = load i32, i32* %1
%95 = call i32 @hwloc_get_nbobjs_by_depth(i32 %94, i32 1)
%96 = icmp eq i32 %95, 2
%97 = zext i1 %96 to i32
%98 = call i32 @assert(i32 %97)
%99 = load i32, i32* %1
%100 = call i32 @hwloc_get_nbobjs_by_depth(i32 %99, i32 2)
%101 = icmp eq i32 %100, 4
%102 = zext i1 %101 to i32
%103 = call i32 @assert(i32 %102)
%104 = load i32, i32* %1
%105 = call i32 @hwloc_get_nbobjs_by_depth(i32 %104, i32 3)
%106 = icmp eq i32 %105, 8
%107 = zext i1 %106 to i32
%108 = call i32 @assert(i32 %107)
%109 = load i32, i32* %1
%110 = call i32 @hwloc_get_nbobjs_by_depth(i32 %109, i32 4)
%111 = icmp eq i32 %110, 16
%112 = zext i1 %111 to i32
%113 = call i32 @assert(i32 %112)
%114 = load i32, i32* %1
%115 = load i32, i32* @HWLOC_OBJ_CORE
%116 = call i32 @hwloc_topology_set_distance_matrix(i32 %114, i32 %115, i32 0, i32* null, float* null)
%117 = load i32, i32* %1
%118 = call i32 @hwloc_topology_load(i32 %117)
%119 = load i32, i32* %1
%120 = call i32 @hwloc_topology_get_depth(i32 %119)
%121 = icmp eq i32 %120, 4
%122 = zext i1 %121 to i32
%123 = call i32 @assert(i32 %122)
%124 = load i32, i32* %1
%125 = call i32 @hwloc_get_nbobjs_by_depth(i32 %124, i32 0)
%126 = icmp eq i32 %125, 1
%127 = zext i1 %126 to i32
%128 = call i32 @assert(i32 %127)
%129 = load i32, i32* %1
%130 = call i32 @hwloc_get_nbobjs_by_depth(i32 %129, i32 1)
%131 = icmp eq i32 %130, 2
%132 = zext i1 %131 to i32
%133 = call i32 @assert(i32 %132)
%134 = load i32, i32* %1
%135 = call i32 @hwloc_get_nbobjs_by_depth(i32 %134, i32 2)
%136 = icmp eq i32 %135, 16
%137 = zext i1 %136 to i32
%138 = call i32 @assert(i32 %137)
%139 = load i32, i32* %1
%140 = call i32 @hwloc_get_nbobjs_by_depth(i32 %139, i32 3)
%141 = icmp eq i32 %140, 16
%142 = zext i1 %141 to i32
%143 = call i32 @assert(i32 %142)
%144 = load i32, i32* %1
%145 = call i32 @hwloc_topology_set_synthetic(i32 %144, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.1, i64 0, i64 0))
%146 = load i32, i32* %1
%147 = call i32 @hwloc_topology_load(i32 %146)
%148 = load i32, i32* %1
%149 = call i32 @hwloc_topology_get_depth(i32 %148)
%150 = icmp eq i32 %149, 4
%151 = zext i1 %150 to i32
%152 = call i32 @assert(i32 %151)
%153 = load i32, i32* %1
%154 = call i32 @hwloc_get_nbobjs_by_depth(i32 %153, i32 0)
%155 = icmp eq i32 %154, 1
%156 = zext i1 %155 to i32
%157 = call i32 @assert(i32 %156)
%158 = load i32, i32* %1
%159 = call i32 @hwloc_get_nbobjs_by_depth(i32 %158, i32 1)
%160 = icmp eq i32 %159, 2
%161 = zext i1 %160 to i32
%162 = call i32 @assert(i32 %161)
%163 = load i32, i32* %1
%164 = call i32 @hwloc_get_nbobjs_by_depth(i32 %163, i32 2)
%165 = icmp eq i32 %164, 8
%166 = zext i1 %165 to i32
%167 = call i32 @assert(i32 %166)
%168 = load i32, i32* %1
%169 = call i32 @hwloc_get_nbobjs_by_depth(i32 %168, i32 3)
%170 = icmp eq i32 %169, 32
%171 = zext i1 %170 to i32
%172 = call i32 @assert(i32 %171)
%173 = call i32 @putenv(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.2, i64 0, i64 0))
%174 = load i32, i32* %1
%175 = call i32 @hwloc_topology_load(i32 %174)
%176 = load i32, i32* %1
%177 = call i32 @hwloc_topology_get_depth(i32 %176)
%178 = icmp eq i32 %177, 5
%179 = zext i1 %178 to i32
%180 = call i32 @assert(i32 %179)
%181 = load i32, i32* %1
%182 = call i32 @hwloc_get_nbobjs_by_depth(i32 %181, i32 0)
%183 = icmp eq i32 %182, 1
%184 = zext i1 %183 to i32
%185 = call i32 @assert(i32 %184)
%186 = load i32, i32* %1
%187 = call i32 @hwloc_get_nbobjs_by_depth(i32 %186, i32 1)
%188 = icmp eq i32 %187, 2
%189 = zext i1 %188 to i32
%190 = call i32 @assert(i32 %189)
%191 = load i32, i32* %1
%192 = call i32 @hwloc_get_nbobjs_by_depth(i32 %191, i32 2)
%193 = icmp eq i32 %192, 4
%194 = zext i1 %193 to i32
%195 = call i32 @assert(i32 %194)
%196 = load i32, i32* %1
%197 = call i32 @hwloc_get_nbobjs_by_depth(i32 %196, i32 3)
%198 = icmp eq i32 %197, 8
%199 = zext i1 %198 to i32
%200 = call i32 @assert(i32 %199)
%201 = load i32, i32* %1
%202 = call i32 @hwloc_get_nbobjs_by_depth(i32 %201, i32 4)
%203 = icmp eq i32 %202, 32
%204 = zext i1 %203 to i32
%205 = call i32 @assert(i32 %204)
%206 = call i32 @putenv(i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.3, i64 0, i64 0))
%207 = load i32, i32* %1
%208 = call i32 @hwloc_topology_load(i32 %207)
%209 = load i32, i32* %1
%210 = call i32 @hwloc_topology_get_depth(i32 %209)
%211 = icmp eq i32 %210, 6
%212 = zext i1 %211 to i32
%213 = call i32 @assert(i32 %212)
%214 = load i32, i32* %1
%215 = call i32 @hwloc_get_nbobjs_by_depth(i32 %214, i32 0)
%216 = icmp eq i32 %215, 1
%217 = zext i1 %216 to i32
%218 = call i32 @assert(i32 %217)
%219 = load i32, i32* %1
%220 = call i32 @hwloc_get_nbobjs_by_depth(i32 %219, i32 1)
%221 = icmp eq i32 %220, 2
%222 = zext i1 %221 to i32
%223 = call i32 @assert(i32 %222)
%224 = load i32, i32* %1
%225 = call i32 @hwloc_get_nbobjs_by_depth(i32 %224, i32 2)
%226 = icmp eq i32 %225, 4
%227 = zext i1 %226 to i32
%228 = call i32 @assert(i32 %227)
%229 = load i32, i32* %1
%230 = call i32 @hwloc_get_nbobjs_by_depth(i32 %229, i32 3)
%231 = icmp eq i32 %230, 8
%232 = zext i1 %231 to i32
%233 = call i32 @assert(i32 %232)
%234 = load i32, i32* %1
%235 = call i32 @hwloc_get_nbobjs_by_depth(i32 %234, i32 4)
%236 = icmp eq i32 %235, 16
%237 = zext i1 %236 to i32
%238 = call i32 @assert(i32 %237)
%239 = load i32, i32* %1
%240 = call i32 @hwloc_get_nbobjs_by_depth(i32 %239, i32 5)
%241 = icmp eq i32 %240, 32
%242 = zext i1 %241 to i32
%243 = call i32 @assert(i32 %242)
%244 = call i32 @putenv(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.4, i64 0, i64 0))
%245 = load i32, i32* %1
%246 = call i32 @hwloc_topology_load(i32 %245)
%247 = load i32, i32* %1
%248 = call i32 @hwloc_topology_get_depth(i32 %247)
%249 = icmp eq i32 %248, 5
%250 = zext i1 %249 to i32
%251 = call i32 @assert(i32 %250)
%252 = load i32, i32* %1
%253 = call i32 @hwloc_get_nbobjs_by_depth(i32 %252, i32 0)
%254 = icmp eq i32 %253, 1
%255 = zext i1 %254 to i32
%256 = call i32 @assert(i32 %255)
%257 = load i32, i32* %1
%258 = call i32 @hwloc_get_nbobjs_by_depth(i32 %257, i32 1)
%259 = icmp eq i32 %258, 2
%260 = zext i1 %259 to i32
%261 = call i32 @assert(i32 %260)
%262 = load i32, i32* %1
%263 = call i32 @hwloc_get_nbobjs_by_depth(i32 %262, i32 2)
%264 = icmp eq i32 %263, 8
%265 = zext i1 %264 to i32
%266 = call i32 @assert(i32 %265)
%267 = load i32, i32* %1
%268 = call i32 @hwloc_get_nbobjs_by_depth(i32 %267, i32 3)
%269 = icmp eq i32 %268, 16
%270 = zext i1 %269 to i32
%271 = call i32 @assert(i32 %270)
%272 = load i32, i32* %1
%273 = call i32 @hwloc_get_nbobjs_by_depth(i32 %272, i32 4)
%274 = icmp eq i32 %273, 32
%275 = zext i1 %274 to i32
%276 = call i32 @assert(i32 %275)
%277 = load i32, i32* %1
%278 = call i32 @hwloc_topology_destroy(i32 %277)
ret i32 0
}