;;-*-Lisp-*-
(in-package goal)

;; definition of type sunken-pipegame-button
(deftype sunken-pipegame-button (basebutton)
  ()
  :heap-base #x90
  :method-count-assert 32
  :size-assert         #x100
  :flag-assert         #x2000900100
  )

;; definition for method 3 of type sunken-pipegame-button
(defmethod inspect sunken-pipegame-button ((obj sunken-pipegame-button))
  (let ((t9-0 (method-of-type basebutton inspect)))
    (t9-0 obj)
    )
  obj
  )

;; definition of type sunken-pipegame-prize
(deftype sunken-pipegame-prize (structure)
  ((puzzle-delay            time-frame                       :offset-assert   0)
   (pipe-travel-time-to-far time-frame                       :offset-assert   8)
   (pipe-travel-time-to-jar time-frame                       :offset-assert  16)
   (actor-handle            handle                           :offset-assert  24)
   (jar-pos                 vector                   :inline :offset-assert  32)
   (far-pos                 vector                   :inline :offset-assert  48)
   (sucked-up-jar-part-pos  vector                   :inline :offset-assert  64)
   (sucked-up-far-part-pos  vector                   :inline :offset-assert  80)
   (blown-out-jar-part-pos  vector                   :inline :offset-assert  96)
   (blown-out-far-part-pos  vector                   :inline :offset-assert 112)
   (sucked-up-part          sparticle-launch-control         :offset-assert 128)
   (blown-out-part          sparticle-launch-control         :offset-assert 132)
   )
  :method-count-assert 9
  :size-assert         #x88
  :flag-assert         #x900000088
  )

