func momijiFLDZ
  fldz
end
func momijiNOP
  nop
end

;# TEST SAKUYA STUFF
;#00509A1A = E8 66 FF FF FF 90 90
;#00509985 = C7 86 90 01 00 00 00 00 00 00 C6 86 94 01 00 00 01 66 39 9E 3E 01 00 00 C3 90 90


func momijiID_FIX
  mov dword ptr [esi+0x34C],0x00000016
  ;mov dword ptr [esi+0x34C],0x00000028
  cmp word ptr [esi+0x196],0x0000
end
00490B85 = momijiID_FIX


;# 5C no rotation
004B1468 = momijiNOP

;# 5c accel
func momiji5C_ACCEL

  cmp byte ptr [esi+0x194],0x00
  jne short LABELZ
  jmp 0x4B1744
  LABELZ:
  
  cmp dword ptr [esi+0x144],0x30
  jl short LABELY
  jmp 0x4B1744
  LABELY:
  
  ;#regains
  pushad
  cmp dword ptr [esi+0x144],0x02
  jle short LABELX
  cmp dword ptr [esi+0x190],0x00
  je short LABELX
  mov eax, dword ptr [esi+0x144]
  sub eax,0x1
  mov [esi+0x144],eax
  mov ax, word ptr [esi+0x140]
  sub ax,0x1
  mov [esi+0x140],ax
  LABELX:
  popad
  
  cmp dword ptr [esi+0x144],0x00
  jne short LABEL1
  fstp dword ptr [eax+0x04]
  fld dword ptr [0x85B3B0]
  LABEL1:
  ;fsub qword ptr [0x85B938]
end
004B14E6 = momiji5C_ACCEL

func momiji6D_MIN
  cmp ax,0x0002
  jg 0x49272A
end
0049271E = momiji6D_MIN

func momijiD214_ONHIT
  pushad
  push 0x07
  push 0x03
  push 0x00
  mov ecx,esi
  call 0x48CE90
  test al,al
  popad
  jne 0x4B1321
  mov ebp,0x5
  cmp dword ptr [esi+0x190],ebp
end
func momiji2C_ONHIT
  pushad
  push 0x02
  push 0x01
  push 0x00
  mov ecx,esi
  call 0x48CE90
  test al,al
  popad
  jne 0x4B1321
  cmp word ptr [esi+0x13E],0x00
end
004B30B5 = momijiD214_ONHIT
004B1C98 = momiji2C_ONHIT

;# object creation example
func momijiSHIELD1
  pushf
  pushad
  
  cmp word ptr [esi+0x140],0x0001
  jne short LABEL1
  cmp word ptr [esi+0x142],0x0000
  jne short LABEL1
  fldz 
  fst dword ptr [esp+0x57C]
  push 0x03
  fstp dword ptr [esp+0x584]
  lea eax,[esp+0x580]
  fld1
  ;fld dword ptr [0x85B870]
  push eax
  fstp dword ptr [esp+0x58C]
  push 0x01
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0xF0]
  fadd dword ptr [0x871544]
  push ecx
  sub esp,0x08
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x00000350
  call 0x46EB30
  LABEL1:
  popad
  popf

  fsub dword ptr [esi+0x100]
end
func momijiSHIELD2
  pushf
  pushad
  
  cmp word ptr [esi+0x13E],0x0000
  jne short LABEL1
  cmp word ptr [esi+0x140],0x0001
  jne short LABEL1
  cmp word ptr [esi+0x142],0x0000
  jne short LABEL1
  fldz 
  fst dword ptr [esp+0x57C]
  push 0x03
  fstp dword ptr [esp+0x584]
  lea eax,[esp+0x580]
  fld1
  ;fld dword ptr [0x85B870]
  push eax
  fstp dword ptr [esp+0x58C]
  push 0x01
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0xF0]
  fadd dword ptr [0x871544]
  push ecx
  sub esp,0x08
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x00000350
  call 0x46EB30
  LABEL1:
  popad
  popf

  movzx eax,word ptr [esi+0x13E]
