func mokouFLDZ
  fldz
end
func mokouNOP
  nop
end


func mokouID_FIX
  mov dword ptr [esi+0x34C],0x0000001C
  ;mov dword ptr [esi+0x34C],0x00000033
  cmp [esi+0x196],di
end
00665388 = mokouID_FIX

func mokouA214PUNCH_HPCOST_1
  call 0x47A9E0
  ;# SELF-DAMAGE
  movzx ecx, word ptr [esi+0x184]
  sub cx,0x0190
  cmp cx,0x0001
  jae LABEL3A
  mov cx,0x0001
  LABEL3A:
  mov [esi+0x184],cx
  mov eax,[esi+0x190]
end

func mokouD214_HPCOST_1
  call 0x47A9E0
  ;# SELF-DAMAGE
  movzx ecx, word ptr [esi+0x184]
  sub cx,0x0258
  cmp cx,0x0001
  jae LABEL3A
  mov cx,0x0001
  LABEL3A:
  mov [esi+0x184],cx
  mov eax,[esi+0x190]
end

func mokouA214REKKA_HPCOST_1
  call 0x47A9E0
  ;# SELF-DAMAGE
  movzx ecx, word ptr [esi+0x184]
  sub cx,0x00C8
  cmp cx,0x0001
  jae LABEL3A
  mov cx,0x0001
  LABEL3A:
  mov [esi+0x184],cx
  mov eax,[esi+0x190]
end
0066D451 = mokouA214REKKA_HPCOST_1
;# for alt punch
0066E53A = mokouA214PUNCH_HPCOST_1
;# for default, grounded B
0066CA07 = mokouD214_HPCOST_1
;# for default, grounded C
0066CC4D = mokouD214_HPCOST_1
;# for default, air B
0066CE65 = mokouD214_HPCOST_1
;# for default, air C
0066D0EA = mokouD214_HPCOST_1

func mokouA214REKKA_BULLET
end

0066E118 = mokouFLDZ

0066E13C = mokouFLDZ
0066E160 = mokouFLDZ

0066E1AC = mokouFLDZ
0066E1BC = mokouFLDZ
0066E1D3 = mokouFLDZ

func mokouA214REKKA_DECEL
  cmp word ptr [esi+0x13E],0x00000001
  jne LABEL2
  cmp word ptr [esi+0x140],0x00000003
  jne LABEL2
  mov dword ptr [esi+0x190],0x00000001
  
  LABEL2:
  
  LABEL3:
  fld dword ptr [esi+0xF4]
  fsub dword ptr [0x85C110]
  fstp dword ptr [esi+0xF4]
  
  fldz
  fld dword ptr [esi+0xF4]
  fcompp
  
  fnstsw ax
  test ah,0x41
  je short LABEL1
  
  fldz
  fstp dword ptr [esi+0xF4]
  
  LABEL1:
  movzx eax,word ptr [esi+0x13E]
end

func mokouA214REKKA_DECEL2
  cmp word ptr [esi+0x13E],0x00000001
  jne LABEL2
  cmp word ptr [esi+0x140],0x00000003
  jne LABEL2
  mov dword ptr [esi+0x190],0x00000001
  
  LABEL2:
  
  LABEL3:
  fld dword ptr [esi+0xF4]
  fsub dword ptr [0x85C110]
  fstp dword ptr [esi+0xF4]
  
  fldz
  fld dword ptr [esi+0xF4]
  fcompp
  
  fnstsw ax
  test ah,0x41
  je short LABEL1
  
  fldz
  fstp dword ptr [esi+0xF4]
  
  LABEL1:
  cmp word ptr [esi+0x13E],0x05
end

;# ground B
0066D15E = mokouA214REKKA_DECEL

;# air B
0066D778 = mokouA214REKKA_DECEL2

func mokouA214REKKA_DECEL3
  cmp word ptr [esi+0x13E],0x00000002
  jne LABEL2
  cmp word ptr [esi+0x140],0x00000003
  jne LABEL2
  mov dword ptr [esi+0x190],0x00000001
  
  LABEL2:
  cmp word ptr [esi+0x13E],0x0000000B
  jne LABEL3
  cmp word ptr [esi+0x140],0x00000002
  jne LABEL3
  mov dword ptr [esi+0x190],0x00000001
  
  LABEL3:
  
  movzx ecx,word ptr [esi+0x13E]
  
  cmp cx,0x0002
  jne LABELA1
  fld dword ptr [esi+0xF4]
  fsub dword ptr [0x85C110]
  fstp dword ptr [esi+0xF4]
  LABELA1:
  cmp cx,0x000B
  jne LABELA2
  fld dword ptr [esi+0xF8]
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0xF8]
  LABELA2:
  cmp cx,0x000C
  jne LABELA3
  fld dword ptr [esi+0xF8]
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0xF8]
  LABELA3:
end
0066DD6A = mokouA214REKKA_DECEL3

func mokouA214REKKA_2MAXDUR
  mov eax,[esi+0x144]
  cmp eax,0x1E
  jmp 0x66DDA0
end
0066DD97 = mokouA214REKKA_2MAXDUR

func mokouA214REKKA_IDKLOL
  cmp word ptr [esi+0x13E],0x0002
  je LABELB
  cmp word ptr [esi+0x13E],0x000B
  je LABELC
  jmp LABELNO
  
  LABELB:
  fld dword ptr [0x85C230]
  fstp dword ptr [esi+0xF4]
  fldz
  fstp dword ptr [esi+0xF8]
  fld dword ptr [0x85AAE8]
  fstp dword ptr [esi+0x100]
  jmp LABELNO
  
  LABELC:
  fld dword ptr [0x85C22C]
  fstp dword ptr [esi+0xF4]
  fld dword ptr [0x85C22C]
  fstp dword ptr [esi+0xF8]
  fld dword ptr [0x85BC48]
  ;fld1
  fstp dword ptr [esi+0x100]
  jmp LABELNO
  
  LABELNO:
  cmp word ptr [esi+0x13E],0x0001
  jmp 0x66E0E9
end
0066E0E1 = mokouA214REKKA_IDKLOL

func mokouA214REKKA_ENDGRAVITY
  fld1
end
0066E040 = mokouA214REKKA_ENDGRAVITY

func mokouA214REKKA_BCHOICE
  mov eax,[esi+0x190]
  
  mov eax,[esi+0x144]
  cmp eax,0x1E
  jl LABELA
  jmp 0x66D1CD
  
  LABELA:
  cmp eax,0x14
  jl 0x66D2F0

  cmp [esi+0x760],edx
  ja LABEL1
  cmp [esi+0x764],edx
  ja LABEL2
  jmp 0x66D2F0
  
  LABEL1:
  fstp st0
  mov word ptr [esi+0x7D0],0x0000
  ;# SELF-DAMAGE
  movzx eax, word ptr [esi+0x184]
  sub ax,0x00C8
  cmp ax,0x0001
  jae LABEL3A
  mov ax,0x0001
  LABEL3A:
  mov [esi+0x184],ax
  mov eax,[esi+0x190]
  
  jmp 0x66D2DA
  
  LABEL2:
  fstp st0
  mov word ptr [esi+0x7D0],0x0002
  ;# SELF-DAMAGE
  movzx eax, word ptr [esi+0x184]
  sub ax,0x00C8
  cmp ax,0x0001
  jae LABEL3B
  mov ax,0x0001
  LABEL3B:
  mov [esi+0x184],ax
  mov eax,[esi+0x190]
  
  jmp 0x66D2DA
