func flandreFLDZ
  fldz
end

func flandreFLD1
  fld1
end

func flandreNOP
  nop
end

func flandreID_FIX
  mov dword ptr [esi+0x34C],0x00000018
  ;mov dword ptr [esi+0x34C],0x0000002E
  cmp [esi+0x196],bp
end
00587B8B = flandreID_FIX

func flandreSLICERSC_DECEL
  fsub dword ptr [0x8677A8]
end
;0059548D = flandreSLICERSC_DECEL

func flandreSLICERSC_SPD
  fld dword ptr [0x85BBE4]
end
00595685 = flandreSLICERSC_SPD

00595674 = flandreFLDZ

func flandreSLICERSC_LOOP
  cmp ax,0x0008
  jnl 0x596755
end
00595472 = flandreSLICERSC_LOOP

;#OBJECT CREATION
;#PARTICLE CREATION
func flandreA236SWIPE_PARTICLE

  ;#orb cost
  mov ecx,esi
  push 0x78
  push 0x000000C8
  call 0x47A9E0
  
  ;#card meter gain
  mov ecx,esi
  push 0x32
  call 0x487870
  
  mov ecx,esi
  ;#?
  push 0x03
  ;#alloc
  lea edx,[esp+0x52C]
  push edx
  ;#angle?
  fldz
  fstp dword ptr [esp+0x530]
  ;#?
  push 0x01
  ;#angle?
  fldz
  fstp dword ptr [esp+0x538]
  ;#subseq
  fld dword ptr [0x85B870]
  fstp dword ptr [esp+0x53C]
  ;#facing
  movzx eax,byte ptr [esi+0x104]
  push eax
  sub esp,0x08
  ;#y
  fld dword ptr [esi+0xF0]
  fstp dword ptr [esp+0x04]
  ;#x
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x350
  call 0x46EB30
  
  fld dword ptr [0x85B830]
end
0058F214 = flandreA236SWIPE_PARTICLE
0058F4E0 = flandreA236SWIPE_PARTICLE
0058F6DB = flandreA236SWIPE_PARTICLE

func flandreA236SWIPE_PARTICLE_C
  call 0x464980

  ;#orb cost
  mov ecx,esi
  push 0x78
  push 0x000000C8
  call 0x47A9E0
  
  ;#card meter gain
  mov ecx,esi
  push 0x32
  call 0x487870
  
  mov ecx,esi
  ;#?
  push 0x03
  ;#alloc
  lea edx,[esp+0x52C]
  push edx
  ;#angle?
  fldz
  fstp dword ptr [esp+0x530]
  ;#?
  push 0x01
  ;#angle?
  fldz
  fstp dword ptr [esp+0x538]
  ;#subseq
  fld dword ptr [0x85B870]
  fstp dword ptr [esp+0x53C]
  ;#facing
  movzx eax,byte ptr [esi+0x104]
  push eax
  sub esp,0x08
  ;#y
  fld dword ptr [esi+0xF0]
  fstp dword ptr [esp+0x04]
  ;#x
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x350
  call 0x46EB30
end
0058EB42 = flandreA236SWIPE_PARTICLE_C
0058EE15 = flandreA236SWIPE_PARTICLE_C
0058EFD9 = flandreA236SWIPE_PARTICLE_C

func flandreA236SWIPE_CANCEL
  nop
end
0058F61D = flandreA236SWIPE_CANCEL:17

func flandreA236SWIPE
  cmp word ptr [esi+0x13E],0x05
  je LABEL05
  cmp word ptr [esi+0x13E],0x06
  je LABEL06
  jmp END
  
  LABEL05:
  push 0x0
  push 0x0
  call 0x48CF60
  mov eax,[esi+0x398]
  cmp word ptr [eax+0x13C],0x1FE
  je LABELNEXT
  cmp word ptr [eax+0x13C],0x1FF
  je LABELNEXT
  jmp LABELEND
  LABELNEXT:
  cmp word ptr [eax+0x13E],0x00
  je LABELEND
  jmp END
  
  LABEL06:
  push 0x0
  push 0x0
  call 0x48CF60
  mov eax,[esi+0x398]
  cmp word ptr [eax+0x13C],0x1FF
  jne LABELEND
  cmp word ptr [eax+0x13E],0x00
  je LABELEND
  jmp END
  
  LABELEND:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp, ebp
  pop ebp
  ret
  
  END:
  ja 0x5A0DDA
end
005A0D0A = flandreA236SWIPE

func flandreSTRETCH_X
  fld dword ptr [0x85AE94]
end
0059564E = flandreSTRETCH_X

;# flandre trickster bats graze resistance grazeres
0059FCAC = flandreNOP
0059FCB3 = flandreNOP


func flandre6ANEW_1
  fldz
  push edx
  fstp dword ptr [esp+0x530]
  fldz
  push 0x01
  fstp dword ptr [esp+0x538]
  cmp word ptr [esi+0x13C],0x12E
  jne JSIXA
  fld dword ptr [0x871538]
  jmp END
  JSIXA:
  fldz
  END:
  jmp 0x58A6C3
end
0058A6B0 = flandre6ANEW_1

func flandre6ACNEW_1
  fstp dword ptr [esp+0x50C]
  fldz
  push eax
  fstp dword ptr [esp+0x514]
  cmp word ptr [esi+0x13C],0x12E
  jne JSIXA
  fld dword ptr [0x871538]
  jmp END
  JSIXA:
  fldz
  END:
  jmp 0x58A7AB
end
0058A79C = flandre6ACNEW_1

func flandre6ANEW
  cmp word ptr [eax+0x13C],0x12E
end
005A0D94 = flandre6ANEW