end
func momijiSHIELD3
  pushf
  pushad
  
  cmp word ptr [esi+0x13E],0x0001
  jne short LABEL1
  cmp word ptr [esi+0x140],0x0000
  jne short LABEL1
  cmp word ptr [esi+0x142],0x0000
  jne short LABEL1
  
  fldz 
  fst dword ptr [esp+0x57C]
  push 0x03
  fstp dword ptr [esp+0x584]
  lea eax,[esp+0x580]
  fld1
  ;fld dword ptr [0x85B870]
  push eax
  fstp dword ptr [esp+0x58C]
  push 0x01
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0xF0]
  fadd dword ptr [0x871544]
  push ecx
  sub esp,0x08
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x00000350
  call 0x46EB30
  LABEL1:
  popad
  popf

  fld dword ptr [esi+0xF0]
end

func momijiSHIELD4
  pushf
  pushad
  
  cmp word ptr [esi+0x13E],0x0001
  jne short LABEL1
  cmp word ptr [esi+0x140],0x0000
  jne short LABEL1
  cmp word ptr [esi+0x142],0x0000
  jne short LABEL1
  cmp word ptr [esi+0x144],0x0000
  jne short LABEL1
  
  fldz 
  fst dword ptr [esp+0x57C]
  push 0x03
  fstp dword ptr [esp+0x584]
  lea eax,[esp+0x580]
  fld1
  ;fld dword ptr [0x85B870]
  push eax
  fstp dword ptr [esp+0x58C]
  push 0x01
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0xF0]
  fadd dword ptr [0x871544]
  push ecx
  sub esp,0x08
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x00000350
  call 0x46EB30
  LABEL1:
  popad
  popf

  movzx eax,word ptr [esi+0x13E] 
end

func momijiSHIELD33
  jmp 0x495052
end

func momijiSHIELDA
  cmp word ptr [eax+0x13C],0x0235
  je short LABEL1
  cmp word ptr [eax+0x13C],0x0236
  je short LABEL1
  cmp word ptr [eax+0x13C],0x0133
  je short LABEL1
  cmp word ptr [eax+0x13C],0x0198
  je short LABEL1
  cmp word ptr [eax+0x13C],0x012E
  jne short LABEL2
  cmp word ptr [eax+0x13E],0x0001
  je short LABEL1
  LABEL2:
  jne 0x4B1321
  LABEL1:
  fld dword ptr [eax+0xEC]
  fstp dword ptr [esi+0xEC]
end

func momijiSHIELDB
  cmp word ptr [eax+0x13C],0x0235
  je short LABEL1
  cmp word ptr [eax+0x13C],0x0236
  je short LABEL1
  cmp word ptr [eax+0x13C],0x012E
  je short LABEL1
  cmp word ptr [eax+0x13C],0x0198
  je short LABEL1
  cmp word ptr [eax+0x140],0x0000
  jne 0x4B58C6
  jmp short LABEL2
  LABEL1:
  jmp 0x4B58C6
  LABEL2:
  nop
end

004B5754 = momijiSHIELDA
004B5763 = momijiSHIELDB

00495632 = momijiSHIELD1
0049738E = momijiSHIELD2
00494E8E = momijiSHIELD3
00494FDD = momijiSHIELD33
004A094F = momijiSHIELD4
004A0F1C = momijiSHIELD4

func momijiC6A_SKIP
  pushf
  cmp word ptr [esi+0x140],0x00
  jne short LABEL1
  cmp word ptr [esi+0x142],0x00
  jne short LABEL1
  cmp word ptr [esi+0x13E],0x00
  jne short LABEL1
  mov byte ptr [esi+0x49D],0x00
  LABEL1:
  cmp byte ptr [esi+0x49D],0x01
  jne short LABEL2
  cmp word ptr [esi+0x13E],0x01
  jne short LABEL2
  cmp word ptr [esi+0x140],0x00
  jne short LABEL2
  mov byte ptr [esi+0x142],0xFF
  LABEL2:
  popf
  mov ecx,esi
  fstp st0
  call 0x487CA0
end
00494D9D = momijiC6A_SKIP