end
0066D1A0 = mokouA214REKKA_BCHOICE

func mokouA214REKKA_ABCHOICE
  mov eax,[esi+0x190]
  
  mov eax,[esi+0x144]
  cmp eax,0x1E
  jl LABELA
  jmp 0x66D4C9
  
  LABELA:
  cmp eax,0x14
  jl 0x66D7F0
  
  cmp [esi+0x760],edx
  ja LABEL1
  cmp [esi+0x764],edx
  ja LABEL2
  jmp 0x66DA52
  
  LABEL1:
  mov word ptr [esi+0x7D0],0x0000
  ;# SELF-DAMAGE
  movzx eax, word ptr [esi+0x184]
  sub ax,0x00C8
  cmp ax,0x0001
  jae LABEL3A
  mov ax,0x0001
  LABEL3A:
  mov [esi+0x184],ax
  mov eax,[esi+0x190]
  
  jmp 0x66DA3C
  
  LABEL2:
  mov word ptr [esi+0x7D0],0x0002
  ;# SELF-DAMAGE
  movzx eax, word ptr [esi+0x184]
  sub ax,0x00C8
  cmp ax,0x0001
  jae LABEL3B
  mov ax,0x0001
  LABEL3B:
  mov [esi+0x184],ax
  mov eax,[esi+0x190]
  
  jmp 0x66DA3C 
end
0066D7A5 = mokouA214REKKA_ABCHOICE

func mokouA214REKKA_CTOB
  jmp 0x66D15E
end
0066D470 = mokouA214REKKA_CTOB

func mokouA214REKKA_ACTOAB
  jmp 0x66D778
end
0066D8DC = mokouA214REKKA_ACTOAB

func mokouA214REKKA_CONTINUE1
  cmp [esi+0x760],edx
  ja LABEL1
  cmp [esi+0x764],edx
  ja LABEL1
  jmp 0x66DEDC
  LABEL1:
  cmp word ptr [esi+0x13E],0x0002
  jne 0x66DEDC
  mov word ptr [esi+0x7D0],0x0002
  ;# SELF-DAMAGE
  movzx eax, word ptr [esi+0x184]
  sub ax,0x00C8
  cmp ax,0x0001
  jae LABEL3
  mov ax,0x0001
  LABEL3:
  mov [esi+0x184],ax
  movzx eax,word ptr [esi+0x7D8]
  
  jmp 0x66DECD
end

func mokouA214REKKA_CONTINUE2
  cmp [esi+0x760],edx
  ja LABEL1
  cmp [esi+0x764],edx
  ja LABEL1
  jmp 0x66DFB3
  LABEL1:
  cmp word ptr [esi+0x13E],0x0002
  jne 0x66DFB3
  mov word ptr [esi+0x7D0],0x0002
  ;# SELF-DAMAGE
  movzx eax, word ptr [esi+0x184]
  sub ax,0x00C8
  cmp ax,0x0001
  jae LABEL3
  mov ax,0x0001
  LABEL3:
  mov [esi+0x184],ax
  movzx eax,word ptr [esi+0x7D8]
  
  jmp 0x66DECD
end

0066DDCA = mokouA214REKKA_CONTINUE1

0066DF6C = mokouA214REKKA_CONTINUE2

func mokouA214REKKA_3RDANG
  fldz
end
0066E187 = mokouA214REKKA_3RDANG
0066E170 = mokouA214REKKA_3RDANG

func mokouA214REKKA
  mov ecx,esi
  call 0x438C60
  cmp dword ptr [esi+0x144],0x00
  je LABEL1
  test al,al
  je 0x685A7A
  LABEL1:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret
end
;0068111E = mokouA214REKKA

func mokouA214REKKA_V2
  cmp word ptr [esi+0x140],0x0000
  jne LABEL2
  cmp dword ptr [esi+0x144],0x01
  jne LABEL2
  
  mov eax, dword ptr [esi+0x398]
  cmp word ptr [eax+0x13C],0x020D
  je LABEL3
  cmp word ptr [eax+0x13C],0x020E
  je LABEL3
  cmp word ptr [eax+0x13C],0x020F
  je LABEL3
  cmp word ptr [eax+0x13C],0x0210
  je LABEL3
  cmp word ptr [eax+0x13C],0x0211
  je LABEL3
  jmp LABEL1
  
  LABEL3:
  cmp word ptr [eax+0x13E],0x0001
  jne LABELD
  cmp word ptr [eax+0x13C],0x0211
  jne LABEL0A
  jmp LABEL0B
  LABELD:
  cmp word ptr [eax+0x13E],0x000A
  je LABEL0C
  jmp LABEL2
  
  LABEL0A:
  mov word ptr [esi+0x142],0x000E
  jmp LABEL2
  LABEL0B:
  mov word ptr [esi+0x140],0x000C
  mov word ptr [esi+0x142],0x000E
  jmp LABEL2
  LABEL0C:
  mov word ptr [esi+0x140],0x0019
  mov word ptr [esi+0x142],0x000E
  jmp LABEL2
  
  LABEL2:
  cmp word ptr [esi+0x140],0x000B
  je LABEL1
  cmp word ptr [esi+0x140],0x0018
  je LABEL1
  cmp word ptr [esi+0x140],0x0025
  je LABEL1
  mov ecx,esi
  call 0x438C60
  test al,al
  je 0x685A7A
  LABEL1:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret
end
0068111E = mokouA214REKKA_V2

func mokouA22RES1
  cmp word ptr [esi+0x140],0x04
  je 0x66F32C
  cmp word ptr [esi+0x140],0x02
  jne 0x66B834
end
0066F308 = mokouA22RES1

func mokouA22RES2
  cmp word ptr [esi+0x140],0x04
  je LABEL1
  jmp LABEL2
  
  LABEL1:
  ;# HEALING
  movzx ecx, byte ptr [esi+0x6AA]
  imul ecx,ecx,0x96
  add ecx,0x352
  add cx,[esi+0x184]
  cmp cx,0x2710
  jbe LABEL3
  mov cx,0x2710
  LABEL3:
  mov [esi+0x184],cx
  
  fld dword ptr [0x85B9C0]
  fstp dword ptr [esi+0x100]
  fld dword ptr [0x86782C]
  jmp LABELEND
  
  LABEL2:
  fldz
  jmp LABELEND
  
  LABELEND:
  jmp 0x66F33B
end
0066F335 = mokouA22RES2

func mokouA22RESTRAJECTORY
  fld dword ptr [0x85B990]
end
0066F345 = mokouA22RESTRAJECTORY
0066F353 = mokouA22RESTRAJECTORY

func mokouA22PARTICLE
  je LABEL1
  cmp word ptr [eax+0x13C],0x0222
  je LABEL1
  jne 0x6801B9
  LABEL1:
  cmp word ptr [eax+0x13E],0x00
  jne 0x6801B9
end
00681965 = mokouA22PARTICLE

func mokouA22PARTICLE2
  fldz
  fadd dword ptr [eax+0xEC]
