ifndef included_div64
 
 define included_div64
 
 include "div64_32.asm"
 
 include "../mul/mul32.asm"
 
 include "../routines/add64.asm"
 
 include "../routines/sub64.asm"
 
 
 
var_x=xOP2   ;output
 
div64:
 
;var_n / var_x
 
;304+2*div64_32+mul32+sub64+{0,72+add64+{0,19+{0,19+{0,3
 
;304+2*div64_32+mul32+sub64+169.0607843
 
;2*div64_32+3128.7937843
 
;
 
;304+2*div64_32+mul32+sub64+{0,72+add64+{0,19+{0,19+{0,3
 
;min: 6683cc
 
;max: 11469cc
 
;avg: 9759.520cc
 
  call div64_32
 
  ld (var_q+4),ix
 
  ld (var_q+6),bc
 
;Need to adjust the remainder
 
  ld (var_n+6),hl
 
  ld (var_n+4),de
 
  ld hl,(var_x)
 
  ld de,(var_x+2)
 
  call mul32  ;DEHL * BCIX
 
  ;var_z0 holds the 64-bit result
 
  ;need var_n-z0_32
 
  ld hl,0
 
  ld (var_n),hl
 
  ld (var_n+2),hl
 
  ld de,var_n
 
  ld hl,z0_32
 
  call sub64
 
  jr nc,div64_end
 
div64_recarry:
 
  ld de,var_n
 
  ld hl,var_x
 
  call add64
 
  push af
 
  ld hl,var_q+4
 
  ld a,-1
 
  dec (hl) : cp (hl) : jr nz,div64_decq;+_
 
  inc hl : dec (hl) : cp (hl) : jr nz,div64_decq;+_
 
  inc hl : dec (hl) : cp (hl) : jr nz,div64_decq;+_
 
  inc hl : dec (hl)
 
div64_decq;_:
 
  pop af
 
  jr nc,div64_recarry
 
div64_end:
 
  call div64_32
 
  ld (var_q),ix
 
  ld (var_q+2),bc
 
  ret
 
 endif