func flandreBATFORM_PROJ
  mov ecx,[esi+0x398]
  
  cmp word ptr [esi+0x144],0x00
  jne HITBOX
  cmp word ptr[ esi+0x142],0x00
  jne HITBOX
  cmp word ptr [esi+0x140],0x00
  jne HITBOX
  mov byte ptr [esi+0x18C],0x04
  
  mov dword ptr [esi+0x190],0x00000000
  mov byte ptr [esi+0x194],0x01
  HITBOX:
  
  fld dword ptr [ecx+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [ecx+0xF0]
  fadd dword ptr [0x871540]
  fstp dword ptr [esi+0xF0]
  cmp word ptr [ecx+0x13C],0x1FA
  je short CVER
  fldz
  fsub dword ptr [0x85AE94]
  fsub dword ptr [0x85AE94]
  fsub dword ptr [0x85AE94]
  fstp dword ptr [esi+0x12C]
  jmp END
  CVER:
  fldz
  fsub dword ptr [0x85C500]
  fstp dword ptr [esi+0x12C]
  END:
  
  cmp word ptr [ecx+0x13E],0x02
  jne LABEL1
  cmp word ptr [ecx+0x144],0x00
  jne LABEL1
  cmp word ptr [ecx+0x142],0x00
  jne LABEL1
  cmp word ptr [ecx+0x140],0x00
  jne LABEL1
  mov word ptr [esi+0x142],0xFF
  mov word ptr [esi+0x140],0x80
  
  LABEL1:
end
0059E784 = flandreBATFORM_PROJ

func flandreBATFORM_PROJSTICK
  jmp 0x59E7EB
end
0059E7E0 = flandreBATFORM_PROJSTICK

func flandreBATFORM
  fstp dword ptr [esi+0xF4]
end
0058E4DC = flandreBATFORM

func flandreBATFORM_OBJ
end

func flandreBATFORMB

  cmp word ptr [esi+0x13E],0x00
  jne OBJSKIP
  cmp word ptr [esi+0x142],0x00
  jne OBJSKIP
  cmp word ptr [esi+0x140],0x03
  jne OBJSKIP
  
  ;# sound
  
  push 0x01
  mov ecx,esi
  call 0x464980
  
  ;#obj1
  fldz
  fstp dword ptr [esp+0x390]
  push 0x03
  fldz
  fstp dword ptr [esp+0x398]
  lea ecx,[esp+0x394]
  ;#subseq
  fldz
  cmp byte ptr [esi+0x6A8],0x04
  jl short LOWLV1
  fadd dword ptr [0x8589F0]
  jmp FINLV1
  LOWLV1:
  FINLV1:
  fstp dword ptr [esp+0x39C]
  push ecx
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0xF0]
  push 0x01
  push edx
  sub esp,0x08
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x32B
  call 0x46EB30
  
  
  ;#obj2
  fldz
  fstp dword ptr [esp+0x390]
  push 0x03
  fldz
  fstp dword ptr [esp+0x398]
  lea ecx,[esp+0x394]
  ;#subseq
  fld1
  cmp byte ptr [esi+0x6A8],0x04
  jl short LOWLV2
  fadd dword ptr [0x8589F0]
  jmp FINLV2
  LOWLV2:
  FINLV2:
  fstp dword ptr [esp+0x39C]
  push ecx
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0xF0]
  push 0x01
  push edx
  sub esp,0x08
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x32B
  call 0x46EB30
  
  OBJSKIP:

  cmp word ptr [esi+0x13C],0x1FA
  je CMMT

  BMMT:
  cmp word ptr [esi+0x13E],0x01
  je MMT1
  cmp word ptr [esi+0x13E],0x02
  je MMT2
  
  fldz
  fst dword ptr [esi+0xF4]
  fstp dword ptr [esi+0xF8]
  jmp AMMT
  
  MMT1:
  fld dword ptr [0x85B3B0]
  fdiv dword ptr [0x85B954]
  fstp dword ptr [esi+0xF4]
  fld dword ptr [0x85B830]
  fdiv dword ptr [0x85B954]
  fstp dword ptr [esi+0xF8]
  jmp AMMT
  
  MMT2:
  ;fld dword ptr [0x85BC7C]
  fld1
  fstp dword ptr [esi+0xF4]
  
  cmp dword ptr [esi+0x144],0x00
  jne MMT2A
  cmp word ptr [esi+0x142],0x00
  jne MMT2A
  cmp word ptr [esi+0x140],0x00
  jne MMT2A
  
  ;#sound
  push 0x01
  mov ecx,esi
  call 0x464980
  
  fld dword ptr [0x85BC7C]
  fstp dword ptr [esi+0xF8]
  fld dword ptr [0x8677A8]
  fstp dword ptr [esi+0x100]
  mov dword ptr [esi+0x190],0x01
  mov byte ptr [esi+0x194],0x00
  jmp MMT2B
  
  MMT2A:
  fld dword ptr [esi+0xF8]
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0xF8]
  
  MMT2B:
  jmp AMMT
  
  

  CMMT:
  cmp word ptr [esi+0x13E],0x01
  je CMMT1
  cmp word ptr [esi+0x13E],0x02
  je CMMT2
  
  fldz
  fst dword ptr [esi+0xF4]
  fstp dword ptr [esi+0xF8]
  jmp AMMT
  
  CMMT1:
  fld dword ptr [0x85BBE4]
  fdiv dword ptr [0x85B954]
  fstp dword ptr [esi+0xF8]
  fld dword ptr [0x85BC7C]
  fdiv dword ptr [0x85B954]
  fstp dword ptr [esi+0xF4]
  jmp AMMT
  
  CMMT2:
  ;fld dword ptr [0x85BC7C]
  fld1
  fstp dword ptr [esi+0xF4]
  
  cmp dword ptr [esi+0x144],0x00
  jne CMMT2A
  cmp word ptr [esi+0x142],0x00
  jne CMMT2A
  cmp word ptr [esi+0x140],0x00
  jne CMMT2A
  
  ;#sound
  push 0x01
  mov ecx,esi
  call 0x464980
  
  fld dword ptr [0x85BC7C]
  fstp dword ptr [esi+0xF8]
  fld dword ptr [0x8677A8]
  fstp dword ptr [esi+0x100]
  mov dword ptr [esi+0x190],0x01
  mov byte ptr [esi+0x194],0x00
  jmp CMMT2B
  
  CMMT2A:
  fld dword ptr [esi+0xF8]
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0xF8]
  
  CMMT2B:
  jmp AMMT
  
  AMMT:
  cmp word ptr [esi+0x13E],0x00
  je LABEL01
  jmp LABEL02
  LABEL01:
  mov ecx,esi
  call 0x487CA0
  jmp LABEL03
  LABEL02:
  mov ecx,esi
  call 0x487EA0
  test al,al
  jne END
  
  BATFORM1:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1
  END:
  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00
  mov ecx,esi
  call eax
  jmp 0x58E2ED
  
  LABEL1:
  cmp dword ptr [esi+0x144],0x00
  ;#jne to pops
  jne 0x58E2ED
  cmp word ptr [esi+0x142],0x00
  ;#jne to pops
  jne 0x58E2ED
  cmp word ptr [esi+0x140],0x00
  ;#jne to pops
  jne 0x58E2ED
  
  cmp word ptr [esi+0x13E],0x01
  jne SS2
  
  push 0x78
  push 0xC8
  mov ecx,esi
  call 0x47A9E0
  push 0x01
  mov ecx,esi
  call 0x487870
  ;mov dword ptr [esi+0x190],0x00
  ;mov byte ptr [esi+0x194],0x01
  ;#jmp to pop and ret
  jmp 0x58E2ED
  
  SS2:
  cmp word ptr [esi+0x13E],0x03
  ;#jne to pops
  jne 0x58E2ED
  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x00
  mov ecx,esi
  call edx
  ;#pops
  jmp 0x58E2ED
  
  LABEL03:
  ;mov byte ptr [esi+0x18C],0x04
  jmp BATFORM1
end
0058E2F5 = flandreBATFORMB

func flandreBATFORMC
  jmp 0x58E2F5
end
0058E974 = flandreBATFORMC

func flandreBATFORM_COST
end

func flandreJ2A_REC2
  je LABEL1
  cmp word ptr [esi+0x13E],0x01
  jne LABEL1
  cmp word ptr [esi+0x140],0x02
  jg LABEL1
  cmp word ptr [esi+0x142],0x01
  jne LABEL1
  cmp dword ptr [esi+0x190],0x00000001
  je LABELNEXT
  ;cmp dword ptr [esi+0x190],0x00000002
  ;je LABELNEXT
  cmp dword ptr [esi+0x190],0x00000007
  je LABELNEXT
  jmp LABEL1
  LABELNEXT:
  mov word ptr [esi+0x142],0x03
  LABEL1:
  cmp [esi+0x13E],bp
  jne 0x599FB0
end
0058ACC9 = flandreJ2A_REC2

;#00647F19 refer to komachi j6a
func flandreJ2A_REC
  mov edx,[esi]
  mov ecx,esi
  cmp dword ptr [esi+0x190],0x00000001
  je LABELNEXT
  cmp dword ptr [esi+0x190],0x00000002
  je LABELNEXT
  cmp dword ptr [esi+0x190],0x00000007
  je LABELNEXT
  jmp LABEL1
  LABELNEXT:
  mov eax,[edx+0x14]
  call eax
  jmp short LABEL3
  
  LABEL1:
  mov eax,[edx+0x08]
  push 0x0A
  call eax
  
  LABEL3:
  jmp 0x58AC63