end
0068198A = mokouA22PARTICLE2

func mokouA22RESTRAJECTORY2
  cmp word ptr [esi+0x13E],0x0001
  jne LABEL1
  fld dword ptr [esi+0xF8]
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0xF8]
  LABEL1:
  cmp [esi+0x13E],di
end
0066F167 = mokouA22RESTRAJECTORY2

func mokouA22CJUMPTOB
  jmp 0x66F160
end
0066F3CE = mokouA22CJUMPTOB

func mokouTORNADOSC
  cmp word ptr [esi+0x13E],0x00000001
  jne LABEL0
  cmp dword ptr [esi+0x144],0x0000002F
  jl LABEL1
  jmp LABEL2
  
  LABEL1:
  fld dword ptr [esi+0xF4]
  fadd qword ptr [0x858EA0]
  fstp dword ptr [esi+0xF4]
  jmp LABELEND
  
  LABEL2:
  fld dword ptr [esi+0xF4]
  fsub qword ptr [0x858EA0]
  fstp dword ptr [esi+0xF4]
  jmp LABELEND
  
  LABEL0:
  fldz
  fstp dword ptr [esi+0xF4]
  LABELEND:
  cmp word ptr [esi+0x13E],0x01
end
00671B5D = mokouTORNADOSC

func mokouTORNADOSC2
  cmp word ptr [esi+0x140],0x0C
end
00671C63 = mokouTORNADOSC2

func mokouTORNADOSC1
  fld1
  fstp dword ptr [esi+0xF4]
  movzx ecx,byte ptr [esi+0x104]
end
;00671C71 = mokouTORNADOSC1

func mokouD22GROUNDEDLEVEL
  cmp eax,0x02
  je LABEL1
  cmp eax,0x0B
  ja 0x67DCFB
  jmp 0x67DAB0

  LABEL1:
  cmp byte ptr [esi+0x802],0x00
  jne LABEL2
  add dword ptr [esi+0x4C8],0x01
  mov byte ptr [esi+0x802],0x01
  LABEL2:
  mov ecx,esi
  call 0x483CE0
  mov ecx,esi
  call 0x489660
  push ebp
  push 0x21C
  mov ecx,esi
  call 0x487BA0
  pop ebp
  pop edi
  pop esi
  pop ebx
  add esp,0x08
  ret
end
0067DAA7 = mokouD22GROUNDEDLEVEL

func mokouD22GROUNDED_B
  jge 0x67E690
  cmp byte ptr [esi+0x6AA],0x01
  jge 0x67F536
  push 0x0000021C
  mov ecx,esi
  call 0x489610
  cmp bx,ax
  jle LABEL1
  movzx eax,word ptr [esi+0x13C]
  cmp ax,0x1F4
  jl 0x67F536
  cmp ax,0x257
  jg 0x67F536

  cmp byte ptr [esi+0x802],0x00
  jne 0x67F536
  LABEL1:
  cmp byte ptr [esi+0x802],0x00
  jne LABEL2
  add [esi+0x4C8],edi
  mov byte ptr [esi+0x802],0x01
  LABEL2:
  mov ecx,esi
  call 0x483CE0
  movsx ecx,bx
  push ecx
  push 0x0000021C
  mov ecx,esi
  call 0x487BA0
  pop ebp
  pop edi
  pop esi
  pop ebx
  add esp,0x08
  ret
end
0067E68A = mokouD22GROUNDED_B

func mokouD22GROUNDED_C
  cmp byte ptr [esi+0x6AE],0x01
  jge 0x67E611
  cmp byte ptr [esi+0x6AA],0x01
  jge 0x67E673
  push 0x0000021C
  mov ecx,esi
  call 0x489610
  cmp bx,ax
  jle LABEL1
  movzx eax,word ptr [esi+0x13C]
  cmp ax,0x1F4
  jl 0x67E673
  cmp ax,0x257
  jg 0x67E673

  cmp byte ptr [esi+0x802],0x00
  jne 0x67E673
  LABEL1:
  cmp byte ptr [esi+0x802],0x00
  jne LABEL2
  add [esi+0x4C8],edi
  mov byte ptr [esi+0x802],0x01
  LABEL2:
  mov ecx,esi
  call 0x483CE0
  movsx eax,bx
  push eax
  push 0x0000021C
  mov ecx,esi
  call 0x487BA0
  pop ebp
  pop edi
  pop esi
  pop ebx
  add esp,0x08
  ret
end
0067E608 = mokouD22GROUNDED_C

func mokou6DINIT
  fld dword ptr [0x85BA68]
end
00665F61 = mokou6DINIT

func mokouDRUMX
  fldz
  fsub dword ptr [0x8589F0]
end
0066F945 = mokouDRUMX

func mokouDRUMY
  fld dword ptr [0x8589F0]
  fadd dword ptr [0x8589F0]
end
0066F951 = mokouDRUMY

func mokouJ8A
  jmp 0x668B37
end
00668B1F = mokouJ8A

func mokouONHIT_REMOVE
  pushad
  push 0x02
  push 0x02
  push 0x00
  mov ecx,esi
  call 0x48CE90
  test al,al
  popad
  jne 0x681E51
  cmp dword ptr [esi+0x190],0x05
end

00681E60 = mokouONHIT_REMOVE

;#d236C
func mokouD236C
  push 0x000001F5
end
0067E1CB = mokouD236C
0067E219 = mokouD236C

func mokouD236C_JMP
  cmp eax,0x000001F5
  je 0x668189
  LABEL1:
  cmp eax,0x000001F4
end
0066817E = mokouD236C_JMP
;#fstp st

func mokouD236C_MOMENTUM
  cmp eax,0x000001F5
  je 0x67C817
  cmp eax,0x000001F4
end
0067C3BC = mokouD236C_MOMENTUM

func mokouD236C_SPAWN
  pushf
  cmp word ptr [esi+0x13C],0x01F5
  je short LABEL1
  imul edx,edx,0x0000001E
  jmp short LABEL2
  LABEL1:
  imul edx,edx,0xFFFFFFC0
  LABEL2:
  popf
  jmp 0x66B940
end
0066B939 = mokouD236C_SPAWN

;#wakeups
func mokouWAKEUP
  pushf
  pushad
  mov eax,[esi+0x398]
  mov ax,[eax+0x13C]
  cmp ax,0xC5
  jl short LABEL1
  cmp ax,0xC7
  jg short LABEL1
  cmp word ptr [esi+0x140],0x0F
  jg short LABEL3
  mov word ptr [esi+0x140],0x10
  mov word ptr [esi+0x142],0x10
  jmp short LABEL2
  LABEL1:
  cmp word ptr [esi+0x140],0x0F
  jne short LABEL2
  popad
  popf
  jmp 0x680292
  
  LABEL3:
  cmp word ptr [esi+0x140],0x1F
  jne short LABEL4
  mov eax,[esi+0x398]
  fld dword ptr [eax+0xEC]
  fstp dword ptr [esi+0xEC]
  LABEL4:
  popad
  popf
  fld dword ptr [esi+0x11C]
  jmp 0x6858AF
  
  LABEL2:
  popad
  popf
  fld dword ptr [esi+0x11C]
end
006858A3 = mokouWAKEUP

