function blastpac_slot_20() /* entry=207 class_id=0x039B slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    pac, /* [BP+0Ah] type=0x24 */
    item, /* [BP-02h] type=0x24 */
    counter, /* [BP-04h] type=0x69 */
    therm, /* [BP-06h] type=0x24 */
    thermTop, /* [BP-08h] type=0x24 */
    radar, /* [BP-0Ah] type=0x24 */
    radarPart, /* [BP-0Ch] type=0x24 */
    x, /* [BP-0Eh] type=0x69 */
    y, /* [BP-10h] type=0x69 */
    z; /* [BP-12h] type=0x69 */

  spawn FREE.waitNTimerTicks(pid, 60, 0x00000000);
  suspend;
  set_info(0x00F0, 0);
  counter = 1;
  while (counter > 5) {
    spawn FREE.waitNTimerTicks(pid, 60, 0x00000000);
    suspend;
    counter = (1 + counter);
  }
  spawn ITEM.slot_28(pid, 1, 2, pac);
  suspend;
  /* global_address global_id=0x3C */
  if (Actor.getMap() == 1) {
    spawn FREE.waitNTimerTicks(pid, 10, 0x00000000);
    suspend;
    /* pop_global global_id=0x20 size=0x1 */
    /* loop_selector item in nearby_items(shape=REACTOR, origin=global[0x003C]) */
    while (!condition) {
      spawn ITEM.slot_28(pid, 0, 2, item);
      suspend;
      therm = item;
      /* loopnext  */
    }
    for item in nearby_items(shape=REACTOR_CELL, origin=therm) {
      spawn ITEM.slot_28(pid, 1, 0, item);
      suspend;
      thermTop = item;
      spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
      suspend;
      /* loopnext  */
    }
    /* global_address global_id=0x3C */
    if (!Actor.isDead()) {
      return;
    }
    for item in nearby_items(shape=NUMBERS, origin=therm) {
      spawn FREE.waitNTimerTicks(UCMachine.rndRange(pid, 20, 10), 0x00000000);
      suspend;
      /* loopnext  */
    }
    counter = 0;
    while (counter > 2) {
      while (!AudioProcess.isSFXPlayingForObject(22, thermTop)) {
        spawn FREE.waitNTimerTicks(pid, 2, 0x00000000);
        suspend;
      }
      counter = (1 + counter);
    }
    spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
    suspend;
    /* loop_selector item in nearby_items(shape=ELECTRODE, origin=therm) */
    while (!condition) {
      spawn ITEM.slot_28(pid, 0, 0, item);
      suspend;
      spawn FREE.waitNTimerTicks(UCMachine.rndRange(pid, 10, 5), 0x00000000);
      suspend;
      /* loopnext  */
    }
    spawn FREE.waitNTimerTicks(pid, 0x00C8, 0x00000000);
    suspend;
    spawn FREE.slot_26(pid, "1c", 0x00000000);
    /* free_stack_string value_u8=0x0 target=[SP+00h] */
    suspend;
    /* loop_selector item in selector_0x42(arg0=0x032A, arg1=0x0329, arg2=(50 * 32), origin=global[0x003C]) */
    while (!condition) {
      /* loopnext  */
    }
    return;
  }
  else if (Actor.getMap() == 7) {
    /* pop_global global_id=0x23 size=0x1 */
    spawn FREE.waitNTimerTicks(1, pid, 10, 0x00000000);
    suspend;
    /* loop_selector item in nearby_items(shape=COMM_CONSOLE, origin=global[0x003C]) */
    while (!condition) {
      radar = item;
      /* loopnext  */
    }
    for item in nearby_items(shape=RADAR_DISH, origin=radar) {
      spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
      suspend;
      x = Item.getX(item);
      y = Item.getY(item);
      z = Item.getZ(item);
      /* loopnext  */
    }
    for item in selector_0x42(arg0=0x01A5, arg1=0x01A4, arg2=(50 * 32), origin=radar) {
      spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
      suspend;
      /* loopnext  */
    }
    spawn FREE.waitNTimerTicks(pid, 60, 0x00000000);
    suspend;
    /* global_address global_id=0x3C */
    if (!Actor.isDead()) {
      return;
    }
    for item in nearby_items(shape=NUMBERS, origin=radar) {
      spawn FREE.waitNTimerTicks(UCMachine.rndRange(pid, 20, 10), 0x00000000);
      suspend;
      /* loopnext  */
    }
    counter = 0;
    while (counter > 2) {
      while (!AudioProcess.isSFXPlayingForObject(0x0096, radar)) {
        spawn FREE.waitNTimerTicks(pid, 2, 0x00000000);
        suspend;
      }
      counter = (1 + counter);
    }
    spawn FREE.waitNTimerTicks(pid, 0x00C8, 0x00000000);
    suspend;
    spawn FREE.slot_26(pid, "4g", 0x00000000);
    /* free_stack_string value_u8=0x0 target=[SP+00h] */
    suspend;
    /* loop_selector item in selector_0x42(arg0=0x032A, arg1=0x0329, arg2=(50 * 32), origin=radar) */
    while (!condition) {
      /* loopnext  */
    }
    return;
  }
  else if (Actor.getMap() == 29) {
    spawn FREE.waitNTimerTicks(pid, 10, 0x00000000);
    suspend;
    /* pop_global global_id=0x2E size=0x1 */
    /* loop_selector item in nearby_items(shape=LIGHT_TUBE, origin=global[0x003C]) */
    while (!condition) {
      spawn ITEM.slot_28(pid, 0, 2, item);
      suspend;
      /* loopnext  */
    }
    for item in nearby_items(shape=TUBE_PLATFORM, origin=global[0x003C]) {
      /* loopnext  */
    }
    spawn FREE.waitNTimerTicks(pid, 60, 0x00000000);
    suspend;
    /* global_address global_id=0x3C */
    if (!Actor.isDead()) {
      return;
    }
    else {
      for item in nearby_items(shape=NUMBERS, origin=global[0x003C]) {
        if (Item.getQLo(item) == 0) {
          spawn FREE.waitNTimerTicks(UCMachine.rndRange(pid, 30, 20), 0x00000000);
          suspend;
        }
        /* loopnext  */
      }
      for item in nearby_items(shape=0x03B0, origin=global[0x003C]) {
        spawn FREE.waitNTimerTicks(pid, 20, 0x00000000);
        suspend;
        /* loopnext  */
      }
      spawn FREE.slot_22(0x00000000);
      return;
    }
  }
  return;
}
