function hover_slot_20() /* entry=383 class_id=0x0A0D slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    tx, /* [BP+0Ch] type=0x69 */
    ty, /* [BP+0Eh] type=0x69 */
    tz, /* [BP+10h] type=0x69 */
    wp, /* [BP-05h] type=0x24 */
    total, /* [BP-07h] type=0x69 */
    counter, /* [BP-09h] type=0x69 */
    ddx, /* [BP-0Bh] type=0x69 */
    ddy, /* [BP-0Dh] type=0x69 */
    ddz, /* [BP-0Fh] type=0x69 */
    dx, /* [BP-11h] type=0x69 */
    dy, /* [BP-13h] type=0x69 */
    dz, /* [BP-15h] type=0x69 */
    cargo, /* [BP-17h] type=0x24 */
    hover, /* [BP-19h] type=0x24 */
    sx, /* [BP-1Bh] type=0x69 */
    sy, /* [BP-1Dh] type=0x69 */
    sz, /* [BP-1Eh] type=0x62 */
    a, /* [BP-20h] type=0x69 */
    b, /* [BP-22h] type=0x69 */
    c, /* [BP-24h] type=0x69 */
    xacc, /* [BP-28h] type=0x64 */
    yacc, /* [BP-2Ch] type=0x64 */
    zacc, /* [BP-30h] type=0x64 */
    xfract, /* [BP-34h] type=0x64 */
    yfract, /* [BP-38h] type=0x64 */
    zfract, /* [BP-3Ch] type=0x64 */
    l1, /* [BP-40h] type=0x64 */
    n; /* [BP-42h] type=0x24 */

  entry:
    set_info(1, 0);
    hover = ref;
    sx = Intrinsic0013(hover);
    sy = Item.legal_create(hover);
    sz = Item.getZ(hover);
    class_0A0C_slot_3F((tx - sx));
    a = retval;
    class_0A0C_slot_3F((ty - sy));
    b = retval;
    class_0A0C_slot_3F((tz - sz));
    c = retval;
    if ((a > b) && (a > c)) goto block_05B3;

  block_0183:
    /* word_to_dword  */
    l1 = a;
    /* word_to_dword  */
    yfract = b;
    /* word_to_dword  */
    yfract = (yfract * 0x0FA0);
    yfract = (yfract / l1);
    /* word_to_dword  */
    yacc = 0;
    /* word_to_dword  */
    zfract = c;
    /* word_to_dword  */
    zfract = (zfract * 0x0FA0);
    zfract = (zfract / l1);
    /* word_to_dword  */
    zacc = 0;

  block_01D7:
    if 1 goto block_05B0;

  block_01DF:
    if ((Item.getStatus(hover) & 0x1000) != 0) goto block_01FF;

  block_01F5:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E24;

  block_01FF:
    dx = (tx - sx);
    dy = (ty - sy);
    dz = (tz - sz);
    ddx = 0;
    ddy = 0;
    ddz = 0;
    if ((dx < 4) && (dx > -4)) goto block_0250;

  block_0246:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E24;

  block_0250:
    ddx = 4;
    if (dx < 0) goto block_0269;

  block_0262:
    ddx = -4;

  block_0269:
    if dy goto block_02AD;

  block_0271:
    yacc = (yacc + yfract);
    /* word_to_dword  */
    /* gt_dword  */
    if 0x0FA0 goto block_02AD;

  block_0288:
    /* word_to_dword  */
    yacc = (yacc - 0x0FA0);
    ddy = 4;
    if (dy < 0) goto block_02AD;

  block_02A6:
    ddy = -4;

  block_02AD:
    if dz goto block_02F1;

  block_02B5:
    zacc = (zacc + zfract);
    /* word_to_dword  */
    /* gt_dword  */
    if 0x0FA0 goto block_02F1;

  block_02CC:
    /* word_to_dword  */
    zacc = (zacc - 0x0FA0);
    ddz = 4;
    if (dz < 0) goto block_02F1;

  block_02EA:
    ddz = -4;

  block_02F1:
    total = 0;
    /* loopscr value_u8=0x24 */
    /* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */

  block_0306:
    if condition goto block_039B;

  block_0309:
    if (Intrinsic0016(cargo) != 0x033A) goto block_0397;

  block_031C:
    if (cargo < 0x00FF) goto block_0382;

  block_032B:
    n = cargo;
    if Kernel.resetRef(n) goto block_036A;

  block_0341:
    suspend;
    goto block_037F;

  block_036A:
    total = (1 + total);

  block_037F:
    goto block_0397;

  block_0382:
    total = (1 + total);

  block_0397:
    /* loopnext  */
    goto block_0306;

  block_039B:
    sx = (sx + ddx);
    sy = (sy + ddy);
    sz = (sz + ddz);
    wp = sx;
    local_03 = sy;
    local_01 = sz;
    if (Intrinsic002C(hover) != 0) goto block_0459;

  block_03E2:
    counter = 1;

  block_0405:
    if (counter <= total) goto block_0456;

  block_0410:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0405;

  block_0456:
    goto block_0587;

  block_0459:
    if Item.pop(0, 1, wp, hover) goto block_04C9;

  block_046E:
    counter = 1;

  block_0475:
    if (counter <= total) goto block_04C6;

  block_0480:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0475;

  block_04C6:
    goto block_0587;

  block_04C9:
    counter = 1;

  block_04D0:
    if (counter <= total) goto block_0518;

  block_04DB:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_04D0;

  block_0518:
    if (Intrinsic00BE(hover) & 16) goto block_0543;

  block_052A:
    /* bit_not  */
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E24;

  block_0543:
    sx = (sx - ddx);
    sy = (sy - ddy);
    sz = (sz - ddz);
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;

  block_0587:
    spawn class_0A0C_slot_32(pid, 1, 0x00000000);
    suspend;
    goto block_01D7;

  block_05B0:
    goto block_0E24;

  block_05B3:
    if ((b > a) && (b > c)) goto block_09F7;

  block_05C7:
    /* word_to_dword  */
    l1 = b;
    /* word_to_dword  */
    xfract = a;
    /* word_to_dword  */
    xfract = (xfract * 0x0FA0);
    xfract = (xfract / l1);
    /* word_to_dword  */
    xacc = 0;
    /* word_to_dword  */
    zfract = c;
    /* word_to_dword  */
    zfract = (zfract * 0x0FA0);
    zfract = (zfract / l1);
    /* word_to_dword  */
    zacc = 0;

  block_061B:
    if 1 goto block_09F4;

  block_0623:
    if ((Item.getStatus(hover) & 0x1000) != 0) goto block_0643;

  block_0639:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E24;

  block_0643:
    dx = (tx - sx);
    dy = (ty - sy);
    dz = (tz - sz);
    ddx = 0;
    ddy = 0;
    ddz = 0;
    if ((dy < 4) && (dy > -4)) goto block_0694;

  block_068A:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E24;

  block_0694:
    if dx goto block_06D8;

  block_069C:
    xacc = (xacc + xfract);
    /* word_to_dword  */
    /* gt_dword  */
    if 0x0FA0 goto block_06D8;

  block_06B3:
    /* word_to_dword  */
    xacc = (xacc - 0x0FA0);
    ddx = 4;
    if (dx < 0) goto block_06D8;

  block_06D1:
    ddx = -4;

  block_06D8:
    ddy = 4;
    if (dy < 0) goto block_06F1;

  block_06EA:
    ddy = -4;

  block_06F1:
    if dz goto block_0735;

  block_06F9:
    zacc = (zacc + zfract);
    /* word_to_dword  */
    /* gt_dword  */
    if 0x0FA0 goto block_0735;

  block_0710:
    /* word_to_dword  */
    zacc = (zacc - 0x0FA0);
    ddz = 4;
    if (dz < 0) goto block_0735;

  block_072E:
    ddz = -4;

  block_0735:
    total = 0;
    /* loopscr value_u8=0x24 */
    /* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */

  block_074A:
    if condition goto block_07DF;

  block_074D:
    if (Intrinsic0016(cargo) != 0x033A) goto block_07DB;

  block_0760:
    if (cargo < 0x00FF) goto block_07C6;

  block_076F:
    n = cargo;
    if Kernel.resetRef(n) goto block_07AE;

  block_0785:
    suspend;
    goto block_07C3;

  block_07AE:
    total = (1 + total);

  block_07C3:
    goto block_07DB;

  block_07C6:
    total = (1 + total);

  block_07DB:
    /* loopnext  */
    goto block_074A;

  block_07DF:
    sx = (sx + ddx);
    sy = (sy + ddy);
    sz = (sz + ddz);
    wp = sx;
    local_03 = sy;
    local_01 = sz;
    if (Intrinsic002C(hover) != 0) goto block_089D;

  block_0826:
    counter = 1;

  block_0849:
    if (counter <= total) goto block_089A;

  block_0854:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0849;

  block_089A:
    goto block_09CB;

  block_089D:
    if Item.pop(0, 1, wp, hover) goto block_090D;

  block_08B2:
    counter = 1;

  block_08B9:
    if (counter <= total) goto block_090A;

  block_08C4:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_08B9;

  block_090A:
    goto block_09CB;

  block_090D:
    counter = 1;

  block_0914:
    if (counter <= total) goto block_095C;

  block_091F:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0914;

  block_095C:
    if (Intrinsic00BE(hover) & 16) goto block_0987;

  block_096E:
    /* bit_not  */
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E24;

  block_0987:
    sx = (sx - ddx);
    sy = (sy - ddy);
    sz = (sz - ddz);
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;

  block_09CB:
    spawn class_0A0C_slot_32(pid, 1, 0x00000000);
    suspend;
    goto block_061B;

  block_09F4:
    goto block_0E24;

  block_09F7:
    /* word_to_dword  */
    l1 = c;
    /* word_to_dword  */
    xfract = a;
    /* word_to_dword  */
    xfract = (xfract * 0x0FA0);
    xfract = (xfract / l1);
    /* word_to_dword  */
    xacc = 0;
    /* word_to_dword  */
    yfract = b;
    /* word_to_dword  */
    yfract = (yfract * 0x0FA0);
    yfract = (yfract / l1);
    /* word_to_dword  */
    yacc = 0;

  block_0A4B:
    if 1 goto block_0E24;

  block_0A53:
    if ((Item.getStatus(hover) & 0x1000) != 0) goto block_0A73;

  block_0A69:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E24;

  block_0A73:
    dx = (tx - sx);
    dy = (ty - sy);
    dz = (tz - sz);
    ddx = 0;
    ddy = 0;
    ddz = 0;
    if ((dz < 4) && (dz > -4)) goto block_0AC4;

  block_0ABA:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E24;

  block_0AC4:
    if dx goto block_0B08;

  block_0ACC:
    xacc = (xacc + xfract);
    /* word_to_dword  */
    /* gt_dword  */
    if 0x0FA0 goto block_0B08;

  block_0AE3:
    /* word_to_dword  */
    xacc = (xacc - 0x0FA0);
    ddx = 4;
    if (dx < 0) goto block_0B08;

  block_0B01:
    ddx = -4;

  block_0B08:
    if dy goto block_0B4C;

  block_0B10:
    yacc = (yacc + yfract);
    /* word_to_dword  */
    /* gt_dword  */
    if 0x0FA0 goto block_0B4C;

  block_0B27:
    /* word_to_dword  */
    yacc = (yacc - 0x0FA0);
    ddy = 4;
    if (dy < 0) goto block_0B4C;

  block_0B45:
    ddy = -4;

  block_0B4C:
    ddz = 4;
    if (dz < 0) goto block_0B65;

  block_0B5E:
    ddz = -4;

  block_0B65:
    total = 0;
    /* loopscr value_u8=0x24 */
    /* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */

  block_0B7A:
    if condition goto block_0C0F;

  block_0B7D:
    if (Intrinsic0016(cargo) != 0x033A) goto block_0C0B;

  block_0B90:
    if (cargo < 0x00FF) goto block_0BF6;

  block_0B9F:
    n = cargo;
    if Kernel.resetRef(n) goto block_0BDE;

  block_0BB5:
    suspend;
    goto block_0BF3;

  block_0BDE:
    total = (1 + total);

  block_0BF3:
    goto block_0C0B;

  block_0BF6:
    total = (1 + total);

  block_0C0B:
    /* loopnext  */
    goto block_0B7A;

  block_0C0F:
    sx = (sx + ddx);
    sy = (sy + ddy);
    sz = (sz + ddz);
    wp = sx;
    local_03 = sy;
    local_01 = sz;
    if (Intrinsic002C(hover) != 0) goto block_0CCD;

  block_0C56:
    counter = 1;

  block_0C79:
    if (counter <= total) goto block_0CCA;

  block_0C84:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0C79;

  block_0CCA:
    goto block_0DFB;

  block_0CCD:
    if Item.pop(0, 1, wp, hover) goto block_0D3D;

  block_0CE2:
    counter = 1;

  block_0CE9:
    if (counter <= total) goto block_0D3A;

  block_0CF4:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0CE9;

  block_0D3A:
    goto block_0DFB;

  block_0D3D:
    counter = 1;

  block_0D44:
    if (counter <= total) goto block_0D8C;

  block_0D4F:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0D44;

  block_0D8C:
    if (Intrinsic00BE(hover) & 16) goto block_0DB7;

  block_0D9E:
    /* bit_not  */
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E24;

  block_0DB7:
    sx = (sx - ddx);
    sy = (sy - ddy);
    sz = (sz - ddz);
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;

  block_0DFB:
    spawn class_0A0C_slot_32(pid, 1, 0x00000000);
    suspend;
    goto block_0A4B;

  block_0E24:
    return;

}