func momijiJ6A_SKIP
  pushf
  cmp word ptr [esi+0x140],0x00
  jne short LABEL1
  cmp word ptr [esi+0x142],0x00
  jne short LABEL1
  cmp word ptr [esi+0x13E],0x00
  jne short LABEL1
  mov byte ptr [esi+0x49D],0x00
  LABEL1:
  cmp byte ptr [esi+0x49D],0x01
  jne short LABEL2
  cmp word ptr [esi+0x13E],0x00
  jne short LABEL2
  cmp word ptr [esi+0x140],0x01
  jne short LABEL2
  mov byte ptr [esi+0x142],0xFF
  LABEL2:
  popf
  fld dword ptr [esi+0xF8]
end
0049562C = momijiJ6A_SKIP

func momijiD421_JUMPY
  fld dword ptr [0x85B98C]
end
func momijiD421_JUMPYDOWN
  fld dword ptr [0x85C000]
end
func momijiD421_JUMPYGRAV
  pushf
  pushad
  cmp word ptr [esi+0x13C],0x021C
  jne short LABEL1
  fdiv qword ptr [0x85DC20]
  jmp LABEL2
  LABEL1:
  fdiv dword ptr [0x85D0C8]
  LABEL2:
  popad
  popf
end
func momijiD421_SPAWN
  imul ecx,ecx,0x00000001
  fld dword ptr [esi+0xEC]
  jmp 0x49F028
end
func momijiD421_SPAWNY
  fld dword ptr [esi+0xF0]
end

func momijiFLD5
  fld dword ptr [0x85B870]
end

0049F01C = momijiD421_SPAWN
0049F046 = momijiFLD5
0049F03A = momijiD421_SPAWNY
0049F14E = momijiFLD5
0049F052 = momijiD421_JUMPY
0049F15E = momijiD421_JUMPYDOWN
0049EF77 = momijiD421_JUMPYGRAV
func momijiD421C_TO_B
  jmp 0x49EE20
end
0049F177 = momijiD421C_TO_B
func momijiD421EFF
  cmp cx,0x021C
  jl 0x4B4795
  cmp cx,0x021E
  jg 0x4B1321
  jmp 0x4B4795
end
004B4783 = momijiD421EFF

func momiji5B_METER1
  push 0x02
  mov ecx,esi
  fild dword ptr [esp+0x18]
end
00495E89 = momiji5B_METER1
00495F5E = momiji5B_METER1

func momiji5B_METER2
  push 0x02
  mov ecx,esi
  call 0x487870
end
004963D3 = momiji5B_METER2
004964C0 = momiji5B_METER2

func momiji5B_METER3
  push 0x02
  mov ecx,esi
  mov [esi+0x190],edi
end
00496BB2 = momiji5B_METER3
004971B5 = momiji5B_METER3

func momiji5B_METER4
  push 0x02
  mov ecx,esi
  mov [esi+0x190],edx
end
00496CA1 = momiji5B_METER4
0049727A = momiji5B_METER4
;#487870 meter gain

func momiji5B_NEW
  sub eax,0x02
  mov edx,0x00000014
  imul edx
  add eax,0x2F
  mov edx,eax
end
func momiji6B_NEW
  sub eax,0x03
  mov edx,0x00000014
  imul edx
  add eax,0x2F
  mov edx,0x00000000
  sub edx,eax
  mov eax,edx
end
func momiji5B_NEWCHARGE
  sub eax,0x02
  mov edx,0x00000012
  imul edx
  add eax,0x2F
  mov edx,eax
end
func momiji6B_NEWCHARGE
  sub eax,0x03
  mov edx,0x00000012
  imul edx
  add eax,0x2F
  mov edx,0x00000000
  sub edx,eax
  mov eax,edx
end
func momiji5B_NEWJ2B
  sub eax,0x02
  mov edx,0x00000014
  imul edx
  add eax,0x4F
  mov edx,eax
end
func momiji5B_DIST
  push 0x03
  imul edx,edx,0x52
end
func momiji5B_DIST1
  movsx edx,al
  imul edx,edx,0x52
end
func momiji5B_DIST2
  fld dword ptr [esp+0x24]
  imul eax,eax,0x52
end
func momiji5B_DIST3
  sub esp,0x08
  imul edx,edx,0x52
