function spider_slot_20() /* entry=390 class_id=0x0A14 slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    spiderType, /* [BP+0Ah] type=0x69 */
    spider, /* [BP-02h] type=0x24 */
    target, /* [BP-04h] type=0x24 */
    dest, /* [BP-09h] type=0x24 */
    count, /* [BP-0Bh] type=0x69 */
    targetLoop; /* [BP-0Dh] type=0x69 */

  entry:
    set_info(1, *(arg_06));
    if (!spiderType) goto block_011B;

  block_0107:
    class_0A1E_slot_23(4, arg_06);
    goto block_03D4;

  block_011B:
    if (Item.getStatus(arg_06) & 0x1000) goto block_0134;

  block_012E:
    goto block_03D4;

  block_0134:
    class_0A1E_slot_23(0x1000, arg_06);
    targetLoop = spiderType;

  block_014A:
    if (targetLoop >= 10) goto block_015F;

  block_0155:
    targetLoop = (targetLoop - 10);
    goto block_014A;

  block_015F:
    suspend;
    if (Item.pop() != 0) goto block_018A;

  block_017D:
    target = Item.pop();
    goto block_0193;

  block_018A:
    target = global[0x003C];

  block_0193:
    if ((Item.getZ(target) > (Item.getZ(arg_06) + 16)) || (Item.getZ(target) < (Item.getZ(arg_06) - 16))) goto block_01F2;

  block_01C9:
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;
    goto block_0193;

  block_01F2:
    if ((Item.getStatus(arg_06) & 4) || (Item.getFrame(arg_06) > 0)) goto block_0237;

  block_0214:
    class_0A1E_slot_24(4, arg_06);
    class_0A1E_slot_24(0x1000, arg_06);
    goto block_03D4;

  block_0237:
    count = 0;

  block_028A:
    if (count <= 5) goto block_02D2;

  block_0292:
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    count = (1 + count);
    goto block_028A;

  block_02D2:
    count = 1;

  block_0302:
    if (count <= 9) goto block_034A;

  block_030A:
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    count = (1 + count);
    goto block_0302;

  block_034A:
    if (Item.getQHi(target, arg_06) != 0) goto block_0387;

  block_035E:
    spawn class_0A0C_slot_32(pid, 60, 0x00000000);
    suspend;
    goto block_034A;

  block_0387:
    spawn class_0A14_slot_21(pid, targetLoop, target, spider, spider);
    suspend;
    if (spiderType < 99) goto block_03D1;

  block_03BC:
    class_0A1E_slot_24(0x1000, arg_06);
    goto block_03D4;

  block_03D1:
    goto block_015F;

  block_03D4:
    return;

}