func mokouWAKEUP_TELE1
  cmp word ptr [esi+0x13E],0x00
  jne short LABEL1
  cmp word ptr [esi+0x140],0x0003
  je 0x66599F
  LABEL1:
  cmp [esi+0x140],bp
  jmp 0x6659CF
end
func mokouWAKEUP_TELE2
  cmp word ptr [esi+0x13E],0x00
  jne short LABEL1
  cmp word ptr [esi+0x140],0x0003
  je 0x665B6E
  LABEL1:
  cmp [esi+0x140],bp
  jmp 0x665B9E
end
func mokouWAKEUP_TELE3
  cmp word ptr [esi+0x13E],0x00
  jne short LABEL1
  cmp word ptr [esi+0x140],0x0003
  je 0x665CC5
  LABEL1:
  cmp [esi+0x140],bp
  jmp 0x665CF5
end
00665996 = mokouWAKEUP_TELE1
00665B65 = mokouWAKEUP_TELE2
00665CBB = mokouWAKEUP_TELE3

func mokouWAKEUP_TELE1A
  fld dword ptr [0x8596B4]
end
func mokouWAKEUP_TELE1B
  fldz
  fsub dword ptr [0x8596B4]
end
func mokouFLD075
  fld qword ptr [0x858820]
end
00665B0E = mokouWAKEUP_TELE1A
00665B02 = mokouFLD075

00665C9D = mokouWAKEUP_TELE1B
00665C91 = mokouFLD075

func mokou2B
  push 0x2D
  push 0x000000C8
  mov ecx,esi
  call 0x47A9E0
  ;fld dword ptr [0x85BB28] ;# start speed
  mov word ptr [esi+0x7D2],0x03
  jmp 0x668F6D
end
00669801 = mokou2B

func mokou5B2B_OFFSET
  pushf
  cmp word [esi+0x13C],0x192
  je short LABEL1
  fadd qword ptr [0x85E0F8]
  jmp short LABEL2
  LABEL1:
  fadd dword ptr [0x85BB54]
  LABEL2:
  popf
end
00669064 = mokou5B2B_OFFSET

func mokouJ5B_ANG1
  fldz
  fsub dword ptr [0x85BBE4]
end
func mokouJ5B_ANG2
  fld dword ptr [0x85BBE4]
end
;00669AB5 = mokouJ5B_ANG1
;00669AC4 = mokouJ5B_ANG2
;00669C1D = mokouJ5B_ANG1
;00669C2C = mokouJ5B_ANG2

func mokou5B2B_ANG1
  pushf
  cmp word [esi+0x13C],0x192
  je short LABEL1
  fld dword ptr [0x85B9E0]
  ;fldz
  ;fsub dword ptr [0x85BBE4]
  jmp short LABEL2
  LABEL1:
  fldz
  LABEL2:
  popf
end
func mokou5B2B_ANG2
  pushf
  cmp word [esi+0x13C],0x192
  je short LABEL1
  fld dword ptr [0x85AE94]
  ;fld dword ptr [0x85BBE4]
  jmp short LABEL2
  LABEL1:
  fldz
  LABEL2:
  popf
end

00668FF1 = mokou5B2B_ANG1
00669000 = mokou5B2B_ANG2

;#5c
;# angle
0066A515 = mokouFLDZ
;# curve
0066A524 = mokouFLDZ

func mokouFLD30
  fld dword ptr [0x85BBE4]
end
func mokouFLDN30
  fldz
  fsub dword ptr [0x85BBE4]
end

func mokouFLD60
  fld dword ptr [0x85BBE4]
  fadd dword ptr [0x85BBE4]
end
func mokouFLDN60
  fldz
  fsub dword ptr [0x85BBE4]
  fsub dword ptr [0x85BBE4]
end


func mokouFLD90
  fld dword ptr [0x85BBE4]
  fadd dword ptr [0x85BBE4]
  fadd dword ptr [0x85BBE4]
end
func mokouFLDN90
  fldz
  fsub dword ptr [0x85BBE4]
  fsub dword ptr [0x85BBE4]
  fsub dword ptr [0x85BBE4]
end

;#5[c]
0066A665 = mokouFLD30
0066A674 = mokouFLDZ
0066A6E1 = mokouFLDN30
0066A6F0 = mokouFLDZ

;#2c
0066AA9B = mokouFLDN60
0066AAAA = mokouFLDZ
;#2[c]
0066ABEB = mokouFLDN90
0066ABFA = mokouFLDZ
0066AC67 = mokouFLDN30
0066AC76 = mokouFLDZ

;#j5c
0066AEA2 = mokouFLDZ
0066AEB1 = mokouFLDZ

;#j5[c]
0066AFF2 = mokouFLD30
0066B001 = mokouFLDZ
0066B06E = mokouFLDN30
0066B07D = mokouFLDZ

;#j2c
0066B441 = mokouFLD30
0066B450 = mokouFLDZ

;#j2[c]
0066B591 = mokouFLD60
0066B5A0 = mokouFLDZ
0066B60D = mokouFLDZ
0066B61C = mokouFLDZ

func mokouJ5C_OFFSET
  fadd dword ptr [0x85BB6C]
end
0066AEDF = mokouJ5C_OFFSET

func mokou5C_NEWSYS
  pushad
  push 0x03
  push 0x00
  push 0x00
  mov ecx,esi
  call 0x48CE90
  test al,al
  popad
  jne 0x681E51
  cmp dword ptr [esi+0x190],0x05
  pushf
  pushad
  mov ax,[esi+0x13E]
  cmp ax,0x00
  jne short LABEL1
  nop
  LABEL1:
  popad
  popf
end
006802A1 = mokou5C_NEWSYS

func mokou5C_SPD
  pushf
  pushad
  fld qword ptr [0x85BB88]
  
  mov ax,[esi+0x144]
  movzx eax,ax
  push eax
  fild dword ptr [esp]
  pop eax
  fsubp
  popad
  popf
end
00680368 = mokou5C_SPD


func mokouHASTE
  pushf
  pushad
  cmp dword ptr [esi+0x190],0x08
  je short LABEL1
  mov dword ptr [esi+0x190],0x00
  mov byte ptr [esi+0x194],0x01
  LABEL1:
  mov ecx,[esi+0x398]
  mov al,[ecx+0x104]
  mov [esi+0x104],al
  popad
  popf
  movsx eax,word ptr [esi+0x13E]
end
00683F6A = mokouHASTE

func mokouHASTE_DUR
  mov word ptr [esi+0x892],0xB4
end
0067363E = mokouHASTE_DUR
0067379B = mokouHASTE_DUR

func mokou5B_NEWA
  jne 0x6690AC
  push 0x2D
  push 0x000000C8
  mov ecx,esi
  call 0x47A9E0
  ;fld dword ptr [0x85B9D0] ;# start speed
  mov word ptr [esi+0x7D2],0x02
  jmp 0x668F6D
end
func mokou5B_NEWA_CHARGE
  jne 0x66B834
  push 0x2D
  push 0x000000C8
  mov ecx,esi
  call 0x47A9E0
  ;fld dword ptr [0x85B830] ;# start speed
  mov word ptr [esi+0x7D2],0x04
  jmp 0x6690D5