;; definition for method 3 of type sunken-pipegame-prize
(defmethod inspect sunken-pipegame-prize ((obj sunken-pipegame-prize))
  (format #t "[~8x] ~A~%" obj 'sunken-pipegame-prize)
  (format #t "~Tpuzzle-delay: ~D~%" (-> obj puzzle-delay))
  (format #t "~Tpipe-travel-time-to-far: ~D~%" (-> obj pipe-travel-time-to-far))
  (format #t "~Tpipe-travel-time-to-jar: ~D~%" (-> obj pipe-travel-time-to-jar))
  (format #t "~Tactor-handle: ~D~%" (-> obj actor-handle))
  (format #t "~Tjar-pos: #<vector @ #x~X>~%" (-> obj jar-pos))
  (format #t "~Tfar-pos: #<vector @ #x~X>~%" (-> obj far-pos))
  (format #t "~Tsucked-up-jar-part-pos: #<vector @ #x~X>~%" (-> obj sucked-up-jar-part-pos))
  (format #t "~Tsucked-up-far-part-pos: #<vector @ #x~X>~%" (-> obj sucked-up-far-part-pos))
  (format #t "~Tblown-out-jar-part-pos: #<vector @ #x~X>~%" (-> obj blown-out-jar-part-pos))
  (format #t "~Tblown-out-far-part-pos: #<vector @ #x~X>~%" (-> obj blown-out-far-part-pos))
  (format #t "~Tsucked-up-part: ~A~%" (-> obj sucked-up-part))
  (format #t "~Tblown-out-part: ~A~%" (-> obj blown-out-part))
  obj
  )

;; definition of type sunken-pipegame
(deftype sunken-pipegame (process-drawable)
  ((abort-audio-if-beaten? symbol                                     :offset-assert 176)
   (challenges-mask        uint32                                     :offset-assert 180)
   (challenge              int32                                      :offset-assert 184)
   (ticker                 ticky                            :inline   :offset-assert 192)
   (button                 (pointer sunken-pipegame-button) 3         :offset-assert 224)
   (prize                  sunken-pipegame-prize            3 :inline :offset-assert 240)
   )
  :heap-base #x230
  :method-count-assert 23
  :size-assert         #x2a0
  :flag-assert         #x17023002a0
  (:methods
    (dummy-20 (_type_) uint 20)
    (dummy-21 (_type_ symbol) symbol 21)
    (dummy-22 (_type_ symbol) none 22)
    )
  (:states
    sunken-pipegame-beat-challenge
    sunken-pipegame-begin-play
    sunken-pipegame-end-play
    sunken-pipegame-idle
    sunken-pipegame-start-up
    )
  )

;; definition for method 3 of type sunken-pipegame
(defmethod inspect sunken-pipegame ((obj sunken-pipegame))
  (let ((t9-0 (method-of-type process-drawable inspect)))
    (t9-0 obj)
    )
  (format #t "~T~Tabort-audio-if-beaten?: ~A~%" (-> obj abort-audio-if-beaten?))
  (format #t "~T~Tchallenges-mask: ~D~%" (-> obj challenges-mask))
  (format #t "~T~Tchallenge: ~D~%" (-> obj challenge))
  (format #t "~T~Tticker: #<ticky @ #x~X>~%" (-> obj ticker))
  (format #t "~T~Tbutton[3] @ #x~X~%" (-> obj button))
  (format #t "~T~Tprize[3] @ #x~X~%" (-> obj prize))
  obj
  )

;; failed to figure out what this is:
(defpartgroup group-pipegame-jar-suck0
  :id 448
  :flags (use-local-clock)
  :bounds (static-bspherem 0 0 0 8)
  :parts ((sp-item 1741) (sp-item 1742) (sp-item 1743) (sp-item 1744 :flags (is-3d)))
  )

;; failed to figure out what this is:
(defpart 1741
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 10.0)
    (sp-flt spt-y (meters 6))
    (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0)
    (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0)
    (sp-rnd-flt spt-r 64.0 128.0 1.0)
    (sp-rnd-flt spt-g 0.0 32.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-flt spt-a 0.0)
    (sp-flt spt-scalevel-y (meters 0.006666667))
    (sp-flt spt-fade-a 1.4222223)
    (sp-flt spt-accel-y 13.653334)
    (sp-int spt-timer 120)
    (sp-cpuinfo-flags bit2)
    (sp-int-plain-rnd spt-next-time 45 44 1)
    (sp-launcher-by-id spt-next-launcher 1745)
    (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
    (sp-rnd-flt spt-conerot-radius (meters 0) (meters -10) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 1745
  :init-specs ((sp-flt spt-fade-a 0.0))
  )

;; failed to figure out what this is:
(defpart 1742
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 5.0)
    (sp-rnd-flt spt-y (meters 0) (meters 8) 1.0)
    (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-rnd-flt spt-r 128.0 64.0 1.0)
    (sp-rnd-flt spt-g 128.0 64.0 1.0)
    (sp-rnd-flt spt-b 128.0 64.0 1.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -3.657143)
    (sp-int spt-timer 30)
    (sp-cpuinfo-flags bit2 bit3)
    (sp-flt spt-conerot-x (degrees 90.0))
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
    (sp-rnd-flt spt-conerot-radius (meters 0) (meters 2.5) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 1743
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 4))
    (sp-rnd-flt spt-scale-x (meters 7) (meters 1) 1.0)
    (sp-rnd-flt spt-scale-y (meters 7) (meters 3) 1.0)
    (sp-rnd-flt spt-r 128.0 128.0 1.0)
    (sp-rnd-flt spt-g 0.0 64.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpart 1744
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 0.3))
    (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-r 128.0 128.0 1.0)
    (sp-rnd-flt spt-g 0.0 64.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpartgroup group-pipegame-jar-suck1
  :id 449
  :flags (use-local-clock)
  :bounds (static-bspherem 0 0 0 8)
  :parts ((sp-item 1746) (sp-item 1742) (sp-item 1747) (sp-item 1748 :flags (is-3d)))
  )

;; failed to figure out what this is:
(defpart 1746
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 10.0)
    (sp-flt spt-y (meters 6))
    (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0)
    (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0)
    (sp-rnd-flt spt-r 0.0 64.0 1.0)
    (sp-rnd-flt spt-g 64.0 128.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-flt spt-a 0.0)
    (sp-flt spt-scalevel-y (meters 0.006666667))
    (sp-flt spt-fade-a 1.4222223)
    (sp-flt spt-accel-y 13.653334)
    (sp-int spt-timer 120)
    (sp-cpuinfo-flags bit2)
    (sp-int-plain-rnd spt-next-time 45 44 1)
    (sp-launcher-by-id spt-next-launcher 1745)
    (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
    (sp-rnd-flt spt-conerot-radius (meters 0) (meters -10) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 1747
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 4))
    (sp-rnd-flt spt-scale-x (meters 7) (meters 1) 1.0)
    (sp-rnd-flt spt-scale-y (meters 7) (meters 3) 1.0)
    (sp-rnd-flt spt-r 0.0 64.0 1.0)
    (sp-rnd-flt spt-g 128.0 128.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpart 1748
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 0.3))
    (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-r 0.0 64.0 1.0)
    (sp-rnd-flt spt-g 128.0 128.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpartgroup group-pipegame-jar-suck2
  :id 450
  :flags (use-local-clock)
  :bounds (static-bspherem 0 0 0 8)
  :parts ((sp-item 1749) (sp-item 1742) (sp-item 1750) (sp-item 1751 :flags (is-3d)))
  )

;; failed to figure out what this is:
(defpart 1749
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 10.0)
    (sp-flt spt-y (meters 6))
    (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0)
    (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0)
    (sp-flt spt-r 0.0)
    (sp-rnd-flt spt-g 0.0 64.0 1.0)
    (sp-rnd-flt spt-b 64.0 128.0 1.0)
    (sp-flt spt-a 0.0)
    (sp-flt spt-scalevel-y (meters 0.006666667))
    (sp-flt spt-fade-a 1.4222223)
    (sp-flt spt-accel-y 13.653334)
    (sp-int spt-timer 120)
    (sp-cpuinfo-flags bit2)
    (sp-int-plain-rnd spt-next-time 45 44 1)
    (sp-launcher-by-id spt-next-launcher 1745)
    (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
    (sp-rnd-flt spt-conerot-radius (meters 0) (meters -10) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 1750
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 4))
    (sp-rnd-flt spt-scale-x (meters 7) (meters 1) 1.0)
    (sp-rnd-flt spt-scale-y (meters 7) (meters 3) 1.0)
    (sp-flt spt-r 0.0)
    (sp-rnd-flt spt-g 0.0 64.0 1.0)
    (sp-rnd-flt spt-b 128.0 128.0 1.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpart 1751
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 0.3))
    (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0)
    (sp-flt spt-r 0.0)
    (sp-rnd-flt spt-g 0.0 64.0 1.0)
    (sp-rnd-flt spt-b 128.0 128.0 1.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpartgroup group-pipegame-blow0
  :id 451
  :flags (use-local-clock)
  :bounds (static-bspherem 0 0 0 8)
  :parts ((sp-item 1752) (sp-item 1753) (sp-item 1754) (sp-item 1755 :flags (is-3d)))
  )

;; failed to figure out what this is:
(defpart 1752
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 4.0)
    (sp-flt spt-y (meters 0))
    (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0)
    (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0)
    (sp-rnd-flt spt-r 64.0 128.0 1.0)
    (sp-rnd-flt spt-g 0.0 32.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-vel-y (meters -0.033333335))
    (sp-flt spt-scalevel-y (meters 0.006666667))
    (sp-flt spt-accel-y -27.306667)
    (sp-int spt-timer 120)
    (sp-cpuinfo-flags bit2)
    (sp-int-plain-rnd spt-next-time 45 44 1)
    (sp-launcher-by-id spt-next-launcher 1756)
    (sp-rnd-flt spt-conerot-x (degrees 150.0) (degrees 30.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
    (sp-flt spt-conerot-radius (meters 0))
    )
  )

;; failed to figure out what this is:
(defpart 1756
  :init-specs ((sp-flt spt-fade-a -1.4222223))
  )

;; failed to figure out what this is:
(defpart 1753
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 5.0)
    (sp-rnd-flt spt-y (meters 0) (meters -8) 1.0)
    (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-rnd-flt spt-r 128.0 64.0 1.0)
    (sp-rnd-flt spt-g 128.0 64.0 1.0)
    (sp-rnd-flt spt-b 128.0 64.0 1.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -3.657143)
    (sp-int spt-timer 30)
    (sp-cpuinfo-flags bit2 bit3)
    (sp-flt spt-conerot-x (degrees 90.0))
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
    (sp-rnd-flt spt-conerot-radius (meters 0) (meters 2.5) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 1754
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters -3.5))
    (sp-rnd-flt spt-scale-x (meters 3) (meters 0.5) 1.0)
    (sp-flt spt-rot-z (degrees 180.0))
    (sp-rnd-flt spt-scale-y (meters 13) (meters 3) 1.0)
    (sp-rnd-flt spt-r 128.0 128.0 1.0)
    (sp-rnd-flt spt-g 0.0 64.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpart 1755
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 0.3))
    (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-r 128.0 128.0 1.0)
    (sp-rnd-flt spt-g 0.0 64.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpartgroup group-pipegame-blow1
  :id 452
  :flags (use-local-clock)
  :bounds (static-bspherem 0 0 0 8)
  :parts ((sp-item 1757) (sp-item 1753) (sp-item 1758) (sp-item 1759 :flags (is-3d)))
  )

;; failed to figure out what this is:
(defpart 1757
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 4.0)
    (sp-flt spt-y (meters 0))
    (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0)
    (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0)
    (sp-rnd-flt spt-r 0.0 32.0 1.0)
    (sp-rnd-flt spt-g 64.0 128.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-vel-y (meters -0.033333335))
    (sp-flt spt-scalevel-y (meters 0.006666667))
    (sp-flt spt-accel-y -27.306667)
    (sp-int spt-timer 120)
    (sp-cpuinfo-flags bit2)
    (sp-int-plain-rnd spt-next-time 45 44 1)
    (sp-launcher-by-id spt-next-launcher 1756)
    (sp-rnd-flt spt-conerot-x (degrees 150.0) (degrees 30.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
    (sp-flt spt-conerot-radius (meters 0))
    )
  )

;; failed to figure out what this is:
(defpart 1758
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters -3.5))
    (sp-rnd-flt spt-scale-x (meters 3) (meters 0.5) 1.0)
    (sp-flt spt-rot-z (degrees 180.0))
    (sp-rnd-flt spt-scale-y (meters 13) (meters 3) 1.0)
    (sp-rnd-flt spt-r 0.0 64.0 1.0)
    (sp-rnd-flt spt-g 128.0 128.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpart 1759
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 0.3))
    (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-r 0.0 64.0 1.0)
    (sp-rnd-flt spt-g 128.0 128.0 1.0)
    (sp-flt spt-b 0.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpartgroup group-pipegame-blow2
  :id 453
  :flags (use-local-clock)
  :bounds (static-bspherem 0 0 0 8)
  :parts ((sp-item 1760) (sp-item 1753) (sp-item 1761) (sp-item 1762 :flags (is-3d)))
  )

;; failed to figure out what this is:
(defpart 1760
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 4.0)
    (sp-flt spt-y (meters 0))
    (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0)
    (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0)
    (sp-flt spt-r 0.0)
    (sp-rnd-flt spt-g 0.0 32.0 1.0)
    (sp-rnd-flt spt-b 64.0 128.0 1.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-vel-y (meters -0.033333335))
    (sp-flt spt-scalevel-y (meters 0.006666667))
    (sp-flt spt-accel-y -27.306667)
    (sp-int spt-timer 120)
    (sp-cpuinfo-flags bit2)
    (sp-int-plain-rnd spt-next-time 45 44 1)
    (sp-launcher-by-id spt-next-launcher 1756)
    (sp-rnd-flt spt-conerot-x (degrees 150.0) (degrees 30.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
    (sp-flt spt-conerot-radius (meters 0))
    )
  )

;; failed to figure out what this is:
(defpart 1761
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters -3.5))
    (sp-rnd-flt spt-scale-x (meters 3) (meters 0.5) 1.0)
    (sp-flt spt-rot-z (degrees 180.0))
    (sp-rnd-flt spt-scale-y (meters 13) (meters 3) 1.0)
    (sp-flt spt-r 0.0)
    (sp-rnd-flt spt-g 0.0 64.0 1.0)
    (sp-rnd-flt spt-b 128.0 128.0 1.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; failed to figure out what this is:
(defpart 1762
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 0.3))
    (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0)
    (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0)
    (sp-flt spt-r 0.0)
    (sp-rnd-flt spt-g 0.0 64.0 1.0)
    (sp-rnd-flt spt-b 128.0 128.0 1.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-flt spt-fade-a -8.533334)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3)
    )
  )

;; definition for function sunken-pipegame-button-init-by-other
(defbehavior sunken-pipegame-button-init-by-other sunken-pipegame-button ((arg0 vector) (arg1 quaternion) (arg2 entity-actor) (arg3 symbol))
  (basebutton-init-by-other (the-as entity-actor #f) arg0 arg1 arg2 arg3 0.0)
  (none)
  )

;; definition for method 20 of type sunken-pipegame
;; INFO: Return type mismatch int vs uint.
(defmethod dummy-20 sunken-pipegame ((obj sunken-pipegame))
  (let ((gp-0 0))
    (if (task-complete? *game-info* (game-task sunken-pipe))
        (+! gp-0 1)
        )
    (if (got-buzzer? *game-info* (game-task sunken-buzzer) 0)
        (+! gp-0 2)
        )
    (if (got-buzzer? *game-info* (game-task sunken-buzzer) 1)
        (+! gp-0 4)
        )
    (the-as uint gp-0)
    )
  )

;; failed to figure out what this is:
(defstate sunken-pipegame-start-up (sunken-pipegame)
  :code (behavior ()
    (suspend)
    (send-event (handle->process (-> self prize 0 actor-handle)) 'anim #f)
    (go sunken-pipegame-idle)
    (none)
    )
  )

;; failed to figure out what this is:
(defstate sunken-pipegame-idle (sunken-pipegame)
  :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
    (case arg2
      (('trigger)
       (when (= (-> arg0 type) sunken-pipegame-button)
         (set! (-> self challenge) (-> (the-as sunken-pipegame-button arg0) button-id))
         (go sunken-pipegame-begin-play)
         )
       )
      )
    )
  :code (behavior ()
    (loop
      (suspend)
      )
    (none)
    )
  )

;; failed to figure out what this is:
(defstate sunken-pipegame-begin-play (sunken-pipegame)
  :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
    (case arg2
      (('notify)
       (case (-> arg0 type)
         ((fuel-cell buzzer)
          (go sunken-pipegame-beat-challenge)
          )
         )
       )
      )
    )
  :enter (behavior ()
    (dummy-21 self #f)
    (set! (-> self abort-audio-if-beaten?) #f)
    (dotimes (gp-0 3)
      (let ((v1-4 (-> self button gp-0)))
        (if (and (!= gp-0 (-> self challenge)) (zero? (logand (ash 1 gp-0) (-> self challenges-mask))))
            (send-event (ppointer->process v1-4) 'trigger)
            )
        )
      )
    (none)
    )
  :code (behavior ()
    (local-vars (v1-112 symbol))
    (let ((gp-0 (-> *display* base-frame-counter)))
      (if (not (handle->process (-> self prize (-> self challenge) actor-handle)))
          (go sunken-pipegame-end-play)
          )
      (kill-current-level-hint '(camera) '() 'exit)
      (let ((v1-10 (-> self challenge)))
        (cond
          ((zero? v1-10)
           (ambient-hint-spawn "gamcam27" (the-as vector #f) *entity-pool* 'camera)
           (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-left" 0 #f '() :to self)
           )
          ((= v1-10 1)
           (ambient-hint-spawn "gamcam25" (the-as vector #f) *entity-pool* 'camera)
           (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-middle" 0 #f '() :to self)
           )
          ((= v1-10 2)
           (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera)
           (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-right" 0 #f '() :to self)
           )
          )
        )
      (set! (-> self state-time) (-> *display* base-frame-counter))
      (let ((f30-0 0.0))
        (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 2))
          (let ((s5-3 (-> self prize (-> self challenge))))
            (spawn (-> s5-3 sucked-up-part) (-> s5-3 sucked-up-jar-part-pos))
            (spawn (-> s5-3 blown-out-part) (-> s5-3 blown-out-far-part-pos))
            )
          (+! f30-0 (* 1024.0 (-> *display* seconds-per-frame)))
          (let ((s5-4 (new 'stack-no-clear 'vector)))
            (set! (-> s5-4 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge))))))
            (let* ((f28-0 (-> s5-4 y))
                   (v1-39 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
                   (v1-40 (the-as number (logior #x3f800000 v1-39)))
                   )
              (set! (-> s5-4 y) (+ f28-0 (* (+ -1.0 (the-as float v1-40)) f30-0)))
              )
            (let ((a1-18 (new 'stack-no-clear 'event-message-block)))
              (set! (-> a1-18 from) self)
              (set! (-> a1-18 num-params) 1)
              (set! (-> a1-18 message) 'trans)
              (set! (-> a1-18 param 0) (the-as uint s5-4))
              (let ((t9-17 send-event-function)
                    (a0-32 (handle->process (-> self prize (-> self challenge) actor-handle)))
                    )
                (t9-17 a0-32 a1-18)
                )
              )
            )
          (suspend)
          )
        (let ((f28-1 0.0))
          (until (= f28-1 20480.0)
            (let ((s5-5 (-> self prize (-> self challenge))))
              (spawn (-> s5-5 sucked-up-part) (-> s5-5 sucked-up-jar-part-pos))
              (spawn (-> s5-5 blown-out-part) (-> s5-5 blown-out-far-part-pos))
              (set! f28-1 (seek f28-1 20480.0 (* 81920.0 (-> *display* seconds-per-frame))))
              (let ((s4-0 (new 'stack-no-clear 'vector)))
                (set! (-> s4-0 quad) (-> s5-5 jar-pos quad))
                (let* ((f26-0 (-> s4-0 y))
                       (v1-65 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
                       (v1-66 (the-as number (logior #x3f800000 v1-65)))
                       )
                  (set! (-> s4-0 y) (+ f26-0 (+ (* (+ -1.0 (the-as float v1-66)) f30-0) f28-1)))
                  )
                (let ((a1-22 (new 'stack-no-clear 'event-message-block)))
                  (set! (-> a1-22 from) self)
                  (set! (-> a1-22 num-params) 1)
                  (set! (-> a1-22 message) 'trans)
                  (set! (-> a1-22 param 0) (the-as uint s4-0))
                  (let ((t9-22 send-event-function)
                        (a0-45 (handle->process (-> s5-5 actor-handle)))
                        )
                    (t9-22 a0-45 a1-22)
                    )
                  )
                )
              )
            (suspend)
            )
          )
        )
      (until (>= (- (-> *display* base-frame-counter) gp-0) (-> self prize (-> self challenge) pipe-travel-time-to-far))
        (let ((s5-6 (-> self prize (-> self challenge))))
          (spawn (-> s5-6 sucked-up-part) (-> s5-6 sucked-up-jar-part-pos))
          (spawn (-> s5-6 blown-out-part) (-> s5-6 blown-out-far-part-pos))
          )
        (suspend)
        )
      )
    (dummy-22 self #t)
    (let ((f30-1 20480.0))
      (until (= f30-1 0.0)
        (set! f30-1 (seek f30-1 0.0 (* 81920.0 (-> *display* seconds-per-frame))))
        (let ((gp-1 (-> self prize (-> self challenge))))
          (spawn (-> gp-1 sucked-up-part) (-> gp-1 sucked-up-jar-part-pos))
          (spawn (-> gp-1 blown-out-part) (-> gp-1 blown-out-far-part-pos))
          (let ((v1-96 (new 'stack-no-clear 'vector)))
            (set! (-> v1-96 quad) (-> gp-1 far-pos quad))
            (+! (-> v1-96 y) f30-1)
            (let ((a1-32 (new 'stack-no-clear 'event-message-block)))
              (set! (-> a1-32 from) self)
              (set! (-> a1-32 num-params) 1)
              (set! (-> a1-32 message) 'trans)
              (set! (-> a1-32 param 0) (the-as uint v1-96))
              (let ((t9-29 send-event-function)
                    (a0-64 (handle->process (-> gp-1 actor-handle)))
                    )
                (t9-29 a0-64 a1-32)
                )
              )
            )
          )
        (suspend)
        )
      )
    (if (not (handle->process (-> self prize (-> self challenge) actor-handle)))
        (go sunken-pipegame-end-play)
        )
    (until v1-112
      (suspend)
      (set! v1-112 (or (not *target*) (zero? (logand (-> *target* state-flags) (state-flags grabbed)))))
      )
    (set! (-> self state-time) (-> *display* base-frame-counter))
    (sleep (-> self ticker) (-> self prize (-> self challenge) puzzle-delay))
    (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.5))
      (completed? (-> self ticker))
      (suspend)
      )
    (level-hint-spawn
      (game-text-id sunken-pipegame-hint)
      "sksp0123"
      (the-as entity #f)
      *entity-pool*
      (game-task none)
      )
    (close-specific-task! (-> self entity extra perm task) (task-status need-hint))
    (until (completed? (-> self ticker))
      (suspend)
      )
    (kill-current-level-hint '(camera) '() 'exit)
    (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera)
    (set! (-> self abort-audio-if-beaten?) #t)
    (set! (-> self state-time) (-> *display* base-frame-counter))
    (let ((f30-2 0.0))
      (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 2))
        (let ((gp-2 (-> self prize (-> self challenge))))
          (spawn (-> gp-2 sucked-up-part) (-> gp-2 sucked-up-far-part-pos))
          (spawn (-> gp-2 blown-out-part) (-> gp-2 blown-out-jar-part-pos))
          (+! f30-2 (* 1024.0 (-> *display* seconds-per-frame)))
          (let ((s5-7 (new 'stack-no-clear 'vector)))
            (set! (-> s5-7 quad) (-> gp-2 far-pos quad))
            (let* ((f28-2 (-> s5-7 y))
                   (v1-146 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
                   (v1-147 (the-as number (logior #x3f800000 v1-146)))
                   )
              (set! (-> s5-7 y) (+ f28-2 (* (+ -1.0 (the-as float v1-147)) f30-2)))
              )
            (let ((a1-42 (new 'stack-no-clear 'event-message-block)))
              (set! (-> a1-42 from) self)
              (set! (-> a1-42 num-params) 1)
              (set! (-> a1-42 message) 'trans)
              (set! (-> a1-42 param 0) (the-as uint s5-7))
              (let ((t9-41 send-event-function)
                    (a0-91 (handle->process (-> gp-2 actor-handle)))
                    )
                (t9-41 a0-91 a1-42)
                )
              )
            )
          )
        (suspend)
        )
      (let ((f28-3 0.0))
        (until (= f28-3 20480.0)
          (let ((gp-3 (-> self prize (-> self challenge))))
            (spawn (-> gp-3 sucked-up-part) (-> gp-3 sucked-up-far-part-pos))
            (spawn (-> gp-3 blown-out-part) (-> gp-3 blown-out-jar-part-pos))
            (set! f28-3 (seek f28-3 20480.0 (* 81920.0 (-> *display* seconds-per-frame))))
            (let ((s5-8 (new 'stack-no-clear 'vector)))
              (set! (-> s5-8 quad) (-> gp-3 far-pos quad))
              (let* ((f26-1 (-> s5-8 y))
                     (v1-169 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
                     (v1-170 (the-as number (logior #x3f800000 v1-169)))
                     )
                (set! (-> s5-8 y) (+ f26-1 (+ (* (+ -1.0 (the-as float v1-170)) f30-2) f28-3)))
                )
              (let ((a1-46 (new 'stack-no-clear 'event-message-block)))
                (set! (-> a1-46 from) self)
                (set! (-> a1-46 num-params) 1)
                (set! (-> a1-46 message) 'trans)
                (set! (-> a1-46 param 0) (the-as uint s5-8))
                (let ((t9-46 send-event-function)
                      (a0-104 (handle->process (-> gp-3 actor-handle)))
                      )
                  (t9-46 a0-104 a1-46)
                  )
                )
              )
            )
          (suspend)
          )
        )
      )
    (dummy-22 self #f)
    (set! (-> self abort-audio-if-beaten?) #f)
    (let ((v1-184 (-> self prize (-> self challenge)))
          (a0-109 (new 'stack-no-clear 'vector))
          )
      (set! (-> a0-109 quad) (-> v1-184 jar-pos quad))
      (set! (-> a0-109 y) (+ 40960.0 (-> a0-109 y)))
      (send-event (handle->process (-> v1-184 actor-handle)) 'trans a0-109)
      )
    (set! (-> self state-time) (-> *display* base-frame-counter))
    (until (>= (- (-> *display* base-frame-counter) (-> self state-time))
               (-> self prize (-> self challenge) pipe-travel-time-to-jar)
               )
      (let ((gp-4 (-> self prize (-> self challenge))))
        (spawn (-> gp-4 sucked-up-part) (-> gp-4 sucked-up-far-part-pos))
        (spawn (-> gp-4 blown-out-part) (-> gp-4 blown-out-jar-part-pos))
        )
      (suspend)
      )
    (let ((f30-3 20480.0))
      (until (= f30-3 0.0)
        (set! f30-3 (seek f30-3 0.0 (* 40960.0 (-> *display* seconds-per-frame))))
        (let ((v1-203 (new 'stack-no-clear 'vector)))
          (set! (-> v1-203 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge))))))
          (+! (-> v1-203 y) f30-3)
          (let ((a1-57 (new 'stack-no-clear 'event-message-block)))
            (set! (-> a1-57 from) self)
            (set! (-> a1-57 num-params) 1)
            (set! (-> a1-57 message) 'trans)
            (set! (-> a1-57 param 0) (the-as uint v1-203))
            (let ((t9-52 send-event-function)
                  (a0-128 (handle->process (-> self prize (-> self challenge) actor-handle)))
                  )
              (t9-52 a0-128 a1-57)
              )
            )
          )
        (suspend)
        )
      )
    (set! (-> self state-time) (-> *display* base-frame-counter))
    (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1.5))
      (suspend)
      )
    (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger)
    (go sunken-pipegame-end-play)
    (none)
    )
  )

;; failed to figure out what this is:
(defstate sunken-pipegame-beat-challenge (sunken-pipegame)
  :code (behavior ()
    (logior! (-> self challenges-mask) (ash 1 (-> self challenge)))
    (if (-> self abort-audio-if-beaten?)
        (kill-current-level-hint '(camera) '() 'exit)
        )
    (go sunken-pipegame-end-play)
    (none)
    )
  )

;; failed to figure out what this is:
(defstate sunken-pipegame-end-play (sunken-pipegame)
  :code (behavior ()
    (local-vars (v1-3 symbol))
    (dummy-21 self #t)
    (set! (-> self abort-audio-if-beaten?) #f)
    (until v1-3
      (suspend)
      (set! v1-3 (or (not *target*) (zero? (logand (-> *target* state-flags) (state-flags grabbed)))))
      )
    (if (not (handle->process (-> self prize (-> self challenge) actor-handle)))
        (logior! (-> self challenges-mask) (ash 1 (-> self challenge)))
        )
    (set! (-> self challenge) -1)
    (dotimes (gp-0 3)
      (let ((v1-18 (-> self button gp-0)))
        (if (zero? (logand (ash 1 gp-0) (-> self challenges-mask)))
            (send-event (ppointer->process v1-18) 'untrigger)
            )
        )
      )
    (go sunken-pipegame-idle)
    (none)
    )
  )

;; definition for method 22 of type sunken-pipegame
(defmethod dummy-22 sunken-pipegame ((obj sunken-pipegame) (arg0 symbol))
  (let* ((v1-0 (-> obj challenge))
         (a2-0 v1-0)
         )
    (cond
      ((zero? a2-0)
       (let ((v1-5 (handle->process (-> obj prize v1-0 actor-handle))))
         (when v1-5
           (if arg0
               (restore-collide-with-as (-> (the-as collectable v1-5) root-override))
               (clear-collide-with-as (-> (the-as collectable v1-5) root-override))
               )
           )
         )
       )
      ((or (= a2-0 1) (= a2-0 2))
       (let ((v1-13 (handle->process (-> obj prize v1-0 actor-handle))))
         (when v1-13
           (if arg0
               (restore-collide-with-as (-> (the-as collectable v1-13) root-override))
               (clear-collide-with-as (-> (the-as collectable v1-13) root-override))
               )
           )
         )
       )
      )
    )
  (none)
  )

;; definition for method 21 of type sunken-pipegame
(defmethod dummy-21 sunken-pipegame ((obj sunken-pipegame) (arg0 symbol))
  (if arg0
      (logior! (-> obj mask) (process-mask actor-pause))
      (logclear! (-> obj mask) (process-mask actor-pause))
      )
  (let ((v1-4 (-> obj child)))
    (while v1-4
      (if arg0
          (logior! (-> v1-4 0 mask) (process-mask actor-pause))
          (logclear! (-> v1-4 0 mask) (process-mask actor-pause))
          )
      (set! v1-4 (-> v1-4 0 brother))
      )
    )
  #f
  )

;; definition for method 10 of type sunken-pipegame
(defmethod deactivate sunken-pipegame ((obj sunken-pipegame))
  (dotimes (s5-0 3)
    (let ((s4-0 (-> obj prize s5-0)))
      (if (nonzero? (-> s4-0 sucked-up-part))
          (kill-and-free-particles (-> s4-0 sucked-up-part))
          )
      (if (nonzero? (-> s4-0 blown-out-part))
          (kill-and-free-particles (-> s4-0 blown-out-part))
          )
      )
    )
  ((method-of-type process-drawable deactivate) obj)
  (none)
  )

;; definition for method 7 of type sunken-pipegame
;; INFO: Return type mismatch process-drawable vs sunken-pipegame.
(defmethod relocate sunken-pipegame ((obj sunken-pipegame) (arg0 int))
  (dotimes (v1-0 3)
    (let ((a0-4 (-> obj prize v1-0)))
      (when (nonzero? (-> a0-4 sucked-up-part))
        (if (nonzero? (-> a0-4 sucked-up-part))
            (&+! (-> a0-4 sucked-up-part) arg0)
            )
        )
      (when (nonzero? (-> a0-4 blown-out-part))
        (if (nonzero? (-> a0-4 blown-out-part))
            (&+! (-> a0-4 blown-out-part) arg0)
            )
        )
      )
    )
  (the-as
    sunken-pipegame
    ((the-as (function process-drawable int process-drawable) (find-parent-method sunken-pipegame 7)) obj arg0)
    )
  )

;; definition for method 11 of type sunken-pipegame
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod init-from-entity! sunken-pipegame ((obj sunken-pipegame) (arg0 entity-actor))
  (set! (-> obj abort-audio-if-beaten?) #f)
  (stack-size-set! (-> obj main-thread) 512)
  (set! (-> obj challenge) -1)
  (dotimes (v1-3 3)
    (set! (-> obj prize v1-3 actor-handle) (the-as handle #f))
    )
  (set! (-> obj root) (new 'process 'trsqv))
  (process-drawable-from-entity! obj arg0)
  (set! (-> obj path) (new 'process 'path-control obj 'path 0.0))
  (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text))
  (set! (-> obj challenges-mask) (dummy-20 obj))
  (let ((s4-0 (new 'stack-no-clear 'vector))
        (s3-0 (new 'stack-no-clear 'quaternion))
        )
    (quaternion-identity! s3-0)
    (dotimes (s2-0 3)
      (let* ((s0-0 (-> obj prize s2-0))
             (v1-17 (ash 1 s2-0))
             (s1-1 (logtest? v1-17 (-> obj challenges-mask)))
             )
        (eval-path-curve-div! (-> obj path) (-> s0-0 jar-pos) (the float (* s2-0 2)) 'interp)
        (eval-path-curve-div! (-> obj path) (-> s0-0 far-pos) (the float (+ (* s2-0 2) 1)) 'interp)
        (set! (-> s0-0 sucked-up-jar-part-pos quad) (-> s0-0 jar-pos quad))
        (set! (-> s0-0 sucked-up-far-part-pos quad) (-> s0-0 far-pos quad))
        (set! (-> s0-0 blown-out-jar-part-pos quad) (-> s0-0 jar-pos quad))
        (set! (-> s0-0 blown-out-jar-part-pos y) (+ 24576.0 (-> s0-0 blown-out-jar-part-pos y)))
        (set! (-> s0-0 blown-out-far-part-pos quad) (-> s0-0 far-pos quad))
        (set! (-> s0-0 blown-out-far-part-pos y) (+ 28672.0 (-> s0-0 blown-out-far-part-pos y)))
        (let ((v1-30 s2-0))
          (cond
            ((zero? v1-30)
             (set! (-> s0-0 puzzle-delay) (seconds 25))
             (set! (-> s0-0 pipe-travel-time-to-far) (seconds 8.5))
             (set! (-> s0-0 pipe-travel-time-to-jar) (seconds 2.5))
             (set-vector! s4-0 -30720.0 1146.88 5120.0 1.0)
             (set! (-> s0-0 sucked-up-part) (create-launch-control (-> *part-group-id-table* 448) obj))
             (set! (-> s0-0 blown-out-part) (create-launch-control (-> *part-group-id-table* 451) obj))
             (set! (-> s0-0 jar-pos y) (+ 11673.6 (-> s0-0 jar-pos y)))
             (set! (-> s0-0 far-pos y) (+ 11673.6 (-> s0-0 far-pos y)))
             (when (not s1-1)
               (set! (-> s0-0 actor-handle)
                     (ppointer->handle
                       (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type fuel-cell) 45.0 #f obj (the-as fact-info #f))
                       )
                     )
               (let ((a1-10 (handle->process (-> s0-0 actor-handle))))
                 (if a1-10
                     (clear-collide-with-as (-> (the-as collectable a1-10) root-override))
                     )
                 )
               )
             )
            ((= v1-30 1)
             (set! (-> s0-0 puzzle-delay) (seconds 15))
             (set! (-> s0-0 pipe-travel-time-to-far) (seconds 5.5))
             (set! (-> s0-0 pipe-travel-time-to-jar) (seconds 2.5))
             (set-vector! s4-0 0.0 1146.88 5120.0 1.0)
             (set! (-> s0-0 sucked-up-part) (create-launch-control (-> *part-group-id-table* 449) obj))
             (set! (-> s0-0 blown-out-part) (create-launch-control (-> *part-group-id-table* 452) obj))
             (set! (-> s0-0 jar-pos y) (+ 7168.0 (-> s0-0 jar-pos y)))
             (set! (-> s0-0 far-pos y) (+ 7168.0 (-> s0-0 far-pos y)))
             (set! (-> s0-0 blown-out-far-part-pos y) (+ 4096.0 (-> s0-0 blown-out-far-part-pos y)))
             (when (not s1-1)
               (set! (-> s0-0 actor-handle)
                     (ppointer->handle
                       (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 49.0 #f obj (the-as fact-info #f))
                       )
                     )
               (let ((s0-1 (handle->process (-> s0-0 actor-handle))))
                 (when s0-1
                   (send-event s0-1 'movie-pos 1)
                   (clear-collide-with-as (-> (the-as collectable s0-1) root-override))
                   )
                 )
               )
             )
            ((= v1-30 2)
             (set! (-> s0-0 puzzle-delay) (seconds 15))
             (set! (-> s0-0 pipe-travel-time-to-far) (seconds 4.5))
             (set! (-> s0-0 pipe-travel-time-to-jar) (seconds 2.5))
             (set-vector! s4-0 30720.0 1146.88 5120.0 1.0)
             (set! (-> s0-0 sucked-up-part) (create-launch-control (-> *part-group-id-table* 450) obj))
             (set! (-> s0-0 blown-out-part) (create-launch-control (-> *part-group-id-table* 453) obj))
             (set! (-> s0-0 jar-pos y) (+ 7168.0 (-> s0-0 jar-pos y)))
             (set! (-> s0-0 far-pos y) (+ 7168.0 (-> s0-0 far-pos y)))
             (set! (-> s0-0 blown-out-far-part-pos y) (+ 4096.0 (-> s0-0 blown-out-far-part-pos y)))
             (when (not s1-1)
               (set! (-> s0-0 actor-handle)
                     (ppointer->handle
                       (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 65585.0 #f obj (the-as fact-info #f))
                       )
                     )
               (let ((s0-2 (handle->process (-> s0-0 actor-handle))))
                 (when s0-2
                   (send-event s0-2 'movie-pos 2)
                   (clear-collide-with-as (-> (the-as collectable s0-2) root-override))
                   )
                 )
               )
             )
            )
          )
        (vector+! s4-0 s4-0 (-> obj root trans))
        (let ((v1-102 (process-spawn sunken-pipegame-button s4-0 s3-0 arg0 s1-1 :to obj)))
          (set! (-> obj button s2-0) (the-as (pointer sunken-pipegame-button) v1-102))
          (set! (-> (the-as (pointer sunken-pipegame-button) v1-102) 0 button-id) s2-0)
          )
        )
      )
    )
  (go sunken-pipegame-start-up)
  (none)
  )