end
func momiji5B_COUNT
  cmp word ptr [esi+0x7D2],0x12
end
func momiji5B_COUNTCHARGE
  cmp word ptr [esi+0x7D2],0x24
end
;# add deacceleration?
func momiji5B_YOFF
  fadd qword ptr [0x85BC08]
end

func momiji5B_YOFFA
  fadd qword ptr [0x85BBE8]
end

func momiji5B_SPD
  fldz
end
func momiji5B_SPDCHARGE
  mov ecx,0x00000001
end

func momiji5B_CHARGELEAP
  jmp 0x495FC0
end
func momiji5B_CHARGELEAP1
  jmp 0x49653A
end
func momiji5B_CHARGELEAP2
  jmp 0x496D32
end
func momiji5B_CHARGELEAP3
  jmp 0x497310
end
func momiji5B_NODOUBLE
  sub ebp,0x02
end
func momiji5B_FIREFREQ
  mov edx,0x01
end
func momiji5B_CHARGEDUR
  cmp dword ptr [esi+0x144],0x28
end

func momiji5B_CHARGEDUR_GROUND
  cmp dword ptr [esi+0x144],0x15
end

func momiji5B_DUR
  cmp dword ptr [esi+0x144],0x12
end

00495E7F = momiji5B_NEW
;#fire freq
00495E46 = momiji5B_FIREFREQ
00495ECF = momiji5B_DIST
00495E4C = momiji5B_COUNT
00495E9E = momiji5B_SPD
00495CC2 = momiji5B_DUR
;#5[b]
00495F54 = momiji5B_NEWCHARGE
00495FA0 = momiji5B_CHARGELEAP
00496030 = momiji5B_NODOUBLE: 9
00495F1B = momiji5B_FIREFREQ
00495F21 = momiji5B_COUNTCHARGE
00495FFD = momiji5B_DIST2
00495FC0 = momiji5B_SPDCHARGE: 7
;00495E0A = momiji5B_CHARGEDUR_GROUND
;#6b
004963E3 = momiji6B_NEW
004963A1 = momiji5B_FIREFREQ
00496434 = momiji5B_DIST1
004963A7 = momiji5B_COUNT
0049640B = momiji5B_SPD
0049642E = momiji5B_YOFF
0049621D = momiji5B_DUR
;#6[b]
004964D0 = momiji6B_NEWCHARGE
0049651A = momiji5B_CHARGELEAP1
004965AA = momiji5B_NODOUBLE: 9
0049648E = momiji5B_FIREFREQ
00496494 = momiji5B_COUNTCHARGE
00496577 = momiji5B_DIST2
0049653A = momiji5B_SPDCHARGE: 7
00496569 = momiji5B_YOFF
;00496366 = momiji5B_CHARGEDUR_GROUND
;#jb
00496BE0 = momiji5B_NEW
00496B9C = momiji5B_FIREFREQ
00496C33 = momiji5B_DIST3
00496BA2 = momiji5B_COUNT
00496C06 = momiji5B_SPD
;#j[b]
00496CCF = momiji5B_NEWCHARGE
00496D12 = momiji5B_CHARGELEAP2
00496DA2 = momiji5B_NODOUBLE: 9
00496C8D = momiji5B_FIREFREQ
00496C93 = momiji5B_COUNTCHARGE
00496D6F = momiji5B_DIST2
00496D32 = momiji5B_SPDCHARGE: 7
00496B22 = momiji5B_CHARGEDUR
;#j2b
004971E3 = momiji6B_NEW
0049719F = momiji5B_FIREFREQ
00497236 = momiji5B_DIST3
004971A5 = momiji5B_COUNT
00497209 = momiji5B_SPD
0049722C = momiji5B_YOFFA
;#j2[b]
004972A8 = momiji6B_NEWCHARGE
004972F0 = momiji5B_CHARGELEAP3
00497380 = momiji5B_NODOUBLE: 9
00497266 = momiji5B_FIREFREQ
0049726C = momiji5B_COUNTCHARGE
0049734D = momiji5B_DIST2
00497310 = momiji5B_SPDCHARGE: 7
0049733F = momiji5B_YOFFA
00497126 = momiji5B_CHARGEDUR