end
func mokou5B_NEWB
  jne 0x66955B
  push 0x2D
  push 0x000000C8
  mov ecx,esi
  call 0x47A9E0
  ;fld dword ptr [0x85B9D0] ;# start speed
  mov word ptr [esi+0x7D2],0x02
  jmp 0x66942F
end
func mokou5B_NEWB_CHARGE
  jne 0x66B834
  push 0x2D
  push 0x000000C8
  mov ecx,esi
  call 0x47A9E0
  ;fld dword ptr [0x85B830] ;# start speed
  mov word ptr [esi+0x7D2],0x04
  jmp 0x669584
end
func mokou5B_NEWC
  jne 0x669B78
  push 0x2D
  push 0x000000C8
  mov ecx,esi
  call 0x47A9E0
  ;fld dword ptr [0x85B9D0] ;# start speed
  mov word ptr [esi+0x7D2],0x02
  jmp 0x669A39
end
func mokou5B_NEWC_CHARGE
  jne 0x66B834
  push 0x2D
  push 0x000000C8
  mov ecx,esi
  call 0x47A9E0
  ;fld dword ptr [0x85B830] ;# start speed
  mov word ptr [esi+0x7D2],0x04
  jmp 0x669BA1
end
func mokou5B_NEWD
  jne 0x66A09C
  push 0x2D
  push 0x000000C8
  mov ecx,esi
  call 0x47A9E0
  ;fld dword ptr [0x85B9D0] ;# start speed
  mov word ptr [esi+0x7D2],0x02
  jmp 0x669F5A
end
func mokou5B_NEWD_CHARGE
  jne 0x66B834
  push 0x2D
  push 0x000000C8
  mov ecx,esi
  call 0x47A9E0
  ;fld dword ptr [0x85B830] ;# start speed
  mov word ptr [esi+0x7D2],0x04
  jmp 0x66A0CA
end
00668F67 = mokou5B_NEWA
;# 5[b]
006690CF = mokou5B_NEWA_CHARGE
;# 6b
00669429 = mokou5B_NEWB
;# 6[b]
0066957E = mokou5B_NEWB_CHARGE
;# jb
00669A33 = mokou5B_NEWC
;# j[b]
00669B9B = mokou5B_NEWC_CHARGE
;# j2b
00669F54 = mokou5B_NEWD
;# j2[b]
0066A0C4 = mokou5B_NEWD_CHARGE

func mokou5B_METER
  push 0x04
  mov ecx,esi
  call 0x487870
end
00668F6D = mokou5B_METER
006690D5 = mokou5B_METER
func mokou6B_METER
  push 0x04
  mov ecx,esi
  mov dword ptr [esi+0x190],0x01
end
006694B9 = mokou6B_METER
0066962B = mokou6B_METER
func mokou2B_METER
  push 0x04
  mov ecx,esi
  call 0x487870
end
006697F8 = mokou2B_METER
func mokouJ5B_METER
  push 0x04
  mov ecx,esi
  mov dword ptr [esi+0x190],0x01
end
00669AE0 = mokouJ5B_METER
00669C48 = mokouJ5B_METER
func mokouJ2B_METER
  push 0x04
  mov ecx,esi
  mov dword ptr [esi+0x190],edi
end
0066A006 = mokouJ2B_METER
0066A171 = mokouJ2B_METER

func mokou5B_NEW1A
  push 0x00000320
  call 0x46EB30
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x00
  jg short LABEL1
  popad
  popf
  jmp 0x6690A3
  LABEL1:
  mov ax,[esi+0x7D2]
  sub ax,0x01
  mov [esi+0x7D2],ax
  popad
  popf
  jmp 0x668F6D
end
func mokou5B_NEW1A_CHARGE
  push 0x00000320
  call 0x46EB30
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x00
  jg short LABEL1
  popad
  popf
  jmp 0x669312
  LABEL1:
  mov ax,[esi+0x7D2]
  sub ax,0x01
  mov [esi+0x7D2],ax
  popad
  popf
  jmp 0x6690D5
end
func mokou5B_NEW1B
  push 0x00000320
  call 0x46EB30
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x00
  jg short LABEL1
  popad
  popf
  jmp 0x669552
  LABEL1:
  mov ax,[esi+0x7D2]
  sub ax,0x01
  mov [esi+0x7D2],ax
  popad
  popf
  jmp 0x66942F
end
func mokou5B_NEW1B_CHARGE
  push 0x00000320
  call 0x46EB30
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x00
  jg short LABEL1
  popad
  popf
  jmp 0x669312
  LABEL1:
  mov ax,[esi+0x7D2]
  sub ax,0x01
  mov [esi+0x7D2],ax
  popad
  popf
  jmp 0x669584
end
func mokou5B_NEW1C
  push 0x00000320
  call 0x46EB30
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x00
  jg short LABEL1
  popad
  popf
  jmp 0x669B6F
  LABEL1:
  mov ax,[esi+0x7D2]
  sub ax,0x01
  mov [esi+0x7D2],ax
  popad
  popf
  jmp 0x669A39
end
func mokou5B_NEW1C_CHARGE
  push 0x00000320
  call 0x46EB30
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x00
  jg short LABEL1
  popad
  popf
  jmp 0x669312
  LABEL1:
  mov ax,[esi+0x7D2]
  sub ax,0x01
  mov [esi+0x7D2],ax
  popad
  popf
  jmp 0x669BA1
end
func mokou5B_NEW1D
  push 0x00000320
  call 0x46EB30
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x00
  jg short LABEL1
  popad
  popf
  jmp 0x66A091
  LABEL1:
  mov ax,[esi+0x7D2]
  sub ax,0x01
  mov [esi+0x7D2],ax
  popad
  popf
  jmp 0x669F5A
end
func mokou5B_NEW1D_CHARGE
  push 0x00000320
  call 0x46EB30
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x00
  jg short LABEL1
  popad
  popf
  jmp 0x669312
  LABEL1:
  mov ax,[esi+0x7D2]
  sub ax,0x01
  mov [esi+0x7D2],ax
  popad
  popf
  jmp 0x66A0CA
end
00669099 = mokou5B_NEW1A
;#5[b]
00669202 = mokou5B_NEW1A_CHARGE
;#6b
00669548 = mokou5B_NEW1B
;#6[b]
006696B1 = mokou5B_NEW1B_CHARGE
;#jb
00669B65 = mokou5B_NEW1C
;#j[b]
00669CC5 = mokou5B_NEW1C_CHARGE
;#j2b
0066A087 = mokou5B_NEW1D
;#j2[b]
0066A1EF = mokou5B_NEW1D_CHARGE

;#spd
func mokou5B_NEW2A
  fstp dword ptr [esp+0x3E8]
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x04
  je short LABEL0
  cmp word ptr [esi+0x7D2],0x03
  je short LABEL1
  cmp word ptr [esi+0x7D2],0x02
  je short LABEL2
  cmp word ptr [esi+0x7D2],0x01
  je short LABEL3
  jmp short LABEL4
  LABEL0:
  ;#24.5
  fld dword ptr [0x85D124]
  jmp END
  LABEL1:
  ;#21.
  fld dword ptr [0x858828]
  jmp END
  LABEL2:
  ;#17.5
  fld dword ptr [0x85B9D0]
  jmp END
  LABEL3:
  ;#14.
  fld dword ptr [0x85B9D4]
  jmp END
  LABEL4:
  ;#10.5
  fld dword ptr [0x85C610]
  jmp END
  END:
  popad
  popf
  fstp dword ptr [esp+0x3E8]
