Advertisement
taylorza

Untitled

Mar 5th, 2022
1,100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. _quicksort:
  2. .FUNC_15:
  3.     push ix
  4.     ld ix, 0
  5.     add ix, sp
  6.     ld hl, -10
  7.     add hl, sp
  8.     ld sp, hl
  9.     ld l, (ix + 8)      ; load value from parameter r
  10.     ld h, (ix + 9)
  11.     ld e, (ix + 6)      ; load value from parameter l
  12.     ld d, (ix + 7)
  13.     or a
  14.     sbc hl, de
  15.     inc hl
  16.     ld (ix-2), l        ; store value to local count(uint16)
  17.     ld (ix-1), h
  18. ; IfAst @8,5
  19. .IF_16:
  20. ; condition
  21.     ld l, (ix-2)        ; load value from local count
  22.     ld h, (ix-1)
  23.     ld de, 2
  24.     or a
  25.     sbc hl, de
  26.     ld a, 0
  27.     rla
  28.     or a
  29.     jp z, .ENDIF_16
  30. ; ReturnAst @9,9
  31.     jp .ENDFUNC_15
  32. .ENDIF_16:
  33. ; CastAst @12,19 uint16(int16)
  34. ; CastAst @12,18 uint16(int16[])
  35.     ld l, (ix + 4)      ; load value from parameter a
  36.     ld h, (ix + 5)
  37.     inc hl
  38.     inc hl
  39.     push hl
  40.     ld l, (ix + 6)      ; load value from parameter l
  41.     ld h, (ix + 7)
  42.     push hl
  43.     ld l, (ix-2)        ; load value from local count
  44.     ld h, (ix-1)
  45.     ld de, 2
  46.     call lib.udiv16
  47.     ex de, hl
  48.     pop hl
  49.     add hl, de
  50.     add hl, hl
  51.     ex de, hl
  52.     pop hl
  53.     add hl, de
  54.     ld e, (hl)          ; Dereference int16
  55.     inc hl
  56.     ld d, (hl)
  57.     ex de, hl           ; Get value into HL
  58.     ld (ix-4), l        ; store value to local pivot(uint16)
  59.     ld (ix-3), h
  60.     ld l, (ix + 6)      ; load value from parameter l
  61.     ld h, (ix + 7)
  62.     ld (ix-6), l        ; store value to local i(uint16)
  63.     ld (ix-5), h
  64.     ld l, (ix + 8)      ; load value from parameter r
  65.     ld h, (ix + 9)
  66.     ld (ix-8), l        ; store value to local j(uint16)
  67.     ld (ix-7), h
  68. ; WhileAst @15,5
  69. .LOOP_17:
  70. ; Loop body start
  71. ; WhileAst @16,9
  72. .LOOP_18:
  73. ; condition
  74. ; CastAst @16,16 uint16(int16)
  75. ; CastAst @16,15 uint16(int16[])
  76.     ld l, (ix + 4)      ; load value from parameter a
  77.     ld h, (ix + 5)
  78.     inc hl
  79.     inc hl
  80.     push hl
  81.     ld l, (ix-6)        ; load value from local i
  82.     ld h, (ix-5)
  83.     add hl, hl
  84.     ex de, hl
  85.     pop hl
  86.     add hl, de
  87.     ld e, (hl)          ; Dereference int16
  88.     inc hl
  89.     ld d, (hl)
  90.     ex de, hl           ; Get value into HL
  91.     ld e, (ix-4)        ; load value from local pivot
  92.     ld d, (ix-3)
  93.     or a
  94.     sbc hl, de
  95.     ld a, 0
  96.     rla
  97.     or a
  98.     jp z, .ENDLOOP_18
  99. ; Loop body start
  100.     ld l, (ix-6)        ; load value from local i
  101.     ld h, (ix-5)
  102.     inc hl
  103.     ld (ix-6), l        ; store value to local i(uint16)
  104.     ld (ix-5), h
  105. ; Loop body end
  106.     jp .LOOP_18
  107. .ENDLOOP_18:
  108. ; WhileAst @19,9
  109. .LOOP_19:
  110. ; condition
  111.     ld l, (ix-4)        ; load value from local pivot
  112.     ld h, (ix-3)
  113.     push hl
  114. ; CastAst @19,16 uint16(int16)
  115. ; CastAst @19,15 uint16(int16[])
  116.     ld l, (ix + 4)      ; load value from parameter a
  117.     ld h, (ix + 5)
  118.     inc hl
  119.     inc hl
  120.     push hl
  121.     ld l, (ix-8)        ; load value from local j
  122.     ld h, (ix-7)
  123.     add hl, hl
  124.     ex de, hl
  125.     pop hl
  126.     add hl, de
  127.     ld e, (hl)          ; Dereference int16
  128.     inc hl
  129.     ld d, (hl)
  130.     ex de, hl           ; Get value into HL
  131.     ex de, hl
  132.     pop hl
  133.     or a
  134.     sbc hl, de
  135.     ld a, 0
  136.     rla
  137.     or a
  138.     jp z, .ENDLOOP_19
  139. ; Loop body start
  140.     ld l, (ix-8)        ; load value from local j
  141.     ld h, (ix-7)
  142.     dec hl
  143.     ld (ix-8), l        ; store value to local j(uint16)
  144.     ld (ix-7), h
  145. ; Loop body end
  146.     jp .LOOP_19
  147. .ENDLOOP_19:
  148. ; IfAst @22,9
  149. .IF_20:
  150. ; condition
  151.     ld l, (ix-8)        ; load value from local j
  152.     ld h, (ix-7)
  153.     ld e, (ix-6)        ; load value from local i
  154.     ld d, (ix-5)
  155.     xor a
  156.     ex de, hl
  157.     sbc hl, de
  158.     rla
  159.     xor a, 1
  160.     or a
  161.     jp z, .ENDIF_20
  162. ; BreakAst @23,13
  163.     jp .ENDLOOP_17
  164. .ENDIF_20:
  165. ; CastAst @26,20 uint16(int16[])
  166.     ld l, (ix + 4)      ; load value from parameter a
  167.     ld h, (ix + 5)
  168.     inc hl
  169.     inc hl
  170.     push hl
  171.     ld l, (ix-6)        ; load value from local i
  172.     ld h, (ix-5)
  173.     add hl, hl
  174.     ex de, hl
  175.     pop hl
  176.     add hl, de
  177.     ld e, (hl)          ; Dereference int16
  178.     inc hl
  179.     ld d, (hl)
  180.     ex de, hl           ; Get value into HL
  181.     ld (ix-10), l       ; store value to local temp(int16)
  182.     ld (ix-9), h
  183. ; Get value to assign
  184. ; CastAst @27,16 uint16(int16[])
  185.     ld l, (ix + 4)      ; load value from parameter a
  186.     ld h, (ix + 5)
  187.     inc hl
  188.     inc hl
  189.     push hl
  190.     ld l, (ix-8)        ; load value from local j
  191.     ld h, (ix-7)
  192.     add hl, hl
  193.     ex de, hl
  194.     pop hl
  195.     add hl, de
  196.     ld e, (hl)          ; Dereference int16
  197.     inc hl
  198.     ld d, (hl)
  199.     ex de, hl           ; Get value into HL
  200.     push hl             ; save value int16
  201. ; CastAst @27,9 uint16(int16[])
  202.     ld l, (ix + 4)      ; load value from parameter a
  203.     ld h, (ix + 5)
  204.     inc hl
  205.     inc hl
  206.     push hl
  207.     ld l, (ix-6)        ; load value from local i
  208.     ld h, (ix-5)
  209.     add hl, hl
  210.     ex de, hl
  211.     pop hl
  212.     add hl, de
  213.     pop de              ; pop value int16
  214.     ld (hl), e
  215.     inc hl
  216.     ld (hl), d
  217. ; Get value to assign
  218.     ld l, (ix-10)       ; load value from local temp
  219.     ld h, (ix-9)
  220.     push hl             ; save value int16
  221. ; CastAst @28,9 uint16(int16[])
  222.     ld l, (ix + 4)      ; load value from parameter a
  223.     ld h, (ix + 5)
  224.     inc hl
  225.     inc hl
  226.     push hl
  227.     ld l, (ix-8)        ; load value from local j
  228.     ld h, (ix-7)
  229.     add hl, hl
  230.     ex de, hl
  231.     pop hl
  232.     add hl, de
  233.     pop de              ; pop value int16
  234.     ld (hl), e
  235.     inc hl
  236.     ld (hl), d
  237.     ld l, (ix-6)        ; load value from local i
  238.     ld h, (ix-5)
  239.     inc hl
  240.     ld (ix-6), l        ; store value to local i(uint16)
  241.     ld (ix-5), h
  242.     ld l, (ix-8)        ; load value from local j
  243.     ld h, (ix-7)
  244.     dec hl
  245.     ld (ix-8), l        ; store value to local j(uint16)
  246.     ld (ix-7), h
  247. ; Loop body end
  248.     jp .LOOP_17
  249. .ENDLOOP_17:
  250. ; FuncCallAst @34,5 : quicksort
  251.     ld l, (ix-6)        ; load value from local i
  252.     ld h, (ix-5)
  253.     dec hl
  254.     push hl
  255.     ld l, (ix + 6)      ; load value from parameter l
  256.     ld h, (ix + 7)
  257.     push hl
  258.     ld l, (ix + 4)      ; load value from parameter a
  259.     ld h, (ix + 5)
  260.     push hl
  261.     call _quicksort
  262.     ld hl, 6
  263.     add hl, sp
  264.     ld sp, hl
  265. ; FuncCallAst @35,5 : quicksort
  266.     ld l, (ix + 8)      ; load value from parameter r
  267.     ld h, (ix + 9)
  268.     push hl
  269.     ld l, (ix-6)        ; load value from local i
  270.     ld h, (ix-5)
  271.     push hl
  272.     ld l, (ix + 4)      ; load value from parameter a
  273.     ld h, (ix + 5)
  274.     push hl
  275.     call _quicksort
  276.     ld hl, 6
  277.     add hl, sp
  278.     ld sp, hl
  279. .ENDFUNC_15:
  280.     ld sp, ix
  281.     pop ix
  282.     ret
  283.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement