void FUN_00404c30(void *param_1)

{
  int *piVar1;
  
  duidfree((int)param_1 + 0xc);
  if (*(int *)((int)param_1 + 8) == 0) {
    if (*(int *)((int)param_1 + 0x14) == 6) {
      for (piVar1 = *(int **)((int)param_1 + 0x1c); piVar1 != (int *)0x0; piVar1 = (int *)*piVar1) {
        if (piVar1[2] == 7) {
          release_address(piVar1 + 5);
        }
        else {
          dprintf(3,"free_binding","unexpected binding value type(%d)",piVar1[2]);
        }
      }
    }
    dhcp6_clear_list((int)param_1 + 0x1c);
  }
  else {
    dprintf(3,"free_binding","unknown binding type %d");
  }
  free(param_1);
  return;
}