end
0058AC5A = flandreJ2A_REC

func flandre5B_QUANT
  add edi,ebx
  cmp edi,0x01
end
func flandre5B_QUANT1
  add edi,0x01
  cmp edi,0x01
end

func flandre5B_NEW0
  fld dword ptr [0x85B3B0]
end
func flandre5B_NEW0_CHARGE
  fld dword ptr [0x87150C]
end

func flandre5B_NEW1
  push 0x01
  call 0x4099F0
end

;#5B
;#quantity
0058B5F2 = flandreFLD1
;#proj spd something
0058B57E = flandre5B_NEW0
;#angle
0058B564 = flandreNOP
;#angle too
0058B540 = flandre5B_NEW1

;#5[b]
0058B797 = flandre5B_QUANT
0058B731 = flandre5B_NEW0_CHARGE
0058B717 = flandreNOP
0058B6F3 = flandre5B_NEW1

;#6b
0058B9FD = flandre5B_QUANT
0058B98D = flandre5B_NEW0
0058B975 = flandreNOP
0058B951 = flandre5B_NEW1
;#6[b]
0058BBAC = flandre5B_QUANT
0058BB3E = flandre5B_NEW0_CHARGE
0058BB24 = flandreNOP
0058BB00 = flandre5B_NEW1
;#2b
0058BD6A = flandre5B_QUANT
0058BCFC = flandre5B_NEW0
0058BCE4 = flandreNOP
0058BCC0 = flandre5B_NEW1
;#jb
0058C055 = flandre5B_QUANT1
0058BFEF = flandre5B_NEW0
0058BFD4 = flandreNOP
0058BFB0 = flandre5B_NEW1
;#j[b]
0058C225 = flandre5B_QUANT1
0058C1BF = flandre5B_NEW0_CHARGE
0058C1A4 = flandreNOP
0058C180 = flandre5B_NEW1
;#j2b
0058C535 = flandre5B_QUANT1
0058C4CF = flandre5B_NEW0
0058C4B4 = flandreNOP
0058C490 = flandre5B_NEW1
;#j2[b]
0058C705 = flandre5B_QUANT1
0058C69F = flandre5B_NEW0_CHARGE
0058C684 = flandreNOP
0058C660 = flandre5B_NEW1

;#todestroy  0059E2D8
func flandre5B_NEWSYS

  ;#grazeres
  push 0x0A
  mov ecx,esi
  call 0x48CDE0
  mov ecx,esi
  
  pushf
  pushad
  cmp dword ptr [esi+0x144],0x0F
  jne short LABELX
  cmp word ptr [esi+0x13E],0x00
  jne short LABELX
  push 0x18
  mov ecx,[esi+0x398]
  call 0x464980
  
  LABELX:
  cmp dword ptr [esi+0x144],0x42
  jg short LABEL1
  fld dword ptr [esi+0xF4]
  fmul dword ptr [esi+0xF4]
  fld dword ptr [esi+0xF8]
  fmul dword ptr [esi+0xF8]
  faddp
  fld dword ptr [0x8589F0] ;# less than 2 zero
  fcompp 
  fnstsw ax
  test ah,0x41
  je short LABEL2
  jmp short LABEL3
  LABEL2:
  mov dword ptr [esi+0x140],0x5A
  ;fld dword ptr [0x85B3B0]
  
  fld dword ptr [esi+0xF4]
  fmul qword ptr [0x85B860]
  fstp dword ptr [esi+0xF4]
  
  fld dword ptr [esi+0xF8]
  fmul qword ptr [0x85B860]
  fstp dword ptr [esi+0xF8]
  
  LABEL3:
  popad
  popf
  cmp dword ptr [esi+0x190],0x00000005
  jmp 0x59DFEB
  
  LABEL1:
  popad
  popf
  cmp dword ptr [esi+0x190],0x00000005
  jmp 0x59E2D8
end

0059DFE4 = flandre5B_NEWSYS
0059E002 = flandreNOP
0059E01D = flandreNOP
0059E034 = flandreNOP

func flandre5B_ANIM
  jmp 0x59E1F2
end
0059E07F = flandre5B_ANIM

func flandreC5C_NEW_GRAZERES
  push 0x0F
  mov ecx,esi
  call 0x48CDE0
end
0059E520 = flandreC5C_NEW_GRAZERES: 9

func flandreC5C_NEW_DENSITY
  push 0x04
  mov ecx,esi
  call 0x48CE30
end
0059E529 = flandreC5C_NEW_DENSITY: 8

func flandreC5C_ONCE
  cmp word ptr [esi+0x140],0x99
end

func flandre5C_HITCOUNT
  pushf
  cmp byte ptr [esi+0x194],0x07
  je short LABEL1
  cmp byte ptr [esi+0x194],0x0A
  je short LABEL2
  jmp short LABEL3
  LABEL1:
  mov byte ptr [esi+0x194],0x03
  LABEL2:
  mov byte ptr [esi+0x194],0x03
  LABEL3:
  popf
  cmp dword ptr [esi+0x190],0x05
end
;#5[c]
0058CAC8 = flandreC5C_ONCE
0058CB6F = flandreC5C_ONCE
;#j5[c]
0058D0C1 = flandreC5C_ONCE
0058D168 = flandreC5C_ONCE

0059E2E7 = flandre5C_HITCOUNT

func flandreDISABLE_J2CHARGE
  cmp byte ptr [esi+0x7F4],0x00
  jmp 0x58D79D
end
;#j2[c]
;0058D737 = flandreDISABLE_J2CHARGE

func flandreJ2C_ONEBULLET
  jmp 0x58DA82
end
0058D976 = flandreJ2C_ONEBULLET

;#3a force standing recovery
func flandre3A_REC
  push 0x00
  mov ecx,esi
  call eax
end
func flandre3A_SPD
  fld dword ptr [0x85BBE4]
end
func flandre3A_DESPD
  fsub dword ptr [0x85BBB8]
end

0058A96B = flandre3A_REC
0058A98C = flandre3A_SPD
0058A938 = flandre3A_DESPD

;# j6A momentum
;#0058AB98
;# j6A startup momentum
;#0059AC35 = 90 90 90 90 90
;#0059AC35 = C6 86 94 01 00 00 01 C7 86 90 01 00 00 00 00 00 00 E9 45 01 00 00
func flandreJ6A_0
  mov byte ptr [esi+0x194],0x01
  jmp 0x59AD90
end
0059AC35 = flandreJ6A_0
;# j6A no bounce
func flandreJ6A_1
  cmp eax,0x07
  cmp eax,0x02
  jmp 0x58AA86
end
0058AA7C = flandreJ6A_1: 10

;# j6a bounce x
func flandreJ6ABOUNCE_X
  fld dword ptr [0x867860]
end
0058AAB3 = flandreJ6ABOUNCE_X
;# j6a landing x
;#0058AAF8
;#0058AC03

;#6a edits
;#0058A753 = E9 87030000 90 90 90 90 90

;#j6a 1 write here. up to 0058AB02
func flandre0
  fldz
  fstp dword ptr [esi+0xF4]
  jmp 0x58AB04
end
0058AACC = flandre0

;#insert in momentum part