end
func mokou5B_NEW2A_CHARGE
  fstp dword ptr [esp+0x9C]
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x04
  je short LABEL0
  cmp word ptr [esi+0x7D2],0x03
  je short LABEL1
  cmp word ptr [esi+0x7D2],0x02
  je short LABEL2
  cmp word ptr [esi+0x7D2],0x01
  je short LABEL3
  jmp short LABEL4
  LABEL0:
  ;#24.5
  fld dword ptr [0x85D124]
  jmp END
  LABEL1:
  ;#21.
  fld dword ptr [0x858828]
  jmp END
  LABEL2:
  ;#17.5
  fld dword ptr [0x85B9D0]
  jmp END
  LABEL3:
  ;#14.
  fld dword ptr [0x85B9D4]
  jmp END
  LABEL4:
  ;#10.5
  fld dword ptr [0x85C610]
  jmp END
  END:
  popad
  popf
  fstp dword ptr [esp+0x9C]
end
func mokou5B_NEW2B
  fstp dword ptr [esp+0x48C]
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x04
  je short LABEL0
  cmp word ptr [esi+0x7D2],0x03
  je short LABEL1
  cmp word ptr [esi+0x7D2],0x02
  je short LABEL2
  cmp word ptr [esi+0x7D2],0x01
  je short LABEL3
  jmp short LABEL4
  LABEL0:
  ;#24.5
  fld dword ptr [0x85D124]
  jmp END
  LABEL1:
  ;#21.
  fld dword ptr [0x858828]
  jmp END
  LABEL2:
  ;#17.5
  fld dword ptr [0x85B9D0]
  jmp END
  LABEL3:
  ;#14.
  fld dword ptr [0x85B9D4]
  jmp END
  LABEL4:
  ;#10.5
  fld dword ptr [0x85C610]
  jmp END
  END:
  popad
  popf
  fstp dword ptr [esp+0x48C]
end
func mokou5B_NEW2B_CHARGE
  fstp dword ptr [esp+0xB4]
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x04
  je short LABEL0
  cmp word ptr [esi+0x7D2],0x03
  je short LABEL1
  cmp word ptr [esi+0x7D2],0x02
  je short LABEL2
  cmp word ptr [esi+0x7D2],0x01
  je short LABEL3
  jmp short LABEL4
  LABEL0:
  ;#24.5
  fld dword ptr [0x85D124]
  jmp END
  LABEL1:
  ;#21.
  fld dword ptr [0x858828]
  jmp END
  LABEL2:
  ;#17.5
  fld dword ptr [0x85B9D0]
  jmp END
  LABEL3:
  ;#14.
  fld dword ptr [0x85B9D4]
  jmp END
  LABEL4:
  ;#10.5
  fld dword ptr [0x85C610]
  jmp END
  END:
  popad
  popf
  fstp dword ptr [esp+0xB4]
end
func mokou5B_NEW2C
  fstp dword ptr [esp+0x3B8]
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x04
  je short LABEL0
  cmp word ptr [esi+0x7D2],0x03
  je short LABEL1
  cmp word ptr [esi+0x7D2],0x02
  je short LABEL2
  cmp word ptr [esi+0x7D2],0x01
  je short LABEL3
  jmp short LABEL4
  LABEL0:
  ;#24.5
  fld dword ptr [0x85D124]
  jmp END
  LABEL1:
  ;#21.
  fld dword ptr [0x858828]
  jmp END
  LABEL2:
  ;#17.5
  fld dword ptr [0x85B9D0]
  jmp END
  LABEL3:
  ;#14.
  fld dword ptr [0x85B9D4]
  jmp END
  LABEL4:
  ;#10.5
  fld dword ptr [0x85C610]
  jmp END
  END:
  popad
  popf
  fstp dword ptr [esp+0x3B8]
end
func mokou5B_NEW2C_CHARGE
  fstp dword ptr [esp+0x78]
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x04
  je short LABEL0
  cmp word ptr [esi+0x7D2],0x03
  je short LABEL1
  cmp word ptr [esi+0x7D2],0x02
  je short LABEL2
  cmp word ptr [esi+0x7D2],0x01
  je short LABEL3
  jmp short LABEL4
  LABEL0:
  ;#24.5
  fld dword ptr [0x85D124]
  jmp END
  LABEL1:
  ;#21.
  fld dword ptr [0x858828]
  jmp END
  LABEL2:
  ;#17.5
  fld dword ptr [0x85B9D0]
  jmp END
  LABEL3:
  ;#14.
  fld dword ptr [0x85B9D4]
  jmp END
  LABEL4:
  ;#10.5
  fld dword ptr [0x85C610]
  jmp END
  END:
  popad
  popf
  fstp dword ptr [esp+0x78]
  push edx
end
func mokou5B_NEW2D
  fstp dword ptr [esp+0x2E0]
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x04
  je short LABEL0
  cmp word ptr [esi+0x7D2],0x03
  je short LABEL1
  cmp word ptr [esi+0x7D2],0x02
  je short LABEL2
  cmp word ptr [esi+0x7D2],0x01
  je short LABEL3
  jmp short LABEL4
  LABEL0:
  ;#24.5
  fld dword ptr [0x85D124]
  jmp END
  LABEL1:
  ;#21.
  fld dword ptr [0x858828]
  jmp END
  LABEL2:
  ;#17.5
  fld dword ptr [0x85B9D0]
  jmp END
  LABEL3:
  ;#14.
  fld dword ptr [0x85B9D4]
  jmp END
  LABEL4:
  ;#10.5
  fld dword ptr [0x85C610]
  jmp END
  END:
  popad
  popf
  fstp dword ptr [esp+0x2E0]
end
func mokou5B_NEW2D_CHARGE
  fstp dword ptr [esp+0x84]
  pushf
  pushad
  cmp word ptr [esi+0x7D2],0x04
  je short LABEL0
  cmp word ptr [esi+0x7D2],0x03
  je short LABEL1
  cmp word ptr [esi+0x7D2],0x02
  je short LABEL2
  cmp word ptr [esi+0x7D2],0x01
  je short LABEL3
  jmp short LABEL4
  LABEL0:
  ;#24.5
  fld dword ptr [0x85D124]
  jmp END
  LABEL1:
  ;#21.
  fld dword ptr [0x858828]
  jmp END
  LABEL2:
  ;#17.5
  fld dword ptr [0x85B9D0]
  jmp END
  LABEL3:
  ;#14.
  fld dword ptr [0x85B9D4]
  jmp END
  LABEL4:
  ;#10.5
  fld dword ptr [0x85C610]
  jmp END
  END:
  popad
  popf
  fstp dword ptr [esp+0x84]
end
00669042 = mokou5B_NEW2A
;#5[b]
006691AB = mokou5B_NEW2A_CHARGE
;#6b
006694F6 = mokou5B_NEW2B
;#6[b]
0066965A = mokou5B_NEW2B_CHARGE
;#jb
00669B0E = mokou5B_NEW2C
;#j[b]
00669C71 = mokou5B_NEW2C_CHARGE
;#j2b
0066A031 = mokou5B_NEW2D
;#j2[b]
0066A199 = mokou5B_NEW2D_CHARGE

