user: Converte this assembly snippet into its equivalent C code:

```asm
<repair_population>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %rdi,0x10(%rsp)
  mov    0x78(%rsp),%ebx
  mov    %r8d,0x2c(%rsp)
  mov    %r9d,0xc(%rsp)
  test   %r8d,%r8d
  jle    L90
  movslq %r8d,%rax
  mov    %rsi,%r13
  mov    %rdx,%r14
  mov    %rcx,%r15
  mov    %rax,0x18(%rsp)
  mov    0x70(%rsp),%eax
  movq   $0x0,(%rsp)
  sub    $0x1,%eax
  lea    0x4(,%rax,4),%rax
  mov    %rax,0x20(%rsp)
  nopl   0x0(%rax,%rax,1)
L45:
  mov    0x70(%rsp),%edx
  mov    (%rsp),%ebp
  xor    %eax,%eax
  test   %edx,%edx
  jle    L113
  mov    (%rsp),%rsi
  mov    0x20(%rsp),%rcx
  mov    0x10(%rsp),%rdi
  jmp    L52
  nopl   0x0(%rax)
L49:
  add    $0x4,%rax
  cmp    %rax,%rcx
  je     L113
L52:
  mov    (%r15,%rax,2),%rdx
  cmp    %ebx,0xc(%rdx)
  jne    L49
  mov    (%rdi,%rsi,8),%rdx
  mov    (%rdx,%rax,1),%edx
  test   %edx,%edx
  jne    L49
  mov    0xc(%rsp),%eax
  mov    %edx,0x28(%rsp)
  test   %eax,%eax
  jle    L112
L146:
  xor    %r12d,%r12d
  mov    %ebx,0x78(%rsp)
  mov    %r12d,%ebx
  mov    0xc(%rsp),%r12d
  jmp    L70
  cs nopw 0x0(%rax,%rax,1)
L40:
  add    $0x1,%ebx
  cmp    %ebx,%r12d
  jle    L149
L70:
  mov    %ebx,%ecx
  mov    %ebp,%edx
  mov    %r13,%rsi
  mov    %r14,%rdi
  call   <is_overloaded@plt>
  test   %rax,%rax
  je     L40
  mov    0x78(%rsp),%ebx
L112:
  push   0xa0(%rsp)
  mov    %r15,%rcx
  mov    %r14,%rdx
  mov    %r13,%rsi
  push   0xa0(%rsp)
  push   %rbp
  mov    0xa8(%rsp),%eax
  push   %rax
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   %rbx
  mov    0xa8(%rsp),%eax
  push   %rax
  mov    0x4c(%rsp),%r9d
  mov    0x6c(%rsp),%r8d
  mov    0x50(%rsp),%rdi
  call   <repair_individual@plt>
  add    $0x40,%rsp
L127:
  addq   $0x1,(%rsp)
  mov    (%rsp),%rax
  cmp    %rax,0x18(%rsp)
  jne    L45
L90:
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  cs nopw 0x0(%rax,%rax,1)
L113:
  mov    0xc(%rsp),%esi
  movl   $0x1,0x28(%rsp)
  test   %esi,%esi
  jg     L146
  jmp    L127
  cs nopw 0x0(%rax,%rax,1)
L149:
  mov    0x28(%rsp),%ecx
  mov    0x78(%rsp),%ebx
  test   %ecx,%ecx
  jne    L127
  jmp    L112
```

assistant: ```c
void repair_population(int **population, int ***utilization, int **H, int **V, int number_of_individuals, int h_size, int v_size, int max_SLA, int *K, int **network_utilization, int l_size, int **G, int **T) {
  int iterator_individual = 0;
  int iterator_virtual = 0;
  int iterator_physical = 0;
  int iterator_link = 0;
  int factibility = 1;
  for (iterator_individual = 0; iterator_individual < number_of_individuals; iterator_individual++) {
    factibility = 1;
    for (iterator_virtual = 0; iterator_virtual < v_size; iterator_virtual++) {
      if (V[iterator_virtual][3] == max_SLA && population[iterator_individual][iterator_virtual] == 0) {
        factibility = 0;
        break;
      }
    }
    for (iterator_physical = 0; iterator_physical < h_size; iterator_physical++) {
      if (is_overloaded(H, utilization, iterator_individual, iterator_physical)) {
        factibility = 0;
        break;
      }
    }
    if (factibility == 0) {
      repair_individual(population, utilization, H, V, number_of_individuals, h_size, v_size, max_SLA, K, network_utilization, l_size, iterator_individual, G, T);
    }
  }
}
```