func flandre1A
  mov ecx,esi
  push 0x03
  ;push ebx
  jmp 0x58A6A9
end
0058AB98 = flandre1A

;#after draw
func flandre1B
  
  cmp word ptr [esi+0x13C],0x0133
  je short LABELA
  cmp [esi+0x142],bp
  jmp 0x58A6F9
  
  LABELA:
  push 0x1D
  mov ecx,esi
  fld dword ptr [0x85C1BC]
  fstp dword ptr [esi+0xF4]
  fldpi 
  fmul st0,st0
  fstp dword ptr [esi+0xF8]
  fld dword ptr [0x85BC6C]
  fstp dword ptr [esi+0x100]
  call 0x439490
  cmp [esi+0x142],bp
  jne short LABEL1
  cmp [esi+0x140],bx
  jne short LABEL1
  fld dword ptr [0x85C1BC]
  fstp dword ptr [esi+0xF4]
  LABEL1:
  jmp 0x58ABEF
end

0058A6F2 = flandre1B
;#848
func flandre2
  cmp cx,0x0133
  je 0x5A0D3F
  cmp cx,0x0133
end
005A0D2D = flandre2: 12
;#etc
;#0058ABE3 = D9EE 90 90 90 90
;#etc2
;#0058ABD7 = D9EB D9E0 90 90
;#etc3
func flandre3
  cmp word ptr [esi+0x140],0x03
  jne short LABEL2
  jmp short LABEL3
  LABEL2:

  cmp [esi+0x142],bp
  jne short LABEL1
  cmp [esi+0x140],bx
  jne short LABEL1
  fld dword ptr [0x85C1BC]
  fstp dword ptr [esi+0xF4]
  LABEL1:
  jmp 0x58ABEF
  
  LABEL3:
  nop
end
0058AB8E = flandre3: 10
;#etc4
func flandre4
  cmp word ptr [esi+0x140],0x03
end
0058AA35 = flandre4

;#5b bullet count
;#0058B5F2

;#a22 celing
func flandreA22CEILING
  pushf
  cmp word ptr [esi+0x13C],0x0235
  jne short LABEL1
  fldz
  ;fld dword ptr [0x85C5BC]
  jmp LABEL2
  LABEL1:
  fld dword ptr [0x85C610]
  ;fld qword ptr [0x85C578]
  fstp dword ptr [esi+0xF4]
  fldz
  ;fsub dword ptr [0x8596B8]
  LABEL2:
  popf
  nop
end
func flandreA22CEILING_XB
  fld dword ptr [0x85C590]
end
func flandreA22CEILING_XC
  fld dword ptr [0x85C590]
end
func flandreA22CEILING_SKIP
  pushf
  pushad
  cmp word ptr [esi+0x13E],0x0003
  jne short LABELN
  fld dword ptr [esi+0xF8]
  fsub dword ptr [0x867860]
  fstp dword ptr [esi+0xF8]
  
  LABELN:
  cmp word ptr [esi+0x13E],0x0001
  jne short LABEL1
  fld dword ptr [esi+0xF0]
  fdiv dword ptr [0x85C594]
  fstp dword ptr [esi+0xF0]
  cmp word ptr [esi+0x140],0x0000
  jne short LABEL1
  cmp word ptr [esi+0x142],0x0000
  jne short LABEL1
  
  fld dword ptr [esi+0xF0]
  fld dword ptr [0x871544]
  fcompp 
  fnstsw ax
  test ah,0x41
  je short LABEL1
  mov word ptr [esi+0x142],0x0019
  
  LABEL1:
  popad
  popf
  cmp word ptr [esi+0x13E],0x06
end

func flandreA22CEILING_Y
  fsubr dword ptr [0x85D648]
end

func flandreA22CEILING_BOUNCEX
  fld dword ptr [0x85B3B0]
end
func flandreA22CEILING_BOUNCEX1
  fsub qword ptr [0x85A280]
end
func flandreA22CEILING_BOUNCEX2B
  test ah,0x41
  jmp 0x593105
end
func flandreA22CEILING_BOUNCEX2C
  test ah,0x41
  jmp 0x5935BE
end
00592E79 = flandreA22CEILING_BOUNCEX
005930E0 = flandreA22CEILING_BOUNCEX1
005930F8 = flandreA22CEILING_BOUNCEX2B
00593330 = flandreA22CEILING_BOUNCEX
00593599 = flandreA22CEILING_BOUNCEX1
005935B1 = flandreA22CEILING_BOUNCEX2C

00593737 = flandreA22CEILING

005931A7 = flandreA22CEILING_XB
00593660 = flandreA22CEILING_XC

00592D9F = flandreA22CEILING_SKIP
00593256 = flandreA22CEILING_SKIP

;005931B9 = flandreA22CEILING_Y
;00593672 = flandreA22CEILING_Y

;# rocket kick
func flandreROCKETKICK
  fld dword ptr [0x85B990]
end
func flandreROCKETKICK_B
  fld qword ptr [0x85CE10]
end
func flandreROCKETKICK_STARTUPB
  pushf
  pushad
  cmp word ptr [esi+0x140],0x01
  jne short LABEL1
  cmp word ptr [esi+0x142],0x00
  jne short LABEL1
  mov word ptr [esi+0x142],0x20
  LABEL1:
  popad
  popf
  call 0x487CA0
end
;#b angle
0059197D = flandreROCKETKICK
;#b proj spd
00591990 = flandreROCKETKICK_B
;#c angle
00591AF4 = flandreROCKETKICK
;#c spd
00591B07 = flandreFLDZ

0059191D = flandreROCKETKICK_STARTUPB

func flandreROCKETKICK_END
  pushf
  pushad
  
  cmp dword ptr [esi+0x144],0x10
  jne short LABEL2
  
  fldz 
  fld dword ptr [esi+0xF8]
  fcompp 
  fnstsw ax
  test ah,0x41
  je short LABEL1
  jmp short LABEL2
  
  LABEL1:
  fldz
  fst dword ptr [esi+0xF4]
  fstp dword ptr [esi+0xF8]
  mov word ptr [esi+0x140],0x50
  mov word ptr [esi+0x144],0x50
  LABEL2:
  
  popad
  popf
  
  cmp dword ptr [esi+0x190],0x05
end
0059FEB5 = flandreROCKETKICK_END

func flandreROCKETKICK_UNUSED

  mov eax,[esi+0x398]
  movzx eax, byte ptr [eax+0x6AA]
  imul eax,0x05
  add eax,0x0A
  add eax,0x0A
  add eax,0x0A
  cmp dword ptr [esi+0x144],eax
  jne short LABEL1
  
  mov word ptr [esi+0x140],0x50
  mov word ptr [esi+0x144],0x50
  LABEL1:
  
  popad
  popf
end

func flandreROCKETKICK_END1
  pushf
  pushad
  cmp dword ptr [esi+0x144],0x59
  jl short LABEL1
  
  jmp short LABEL2
  LABEL1:
  popad
  popf
  jnp 0x59E2D8
  jmp short LABEL3
  LABEL2:
  popad
  popf
  jmp 0x59E2D8
  LABEL3:
  nop
end
005A03BC = flandreROCKETKICK_END1

;#00463FF5

;# d623 inv B
func flandreD623_INVB
  jmp 0x5915FB
end
func flandreD623_INVC
  jmp 0x591760
end
func flandreD623_INVLV
  cmp byte ptr [esi+0x6A6],0x05