;#skip spirit stuff
0066900E = mokouNOP: 14
;#5[b]
00669177 = mokouNOP: 14
;#6b
006694AB = mokouNOP: 14
;#6[b]
0066961D = mokouNOP: 14
;#jb
00669AD2 = mokouNOP: 14
;#j[b]
00669C3A = mokouNOP: 14
;#j2b
00669FF3 = mokouNOP: 14
;#j2[b]
0066A163 = mokouNOP: 14

;#angle
func mokou5B_NEW4A
  fld dword ptr [esi+0x7F0]
  fsub st0,st1
  fadd dword ptr [0x85B9D0] ;# start speed
end
func mokou5B_NEW4B
  fld dword ptr [esi+0x7F0]
  fsub st0,st1
  fadd dword ptr [0x85B9D0] ;# start speed
end
;00669026 = mokou5B_NEW4A
;#6b
;0066963E = mokou5B_NEW4B

func mokou5SC_NEWVOLC_FOLLOW
  mov eax,[esi+0x398]
  fld dword ptr [eax+0xEC]
  fstp dword ptr [esi+0xEC]
  movsx eax,word ptr [esi+0x13E]
end
00684154 = mokou5SC_NEWVOLC_FOLLOW

func mokou5SC_NEWVOLC_SUBSEQ
  cmp cx,0x00B4
  jg 0x673B1F
  cmp word ptr [esi+0x13E],0x03
  jne 0x673B1F
end
00673A47 = mokou5SC_NEWVOLC_SUBSEQ

func mokou5SC_NEWVOLC_BULLET
  cmp word ptr [esi+0x13E],0x02
  je 0x68025F
  cmp dword ptr [esi+0x144],0x1F
  jge LABELEND
  mov ecx,[esi+0x398]
  fld dword ptr [ecx+0xEC]
  fstp dword ptr [esi+0xEC]
  fld1
  fstp dword ptr [esi+0xF0]
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1
  LABELEND:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL1:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret
end
006842AC = mokou5SC_NEWVOLC_BULLET

func mokou5SC_NEWVOLC_FLASH
  cmp word ptr [esi+0x140],0x0003
end
00673BB7 = mokou5SC_NEWVOLC_FLASH

func mokou5SC_NEWVOLC_SOUND
  cmp word ptr [esi+0x13E],0x03
  jne LABEL2
  LABEL3:
  push 0x1A
  mov ecx,esi
  call 0x464980
  jmp LABELEND
  
  LABEL2:
  cmp word ptr [esi+0x13E],0x00
  jne LABELEND
  cmp word ptr [esi+0x140],0x04
  jne LABELEND
  cmp word ptr [esi+0x142],0x00
  jne LABELEND
  mov byte ptr [esi+0x194],0x01
  mov dword ptr [esi+0x190],0x00000000
  push 0x08
  mov ecx,esi
  call 0x464980
  jmp LABELEND
  
  LABELEND:
  jmp 0x673B38
end
00673B2F = mokou5SC_NEWVOLC_SOUND

func mokou5SC_NEWVOLC_NOP
  cmp byte ptr [esi+0x194],0x00
  jmp 0x6842A1
end
0068422C = mokou5SC_NEWVOLC_NOP

func mokou5SC_NEWVOLC_DIVE
  fstp dword ptr [esi+0xF8]
  cmp word ptr [esi+0x13E],0x00
  jne LABELEND
  cmp word ptr [esi+0x140],0x05
  jl LABELEND
  fldz
  fsub dword ptr [0x85B3B0]
  fstp dword ptr [esi+0xF8]
  fld dword ptr [0x85C160]
  fstp dword ptr [esi+0xF4]
  LABELEND:
end
00673C82 = mokou5SC_NEWVOLC_DIVE

func mokou5SC_NEWVOLC_HEIGHTCHECK
  nop
  cmp word ptr [esi+0x140],0x01
  jle LABEL1
  fld dword ptr [esi+0xF8]
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0xF8]
  
  fldz
  fld dword ptr [esi+0xF8]
  fcompp
  fnstsw ax
  test ah,0x41
  je short LABEL2
  
  fldz
  fstp dword ptr [esi+0xF8]
  
  LABEL2:
  LABEL1:
end
006737B5 = mokou5SC_NEWVOLC_HEIGHTCHECK

func mokou5SC_NEWVOLC_GROUND
  cmp word ptr [esi+0x140],0x01
  jne LABEL2
  mov dword ptr [esi+0x190],0x00
  mov byte ptr [esi+0x194],0x01
  
  fld dword ptr [0x85BA68]
  fstp dword ptr [esi+0xF8]
  fld qword ptr [0x858820]
  fstp dword ptr [esi+0x100]
  LABEL2:
  cmp word ptr [esi+0x140],0x09
  jne LABEL1
  ;# change sequence
  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00000292
  mov ecx,esi
  call eax
  LABEL1:
end
00673951 = mokou5SC_NEWVOLC_GROUND

func mokouD22_BULLET_ONHIT
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0006
  jne LABEL1
  push 0x02
  push 0x02
  push 0x00
  call 0x48CE90
  test al,al
  jne 0x6801B9
  LABEL1:
  movzx eax,word ptr [esi+0x13E]
end
006813EC = mokouD22_BULLET_ONHIT

func mokouD22_NEWDUR
  mov ecx,0x0000003C
  cmp [esi+0x144],ecx
end
0068160C = mokouD22_NEWDUR

func mokouD22_NEWBULLET
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fmul dword ptr [0x867870]
  fst dword ptr [eax+0x04]
  jmp 0x681693
end
0068168A = mokouD22_NEWBULLET

func mokouD22_NEWANGLE1
  fldz
end
0066EF81 = mokouD22_NEWANGLE1

func mokouD22_NEWANGLE2
  fldz
  fsub dword ptr [0x85B98C]
end
0066F036 = mokouD22_NEWANGLE2

func mokouD22_NEWANGLE3
  fldz
  fadd dword ptr [0x85B98C]
end
0066F070 = mokouD22_NEWANGLE3

func mokouD22_NEWALWAYS42
  mov al,0x04
end
006815E0 = mokouD22_NEWALWAYS42

func mokouD22_NEWALWAYS4
  cmp byte ptr [esi+0x6A6],0x00
end
0066EEC0 = mokouD22_NEWALWAYS4
0066ED3D = mokouD22_NEWALWAYS4
0066F013 = mokouD22_NEWALWAYS4

func mokouD22_NEWHEIGHT
  fld dword ptr [esi+0xF0]
  fadd dword ptr [0x857DC8]
end
0066F04B = mokouD22_NEWHEIGHT
0066EFE6 = mokouD22_NEWHEIGHT
0066EFAF = mokouD22_NEWHEIGHT
0066EDBB = mokouD22_NEWHEIGHT

func mokouD22_ALWAYSLEAP
  ;mov dword ptr [esi+0x190],0x01
  push 0x07
  jmp 0x66EF43
end
0066EC4D = mokouNOP
0066EC67 = mokouD22_ALWAYSLEAP