;# flight spd
func momijiFLIGHT
  fld dword ptr [0x858830]
end
004937D9 = momijiFLIGHT
;# dash spd static
func momijiDASH
  fld dword ptr [0x85C5B8]
end
004925C4 = momijiDASH

;#momiji6[A]
func momijiC6A_X
  fld dword ptr [0x86782C]
end
00494FAD = momijiC6A_X

;# db init speed y
00497499 = momijiFLDZ
;# init gravity
func momijiDBY
  fld dword ptr [0x86782C]
end
004974A5 = momijiDBY
;# spd x
func momijiDBX
  fld dword ptr [0x86782C]
end
004ACF31 = momijiDBX

;# 2a stuff
004950E2 = momijiNOP: 10
func momiji2A
  jmp 0x495174
end
0049510D = momiji2A
;# hits
func momiji2A_HITS
  mov byte ptr [esi+0x194],0x01
end
004ACDAD = momiji2A_HITS
;# self chain
func momiji2A_SELFCHAIN
  mov ax,[esi+0x13C]
  cmp ax,0x012F
  je short LABEL1
  push 0x0000012F
  jmp 0x4B04B2
  LABEL1:
  jmp 0x4B04BE
end
004B04AD = momiji2A_SELFCHAIN

;#2b range
func momiji2B_RANGE
  cmp dword ptr [esi+0x144],0x64
end
004B1C17 = momiji2B_RANGE

;#d214 graze res infinite.. what? thats not what this does
;# this disables the onhit stuff, but we added it again up there
func momijiD214_GRAZE
  jmp 0x4B32EF
end
004B32DB = momijiD214_GRAZE

;#d623 invul level
func momijiD623_INVLEVEL
  cmp byte ptr [esi+0x6A7],0x01
end
004A0663 = momijiD623_INVLEVEL
004AD25C = momijiD623_INVLEVEL

;#raindance whiff cancel
004A15A6 = momijiNOP: 6
004A1801 = momijiNOP: 6
004A19E1 = momijiNOP: 6
004A1BCD = momijiNOP: 6

;# 4sc bite accel
004B7500 = momijiNOP: 6

;# 5sc FH enable hitboxes
;#no 00490AD7 = BA 00000000
func momijiFH_0
  jmp 0x490B4B
  cmp eax,0x07
end
00490AE6 = momijiFH_0

func momijiFH_DUR
  mov word ptr [esi+0x8B4],0x0258
end
004A42A6 = momijiFH_DUR

func momijiFH
  pushf 
  pushad 
  cmp dword ptr [esi+0x144],0x00000000
  jne short LABEL1
  mov dword ptr [esi+0x190],0x00000000
  mov byte ptr [esi+0x194],0x01
  LABEL1:
  cmp byte ptr [esi+0x194],0x00
  jne short LABEL2
  mov dword ptr [esi+0x34C],0x00000000
  LABEL2:
  fild dword ptr [esi+0x144]
  popad
  popf
  
end
004B7A84 = momijiFH

func momijiFH_2
  mov dword ptr [esi+0x34C],0x00000000
end
004B7A72 = momijiFH_2
004B7CEE = momijiFH_2
004B7FC6 = momijiFH_2
;# old 004B7E6F = 66 9C 60 83 BE 44 01 00 00 00 75 14 C7 86 90 01 00 00 00 00 00 00 C7 86 94 01 00 00 01 00 00 00 83 BE 94 01 00 00 00 75 0A C7 86 4C 03 00 00 00 00 00 00 DB 86 44 01 00 00 90 90 90 90 90 61 90 90 90 90 66 9D C3
;# I changed 142 to 144

;#previous version
;#004B7A84 = E8 E8030000 90
;#004B7E71 = 60 83 BE 42 01 00 00 00 75 14 C7 86 90 01 00 00 00 00 00 00 C7 86 94 01 00 00 01 00 00 00 83 BE 94 01 00 00 00 75 15 C7 86 4C 03 00 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 DB 86 44 01 00 00 61 C3

;# qword ptr [00857F91] 0
;#