end
005915E1 = flandreD623_INVB
0059AFE6 = flandreD623_INVLV
00591746 = flandreD623_INVC
;#space
;#005915F2 = 90 90 90 90 90 90 90 90 90
;# d623 inv C

;# stigma b jump spd
func flandreA22STIG0
  fld dword ptr [0x86782C]
end
func flandreA22STIG1
  fld dword ptr [0x85BA68]
end
00593809 = flandreA22STIG0
00593A26 = flandreA22STIG1

;# stigmatizer projectile speed
func flandreA22STIG_SPD
  fld dword ptr [0x8589F0]
end
005A0AC6 = flandreA22STIG_SPD
;# stigmatizer rotation
func flandreA22STIG_ROT
  fadd qword ptr [0x857F80]
end
005A0B49 = flandreA22STIG_ROT

func flandreBLS_FREEZE
  mov eax,[esi+0x398]
  mov ax,[eax+0x196]
  cmp ax,0x00
  jne 0x5A1871
  movsx eax,word ptr [esi+0x13E]
end
005A18F6 = flandreBLS_FREEZE

;# 3sc BLS X
00594D1B = flandreFLDZ

func flandreBLS_FLASH
  mov ebp,0x00000003
  cmp ax,bp
  jmp 0x594CBA
end

func flandreBLS_HEIGHT
  fstp dword ptr [esi+0xF8]
  
  cmp word ptr [esi+0x142],0x00
  jne LABEL2
  cmp word ptr [esi+0x140],0x0A
  jne LABEL2
  cmp word ptr [esi+0x13E],0x02
  jne LABEL2
  mov byte ptr [esi+0x194],0x01
  mov dword ptr [esi+0x190],0x00
  push 0x0D
  mov ecx,esi
  call 0x464980
  
  LABEL2:
  cmp word ptr [esi+0x140],0x10
  jg LABEL1
  fld dword ptr [esi+0xF8]
  fldz
  fcompp 
  fnstsw ax
  test ah,0x41
  jne short LABEL1
  fldz
  fstp dword ptr [esi+0xF8]
  LABEL1:
end
00594E4E = flandreBLS_HEIGHT

func flandreBLS_FLASH1
  cmp word ptr [esi+0x13E],0x00
  jne LABEL1
  cmp word ptr [esi+0x142],0x00
  jne LABEL1
  cmp word ptr [esi+0x140],0x01
  jne LABEL1
  jmp 0x594EE1
  LABEL1:
  cmp dword ptr [esi+0x144],0x00
end
00594CA5 = flandreBLS_FLASH
00594CF0 = flandreBLS_FLASH1

func flandreBLS_RISE
  fld dword ptr [esi+0xF0]
  fld1 
  fcompp 
  fnstsw ax
  test ah,0x41
  jne short CMPFALSE
  fld dword ptr [0x85B9D4]
  ;mov byte ptr [esi+0x194],0x03
  jmp END
  CMPFALSE:
  fld dword ptr [0x867810]
  END:
end
func flandreBLS_RISEDEC
  ;fld dword ptr [0x85AD04]
  fld dword ptr [0x8677A8]
end
;# 3sc BLS startup rise speed
00594D30 = flandreBLS_RISE
;# 3sc BLS startup rise gravity
00594D3E = flandreBLS_RISEDEC
;# 3sc BLS gravity set up
;#00594D9A = D9 86 00 01 00 00 DC 05 28 C0 85 00 D9 9E 00 01 00 00
;#00594D9A = 81 BE 44 01 00 00 25 00 00 00 90 7C 05 E8 3E C8 FF FF
func flandreBLS
  mov edi,0x00000004
  cmp [esi+0x13E],di
  jne 0x594E2F
  cmp dword ptr [esi+0x144],0x0000001A
  jl short LABEL1
  
  fld1 
  fstp dword ptr [esi+0x100]
  fld dword ptr [0x85AE94]
  fchs 
  fstp dword ptr [esi+0xF4]
  
  LABEL1:
  cmp dword ptr [esi+0x144],0x00000000
  LABEL2:
  jne 0x594E2F
  cmp word ptr [esi+0x142],0x0000
  jne short LABEL2
  cmp word ptr [esi+0x140],0x0000
  jne short LABEL2
  fld dword ptr [0x85BB54]
  push 0x38
  fstp dword ptr [esi+0xF4]
  mov ecx,esi
  
  jmp 0x594DAC
end
;00594D4F = flandreBLS


func flandreBLS_PARTICLE
  cmp word ptr [esi+0x13E],0x02
end
00594D7D = flandreBLS_PARTICLE

func flandreBLS_SKIPMOMENTUM
  jmp 0x594DB1
end
00594D8A = flandreBLS_SKIPMOMENTUM

func flandreBLS_UNSTICK
  jmp 0x594E8E
end
00594E69 = flandreBLS_UNSTICK

func flandreBLS_EFF
  jge 0x59E2D8
end
005A1965 = flandreBLS_EFF

005A196F = flandreD22S_EFF2

;# 3sc BLS nope the gravity rule
func flandreBLS_NOGRAV
  cmp ax,0x0002
end
;00594E3C = flandreBLS_NOGRAV: 6
;# 3sc BLS effect rotation
func flandreBLS_ROT
  fld qword ptr [0x85C148]
end
;005A49E3 = flandreBLS_ROT
;005A49A0 = flandreBLS_ROT

;# d22B raise speed base 6A7
;#00592619 = D9 05 B3B38500
func flandreD22_B_RISE
  push 0x32
  mov ecx,esi
  call 0x487870
  fld dword ptr [esi+0xF0]
  fld qword ptr [0x85B968]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne short CMPFALSE
  fldz
  fstp dword ptr [esi+0xF4]
  ;fld dword ptr [0x85B9D4]
  fldz
  mov byte ptr [esi+0x194],0x02
  jmp END
  CMPFALSE:
  fld dword ptr [0x867810]
  END:
end
func flandreD22_C_RISE
  push 0x32
  mov ecx,esi
  call 0x487870
  fld dword ptr [esi+0xF0]
  fld qword ptr [0x85B968]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne short CMPFALSE
  fldz
  fstp dword ptr [esi+0xF4]
  ;fld qword ptr [0x85BA20]
  fldz
  mov byte ptr [esi+0x194],0x02
  jmp END
  CMPFALSE:
  fld dword ptr [0x85B9D4]
  END:
end
00592619 = flandreD22_B_RISE
;# d22B raise speed decel
func flandreD22_RISEDEC
  ;fld dword ptr [0x8677A8]
  fldz
end
00592625 = flandreD22_RISEDEC
;# d22B angle
005926ED = flandreFLDZ

;# d22C raise speed base
0059299C = flandreD22_C_RISE
;# d22C raise speed decel
005929A8 = flandreD22_RISEDEC
;# d22C angle
00592A70 = flandreFLDZ

;# remove momentum kill on startup
0059B096 = flandreNOP

func flandreD22S_PARTICLE
  cmp word ptr [esi+0x13E],0x01
  jne 0x5927B5
end
00592664 = flandreD22S_PARTICLE
005929E7 = flandreD22S_PARTICLE