func mokouD22_FORWARDLEAP
  fldz
  fsub dword ptr [0x858830]
  fstp dword ptr [esi+0xF4]
  fld dword ptr [0x858830]
  push 0x03
  fstp dword ptr [esi+0xF8]
  lea ecx,[esp+0xE4]
  fld dword ptr [0x85B9C0]
  jmp 0x66ECA0
end
;# d22
;# forward leap
0066EC7F = mokouD22_FORWARDLEAP
;# back leap
func mokouD22_BACKLEAP
  fldz
  fsub dword ptr [0x858830]
  fstp dword ptr [esi+0xF4]
  push 0x03
  fld dword ptr [0x858830]
  lea eax,[esp+0xD8]
  fstp dword ptr [esi+0xF8]
  push eax
  fld dword ptr [0x85B9C0]
  jmp 0x66EE24
end
0066EDFC = mokouD22_BACKLEAP
;# up
func mokouD22_UPLEAP
  fldz
  fsub dword ptr [0x858830]
  fstp dword ptr [esi+0xF4]
  fld dword ptr [0x858830]
  lea ecx,[esp+0xF0]
  fstp dword ptr [esi+0xF8]
  push ecx
  fld dword ptr [0x85B9C0]
  jmp 0x66EF77
end
0066EF5D = mokouD22_UPLEAP
;# forward leap fix


;#a214 punch c angle
func mokouA214PUNCH_CANG
  fld dword ptr [0x85B3B0]
end
0066E6ED = mokouA214PUNCH_CANG
0066EAE0 = mokouA214PUNCH_CANG

;# a236 maple fan distance
;#b
func mokouA236MAPLE_0
  imul edx,edx,0x00000000
end
func mokouA236MAPLE_1
  imul eax,eax,0x00000000
end
func mokouA236MAPLE_2
  imul eax,eax,0x000000C8
end
0066C3A7 = mokouA236MAPLE_0
0066C479 = mokouA236MAPLE_1
;#c
0066C5CE = mokouA236MAPLE_2
0066C69D = mokouA236MAPLE_2

;# 3sc tornado decel
func mokou3SCTORN_DEC
  fsub qword ptr [0x858EA8]
end
006827E9 = mokou3SCTORN_DEC
;# 3sc tornado min spd
func mokou3SCTORN_MINSPD
  fst dword ptr [esi+0xF4]
  fldz
end
006827F7 = mokou3SCTORN_MINSPD: 8

func mokou66C
  fld qword ptr [0x85CAB8]
end
0066B7B6 = mokou66C

;# 5sc possession
;# x start
00673297 = mokouFLDZ
;# y start
006732A5 = mokouFLDZ
;# x final
006727A6 = mokouFLDZ
;# y final
006733A3 = mokouFLDZ

;# scales
00683F3E = mokouNOP: 6
00683F50 = mokouNOP: 6

;# insert block
func mokouPOSSESS_SKIP
  jne 0x683DE8
  jmp 0x683F38
end
func mokouPOSSESS_SKIP1
  jmp 0x683F38
end
00683B8D = mokouPOSSESS_SKIP
00683B94 = mokouPOSSESS_SKIP1
;# end with jmp 00680283
;#00683B9C
func mokouPOSSESS_SKIP2
  jmp 0x683B9A
end
00683F5C = mokouPOSSESS_SKIP2

;#bullet creation example
;#00683B9C = 90 90 90 8B 8E 70 01 00 00 8B 99 F0 00 00 00 8B 89 EC 00 00 00 90 89 8E EC 00 00 00 89 9E F0 00 00 00 90 8B 9E 42 01 00 00 66 81 FB 04 00 75 23 90 90 90 90 90 90 90 90 90 90 BD 08 00 00 00 8B DE 8B B6 98 03 00 00 B9 00 00 00 00 E9 A3 EE FE FF 8B F3 E9 8F C6 FF FF 68 FF FF FF FF 68 C8 00 00 00 E9 B1 EE FE FF 90 90
func mokouPOSSESS
  mov ecx,[esi+0x170]
  mov ebx,[ecx+0xF0]
  mov ecx,[ecx+0xEC]
  mov [esi+0xEC],ecx
  mov [esi+0xF0],ebx
  
  mov ebx,[esi+0x398]
  movzx ebx,word ptr [ebx+0x13C]
  cmp bx,0x0032
  
  jl short LABEL1
  ;cmp bx,0x00A6
  cmp bx,0x00C7
  jnl short LABEL1
  jmp short LABEL2
  LABEL1:
  mov ebx,[esi+0x142]
  cmp bx,0x0004
  jne short LABEL2
  mov ebp,0x00000008
  mov ebx,esi
  mov esi,[esi+0x398]
  mov ecx,0x00000000
  jmp 0x672A90
  
  LABEL2:
  jmp 0x680283
end

00683B9A = mokouPOSSESS

func mokouPOSSESS_2
  mov esi,ebx
  jmp 0x680283
end
00672B3C = mokouPOSSESS_2
func mokouPOSSESS_3
  push 0xFFFFFFFF
  push 0x000000C8
  jmp 0x672AB7
end
00672AAF = mokouPOSSESS_3

;#00683E48 = D9 86 EC 00 00 00 D9 9E EC 00 00 00 90 90 90 90 D9 86 F0 00 00 00 D9 9E F0 00 00 00

func mokouPOSSESS_A
  pushf
  pushad
  cmp dword ptr [esi+0x144],0x00
  jne short LABEL1
  mov ecx,[esi+0x170]
  mov ebx,[ecx+0xF0]
  mov ecx,[ecx+0xEC]
  mov [esi+0xEC],ecx
  mov [esi+0xF0],ebx
  LABEL1:
  popad
  popf
  
  cmp dword ptr [esi+0x144],0x1E
  jle 0x683E64
  jmp 0x683E86
end
00683E48 = mokouPOSSESS_A

func mokouPOSSESS_SOUND_UNUSED
  cmp word ptr [esi+0x140],0x0059
  jne short LABEL1
  push 0x18
  mov ecx,[esi+0x398]
  call 0x464980
  LABEL1:
  cmp [esi+0x13E],bx
end
;#00683C3E = C7 86 11 01 00 00 01 FF FF FF D9 EE

func mokouPOSSESS_END
  jmp 0x680283
end
00683CF4 = mokouPOSSESS_END

func mokouPOSSESS_4
  fld dword ptr [esi+0x11C]
  mov eax,[esi+0x35C]
  mov dword ptr [esi+0x12C],0x00000000
  sub esp,0x08
  lea ecx,[esi+0x04]
  fstp dword ptr [esi+0x11C]
  fld dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  jmp 0x683E18
end
00683DE8 = mokouPOSSESS_4

;#flash point
func mokouPOSSESS_FLASH
  cmp word ptr [esi+0x140],0x03
end
006733F6 = mokouPOSSESS_FLASH

;#3sc meteor sound maybe fix this another time, it crashes with roll
;#0068281B = E8 14 14 00 00
func mokou3SCMETEOR_SOUND
  cmp word ptr [esi+0x13E],0x0001
  jne short LABEL1
  cmp word ptr [esi+0x140],0x0059
  jne short LABEL1
  push 0x18
  mov ecx,[esi+0x398]
  call 0x464980
  LABEL1:
  cmp [esi+0x13E],bx
  nop
end

006828BE = mokou3SCMETEOR_SOUND
;#