func flandreD22S_RESPIN
  ;# C version momentum
  cmp word ptr [esi+0x13C],0x231
  jne LABELR
  cmp word ptr [esi+0x13E],0x01
  jne LABELR
  cmp word ptr [esi+0x140],0x0F
  je LABELR
  cmp word ptr [esi+0x140],0x07
  jge LABELR2
  cmp word ptr [esi+0x140],0x03
  jl LABELR
  jne LABELR1
  cmp word ptr [esi+0x142],0x00
  jne LABELR1
  fld dword ptr [0x85C22C]
  fstp dword ptr [esi+0xF4]
  LABELR1:
  fld dword ptr [esi+0xF4]
  fsub dword ptr [0x8677A8]
  fstp dword ptr [esi+0xF4]
  jmp LABELR
  LABELR2:
  fldz
  fstp dword ptr [esi+0xF4]
  
  LABELR:
  ;# cancelling
  cmp word ptr [esi+0x13C],0x025E
  je LABELQ
  cmp word ptr [esi+0x13E],0x01
  jne LABELQ
  cmp word ptr [esi+0x140],0x08
  jl LABELQ
  
  cmp word ptr [esi+0x760],0x0A
  jg LABELP1
  cmp word ptr [esi+0x760],0x00
  jg LABELP
  LABELP1:
  cmp word ptr [esi+0x780],0x0A
  jg LABELP2
  cmp word ptr [esi+0x780],0x00
  jg LABELP
  LABELP2:
  cmp word ptr [esi+0x764],0x0A
  jg LABELP3
  cmp word ptr [esi+0x764],0x00
  jg LABELP
  LABELP3:
  cmp word ptr [esi+0x784],0x0A
  jg LABELP4
  cmp word ptr [esi+0x784],0x00
  jg LABELP
  LABELP4:
  jmp LABELQ
  LABELP:
  mov word ptr [esi+0x142],0xFF
  mov word ptr [esi+0x140],0x0F
  
  ;fld dword ptr [0x85BDB8]
  fld dword ptr [0x85C5B8]
  fstp dword ptr [esi+0xF4]
  
  push 0x01
  mov ecx,esi
  call 0x464980
  
  LABELQ:
  ;# going neutral
  cmp word ptr [esi+0x13E],0x01
  jne LABELO
  cmp word ptr [esi+0x140],0x0E
  jne LABELO
  
  mov ecx,[esi]
  mov eax,[ecx+0x04]
  push 0x00
  push 0x00
  mov ecx,esi
  call eax
  
  LABELO:
  ;# reapply upward momentum
  cmp word ptr [esi+0x13E],0x02
  jne LABELM
  cmp word ptr [esi+0x140],0x00
  jne LABELM
  cmp word ptr [esi+0x142],0x00
  jne LABELM
  cmp word ptr [esi+0x144],0x00
  jne LABELM
  fld dword ptr [0x86782C]
  fstp dword ptr [esi+0xF8]
  mov dword ptr [esi+0x190],0x00
  LABELM:
  ;# reapply gravity
  cmp word ptr [esi+0x13E],0x02
  jl LABELN
  fld dword ptr [0x8677A8]
  fstp dword ptr [esi+0x100]
  fld dword ptr [esi+0xF4]
  fmul qword ptr [0x85B920]
  fstp dword ptr [esi+0xF4]
  LABELN:
  ;#skipping subseq
  cmp byte ptr [esi+0x194],0x02
  jge LABEL1
  cmp word ptr [esi+0x140],0x01
  jne LABEL1
  cmp word ptr [esi+0x13E],0x01
  jne LABEL1
  cmp word ptr [esi+0x13C],0x025E
  je LABEL1
  cmp word ptr [esi+0x142],0x00
  jne LABEL1
  ;# skip subseq
  mov word ptr [esi+0x142],0xFF
  mov word ptr [esi+0x140],0x0F
  jmp END
  LABEL1:
  END:
  cmp [esi+0x144],ebp
end
005925B7 = flandreD22S_RESPIN
0059293A = flandreD22S_RESPIN

func flandreD22S_B_SKIPMOMENTUM
  jmp 0x59275A
end
func flandreD22S_C_SKIPMOMENTUM
  jmp 0x592ADD
end
00592671 = flandreD22S_B_SKIPMOMENTUM
005929F4 = flandreD22S_C_SKIPMOMENTUM


func flandreD22S_B_XFIX
  fld dword ptr [esi+0xF4]
  jmp 0x592613
end
func flandreD22S_C_XFIX
  fld dword ptr [esi+0xF4]
  jmp 0x592996
end
00592603 = flandreD22S_B_XFIX
00592986 = flandreD22S_C_XFIX

func flandreD22S_B_UNSTICK
  jmp 0x592817
end
func flandreD22S_C_UNSTICK
  jmp 0x592BA8
end
005927F2 = flandreD22S_B_UNSTICK
00592B75 = flandreD22S_C_UNSTICK

func flandreD22S_DRAWORDER
  push 0x01
  fld dword ptr [esi+0xF0]
end
00592781 = flandreD22S_DRAWORDER
00592B04 = flandreD22S_DRAWORDER

func flandreD22S_EFF
  jge 0x59E2D8
end
005A0409 = flandreD22S_EFF

func flandreD22S_EFF2
  call 0x48CF60
  mov ecx,[esi+0x398]
  fld dword ptr [ecx+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [ecx+0xF0]
  fadd dword ptr [0x857DD8]
  fstp dword ptr [esi+0xF0]
  cmp word ptr [ecx+0x13C],0x025E
  je LABELN
  cmp word ptr [ecx+0x13E],0x02
  jne LABELN
  cmp word ptr [ecx+0x140],0x00
  jne LABELN
  cmp word ptr [ecx+0x142],0x00
  jne LABELN
  mov word ptr [esi+0x140],0x20
  mov word ptr [esi+0x142],0xC7
  LABELN:
end
005A0415 = flandreD22S_EFF2

func flandreD22S_NOBOUNCE
  jmp 0x592CAF
  mov eax,[esi+0x190]
  cmp eax,edi
  cmp eax,0x07
  jmp 0x5928AA
end
00592899 = flandreD22S_NOBOUNCE
00592C2B = flandreD22S_NOBOUNCE

func flandreD22S_LV
  cmp word ptr [esi+0x142],0x00
  jne short LABEL1
  cmp word ptr [esi+0x140],0x01
  jne short LABEL1
  cmp word ptr [esi+0x13E],0x01
  jne short LABEL1
  movzx ebx,byte ptr [esi+0x6A7]
  imul bx,bx,0x0C
  mov [esi+0x142],bx
  LABEL1:
  mov ebx,0x00000005
end
00592577 = flandreD22S_LV
005928FA = flandreD22S_LV

func flandreA214FORK_LV1
  movsx edx,byte ptr [esi+0x6AD]
  cmp byte ptr [esi+0x6AD],0x03
  jl LABEL1
  sub edx,0x01
  LABEL1:
end
00590E16 = flandreA214FORK_LV1
005912C0 = flandreA214FORK_LV1

func flandreA214FORK_LV2
  movsx eax,byte ptr [esi+0x6AD]
  cmp byte ptr [esi+0x6AD],0x03
  jl LABEL1
  sub eax,0x01
  LABEL1:
end
00590F0A = flandreA214FORK_LV2
005913BA = flandreA214FORK_LV2

func flandreA214FORK_SOUND
  pushf
  cmp word ptr [esi+0x140],0x06
  jne short LABEL1
  cmp word ptr [esi+0x142],0x00
  jne short LABEL1
  cmp word ptr [esi+0x13E],0x00
  jne short LABEL1
  push 0x16
  mov ecx,esi
  call 0x464980
  LABEL1:
  popf
  mov byte ptr [esi+0x18C],0x09
end
00590C80 = flandreA214FORK_SOUND
00591112 = flandreA214FORK_SOUND

func flandreA214FORK_MULZERO_B
  fmul qword ptr [0x86812C]
  ;fsub dword ptr [0x85AE94]
  fstp dword ptr [esp+0x174]
end
func flandreA214FORK_MULZERO_C
  fmul qword ptr [0x86812C]
  ;fsub dword ptr [0x85AE94]
  fsub dword ptr [0x85AE94]
  fstp dword ptr [esp+0x168]
end
func flandreA214FORK_MULZERO_BC
  fmul qword ptr [0x86812C]
  ;fsub dword ptr [0x85AE94]
  fstp dword ptr [esp+0x18C]
end
func flandreA214FORK_MULZERO_CC
  fmul qword ptr [0x86812C]
  ;fsub dword ptr [0x85AE94]
  fsub dword ptr [0x85AE94]
  fstp dword ptr [esp+0x15C]
end

;00590E62 = flandreA214FORK_MULZERO_B
;00591312 = flandreA214FORK_MULZERO_C
;0059103C = flandreA214FORK_MULZERO_BC
;005914F2 = flandreA214FORK_MULZERO_CC

func flandreA214FORK_POSX
  fld dword ptr [esi+0xEC]
end

func flandreA214FORK_POSY
  fld dword ptr [0x85B984]
end

00590D94 = flandreA214FORK_POSX
00590F90 = flandreA214FORK_POSX
0059123E = flandreA214FORK_POSX
00591440 = flandreA214FORK_POSX

00590DB9 = flandreA214FORK_POSY
00590FB5 = flandreA214FORK_POSY
00591263 = flandreA214FORK_POSY
00591465 = flandreA214FORK_POSY


func flandreA214FORK
  pushad
  mov eax,[esi+0x170]
  fadd dword ptr [eax+0xEC]
  popad
end
;#a214B fork startpos X
00590EE5 = flandreA214FORK
;#a214[B] fork startpos X
005910BF = flandreA214FORK
;#a214C fork startpos X
00591395 = flandreA214FORK
;#a214[C] fork startpos X
00591575 = flandreA214FORK
;#insert code somewhere in fork bullet limit area. We need to kill it manually.
;#0059FC24 = EB 5A 90 90 60 8B 86 70 01 00 00 D8 80 EC 00 00 00 61 C3 90 90 90 90 90 90 90 90 90 90
func flandreA214FORK_0
  je 0x59E2D8
  jmp 0x59FC80
end
0059FC1E = flandreA214FORK_0

func flandre3SCCROSS_HEIGHT
  fstp dword ptr [esi+0xF0]
  fldz
  jmp 0x593CA2
end
func flandre5SCCROSS_HEIGHT
  fstp dword ptr [esi+0xF0]
  fldz
  jmp 0x594419
end


;# 3sc nightless castle max height
00593C96 = flandre3SCCROSS_HEIGHT
;# 5sc Scarlet Devil max height
0059440D = flandre5SCCROSS_HEIGHT


;# 5 cradle
;#dur /13f /23f
func flandre5SCCRADLE_DUR
  movzx eax,word ptr [esi+0x7D0]
  cmp ax,0x0017
end
00594976 = flandre5SCCRADLE_DUR: 11
;#x
00594BFF = flandreFLDZ
;#y
;#00594C0F = DD 05 009B8500
func flandre5SCCRADLE_0
  fld dword ptr [0x85AE94]
end
00594C0F = flandre5SCCRADLE_0
;#post anim y mul
func flandre5SCCRADLE_1
  fld qword ptr [0x858EA0]
end
0059499E = flandre5SCCRADLE_1
;#post anim x
00594A66 = flandreFLDZ
;#1 hit only
00594B17 = flandreNOP

;#2sc 5sc issue
func flandre2SC5SC
  cmp word ptr [esi+0x13C],0x025A
  fld dword ptr [0x8677A8]
  je short LABEL1
  fldl2t 
  fdivp st1
  LABEL1:
  nop
end
;#post anim gravity
;#00594985 = DD 05 28C08500
00594985 = flandre2SC5SC

func flandreD236_UP
  fld dword ptr [0x85BBBC]
end
0058DD54 = flandreD236_UP
0058E048 = flandreD236_UP
func flandreD236_GRAV
  fld1
end
0058DD62 = flandreD236_GRAV
0058E056 = flandreD236_GRAV

func flandreD236_CANCEL
  pushf
  pushad
  cmp word ptr [esi+0x13E],0x01
  jne short LABEL1
  cmp dword ptr [esi+0x144],0x00
  jne short LABEL1
  mov dword ptr [esi+0x190],0x01
  LABEL1:
  popad
  popf
  movzx eax,word ptr [esi+0x13E]
end
0058DB6D = flandreD236_CANCEL
;0058DE4C = flandreD236_CANCEL

;#d236 x
func flandreD236
  cmp word ptr [esi+0x13C],0x01F5
  je short LABELC
  
  fld qword ptr [0x867830]
  pushad 
  movzx eax,byte ptr [esi+0x6A4]
  LABEL2:
  cmp ax,0x0000
  jle short LABEL1
  dec ax
  fadd dword ptr [0x8589F0]
  jmp short LABEL2
  LABEL1:
  jmp short LABEL3
  
  LABELC:
  fld qword ptr [0x858990]
  pushad 
  movzx eax,byte ptr [esi+0x6A4]
  LABEL4:
  cmp ax,0x0000
  jle short LABEL3
  dec ax
  fadd dword ptr [0x867860]
  jmp short LABEL4
  LABEL3:
  popad 
  nop
end
0058DD41 = flandreD236
;#c ver turn to b
func flandreD236C
  jmp 0x58DB6D
end
0058DE4C = flandreD236C

func flandreJ8A_GRAVITY
  ;fld dword ptr [0x8677A8]
  fld1
end
0058AE3B = flandreJ8A_GRAVITY

;#a214 chains
;#0059EEC0 angle stuff
;#angle lock
func flandreA214CHAIN_ANG
  fstp dword ptr [esp+0x28]
  fldz
  jmp 0x59F3F4
end
0059F3E8 = flandreA214CHAIN_ANG
;#angle start
func flandreA214CHAIN_ANGSTART1
  cmp word ptr [esi+0x13C],0x020D
  je short LABEL1
  fld dword ptr [0x85C154]
  jmp short LABEL2
  LABEL1:
  fld dword ptr [0x85B908]
  LABEL2:
  fstp dword ptr [esi+0x7E4]
  jmp 0x590607
end
func flandreA214CHAIN_ANGSTART2
  cmp word ptr [esi+0x13C],0x020F
  je short LABEL1
  fld dword ptr [0x857DD8]
  jmp short LABEL2
  LABEL1:
  fldz
  LABEL2:
  fstp dword ptr [esi+0x7E4]
  jmp 0x590B64
end
005905CF = flandreA214CHAIN_ANGSTART1
00590B2C = flandreA214CHAIN_ANGSTART2
;#b jump to c

func flandreA214CHAIN0
  cmp word ptr [esi+0x13E],0x00
  jne short LABEL1
  cmp word ptr [esi+0x140],0x02
  jne short LABEL1
  cmp word ptr [esi+0x142],0x00
  jne short LABEL1
  pushad 
  movzx eax,byte ptr [esi+0x6A9]
  imul eax,eax,0x02
  mov word ptr [esi+0x142],ax
  popad 
  LABEL1:
  cmp word ptr [esi+0x13C],0x020E
  jg short LABEL2
  cmp word ptr [esi+0x13E],0x03
  jmp short LABEL3
  LABEL2:
  movzx eax,word ptr [esi+0x13E]
  LABEL3:
  nop
  jmp 0x5904EF
end
func flandreA214CHAIN1
  cmp word ptr [esi+0x13E],0x00
  jne short LABEL1
  cmp word ptr [esi+0x140],0x02
  jne short LABEL1
  cmp word ptr [esi+0x142],0x00
  jne short LABEL1
  pushad 
  movzx eax,byte ptr [esi+0x6A9]
  imul eax,eax,0x02
  mov word ptr [esi+0x142],ax
  popad 
  LABEL1:
  cmp word ptr [esi+0x13C],0x020E
  jg short LABEL2
  cmp word ptr [esi+0x13E],0x03
  jmp short LABEL3
  LABEL2:
  movzx eax,word ptr [esi+0x13E]
  LABEL3:
  nop
  jmp 0x59098C
end
0059037A = flandreA214CHAIN0
00590758 = flandreA214CHAIN1
;#stuff
;#float cmp example
func flandreA214CHAIN

  mov eax,[esi+0x190]

  cmp eax,0x00
  je short LABELC1
  cmp eax,0x01
  je short LABELC2
  cmp eax,0x02
  je short LABELC2
  cmp eax,0x07
  je short LABELC2
  LABELC1:
  jmp short LABELC3
  LABELC2:
  jmp 0x59F266
  
  LABELC3:
  pushad 
  fld dword ptr [esi+0xF0]
  fldz 
  fcompp 
  fnstsw ax
  test ah,0x41
  je short LABELC4
  fld dword ptr [esi+0xEC]
  fldz 
  fcompp 
  fnstsw ax
  test ah,0x41
  je short LABELC4
  jmp LABELY
  
  LABELZ:
  fld dword ptr [0x85B8F4]
  fld dword ptr [esi+0xEC]
  fcompp 
  fnstsw ax
  test ah,0x41
  je short LABELC4
  LABELC6:
  popad 
  jmp 0x59F282
  
  LABELC4:
  mov dword ptr [esi+0x190],0x00000001
  mov byte ptr [esi+0x194],0x00
  pushad 
  mov esi,[esi+0x398]
  cmp word ptr [esi+0x13C],0x020D
  jl short LABELC5
  cmp word ptr [esi+0x13C],0x0211
  jnl short LABELC5
  mov word ptr [esi+0x140],0x0003
  mov word ptr [esi+0x142],0x000A
  LABELC5:
  popad 
  jmp short LABELC6
  
  LABELY:
  fld dword ptr [0x85BD00]
  fld dword ptr [esi+0xF0]
  fcompp 
  fnstsw ax
  test ah,0x41
  je LABELC4
  jmp LABELZ
  
end

func flandreA214CHAIN_IDK0
  cmp dx,0x020D
  jl short LABELB1
  cmp dx,0x0211
  jmp short LABELB2
  LABELB1:
  cmp dx,0x0000
  jmp short LABELB2
  
  LABELB2:
  jl 0x59F35E
  jmp 0x59F2A5
end
func flandreA214CHAIN_IDK1
  cmp ax,0x020D
  jl short LABELA1
  cmp ax,0x0211
  jmp short LABELA2
  LABELA1:
  cmp ax,0x0000
  jmp short LABELA2
  
  LABELA2:
  jl 0x59F54A
  jmp 0x59F56D
end
func flandreA214CHAIN_IDK3
  cmp ax,0x020D
  jl short LABELA1
  cmp ax,0x0211
  jmp short LABELA2
  LABELA1:
  cmp ax,0x0000
  jmp short LABELA2
  
  LABELA2:
  jl 0x59FB53
  jmp 0x59FABD
end
func flandreA214CHAIN_IDK4
  cmp ax,0x020D
  jl short LABELA1
  cmp ax,0x0211
  jmp short LABELA2
  LABELA1:
  cmp ax,0x0000
  jmp short LABELA2
  
  LABELA2:
  jl 0x59F8FB
  jmp 0x59F84D
end
0059F28F = flandreA214CHAIN_IDK0
0059F53E = flandreA214CHAIN_IDK1
0059F839 = flandreA214CHAIN_IDK4
0059FAA9 = flandreA214CHAIN_IDK3

;#hit detection
;#0059F262
0059F258 = flandreA214CHAIN

;#leveling
func flandreA214CHAIN_LEVEL
  cmp word ptr [esi+0x13E],0x00
  jne short LABELC7
  cmp word ptr [esi+0x140],0x02
  jne short LABELC7
  cmp word ptr [esi+0x142],0x00
  jne short LABELC7
  pushad 
  movzx eax,byte ptr [esi+0x6A9]
  imul eax,eax,0x02
  mov [esi+0x142],ax
  popad 
  LABELC7:
  cmp word ptr [esi+0x13C],0x020E
  jg short LABELC8
  cmp word ptr [esi+0x13E],0x03
  jmp short LABELC9
  LABELC8:
  movzx eax,word ptr [esi+0x13E]
  LABELC9:
  nop
end
005904E7 = flandreA214CHAIN_LEVEL
00590985 = flandreA214CHAIN_LEVEL

;#custom leap
func flandreA214CHAIN_SKIP0
  cmp word ptr [esi+0x140],0x00
  jmp 0x59F95D
end
0059F953 = flandreA214CHAIN_SKIP0
func flandreA214CHAIN_WHAT0
  fmul dword ptr [0x85B830]
end
0059F970 = flandreA214CHAIN_WHAT0
0059F99C = flandreA214CHAIN_WHAT0

;#remove dupes
func flandreA214CHAIN_NODUPE
  pushad 
  mov eax,[esi+0x398]
  cmp word ptr [eax+0x13C],0x020D
  jl short LABEL1
  cmp word ptr [eax+0x13C],0x0211
  jnl short LABEL1
  cmp word ptr [eax+0x13E],0x00
  jne short LABEL1
  cmp word ptr [eax+0x140],0x00
  jne short LABEL1
  cmp word ptr [eax+0x144],0x01
  jg short LABEL1
  jmp short LABEL2
  LABEL1:
  popad 
  mov ebx,0x00000002
  jmp short LABEL3
  LABEL2:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  jmp short LABEL1
  LABEL3:
  nop
end
0059F22E = flandreA214CHAIN_NODUPE

func flandreJ6DD
  fld dword ptr [0x85B3B0]
end
0058A28B = flandreJ6DD
func flandreJ4DD
  fldz
  fsub dword ptr [0x85B3B0]
end
0058A0DC = flandreJ4DD

;#a236 trickster swap
func flandreA236TRICK_SWAP0
  call 0x487CA0
  jmp 0x58F1F5
end
func flandreA236TRICK_SWAP1
  call 0x487CA0
  jmp 0x58EB0E
end
0058EB09 = flandreA236TRICK_SWAP0
0058F1F0 = flandreA236TRICK_SWAP1

func flandre2SCBOOM
  fld dword ptr [0x85BBE4]
end
00593F0E = flandre2SCBOOM
func flandre4SCBOOM
  fld dword ptr [0x85AE94]
end
005947F2 = flandre4SCBOOM

;# random notes Flandre


;# a214 fork spd
;#00590E69
;#00591043
;# fork codes. 590C79
;#
;# qword 0085B8F9 0
;# dword 0085AAE9 0
;# qword 008677C8 1
;# dword 008589F0 2
;# qword 00857F80 3
;# dword 0085BDC4 85
;# qword 0085BC28 70
;# qword 85C028 .13
;#
