func satoriFLDZ
  fldz
end

func satoriNOP
  nop
end



func satoriID_FIX
  mov dword ptr [esi+0x34C],0x00000021
  ;mov dword ptr [esi+0x34C],0x0000002F
  
  cmp word ptr [esi+0x13C],0x026B
  jne LABEL2
  cmp dword ptr [esi+0x188],0x000009C4
  jg LABEL2
  fldz
  fstp dword ptr [esi+0x538]

  LABEL2:
  cmp [esi+0x196],bx
end
005A59A5 = satoriID_FIX


;# example trail
;005BC054


;005BEF80

;# card reset stuff
;0042A7EC

func satoriA623REACT_REMOVEAIRLOCK
  cmp word ptr [esi+0x13E],0x02
  je LABEL1
  mov ecx,esi
  call 0x487CA0
  LABEL1:
end
005B2469 = satoriA623REACT_REMOVEAIRLOCK

func satoriA623REACT_DODGE_C

  cmp word ptr [esi+0x13E],0x04
  je DODGE_C_GROUND
  
  jmp END
  
  ;# DODGE C GROUND
  DODGE_C_GROUND:
  cmp word ptr [esi+0x140],0x02
  jl END
  cmp word ptr [esi+0x140],0x02
  jne BG_1
  cmp word ptr [esi+0x142],0x00
  jne BG_1
  
  fld dword ptr [0x85B9D4]
  fstp dword ptr [esi+0xF4]
  
  ;#global sound
  push 0x1F
  mov ecx,esi
  call 0x439490
  
  jmp END
  
  BG_1:
  
  fld dword ptr [esi+0xF4]
  fsub dword ptr [0x8677A8]
  fst dword ptr [esi+0xF4]
  fldz
  
  fcompp 
  fnstsw ax
  test ah,0x41
  jne END_1
  fldz
  fstp dword ptr [esi+0xF4]
  END_1:
  jmp END
  
  END:
  mov ecx,[esi+0x144]
end
005B26AB = satoriA623REACT_DODGE_C
005B266E = satoriNOP

func satoriA623REACT_DODGE_B  
  cmp word ptr [esi+0x13E],0x01
  je DODGE_B_GROUND
  cmp word ptr [esi+0x13E],0x02
  je DODGE_AIR
  
  jmp END
  
  ;# DODGE B GROUND
  DODGE_B_GROUND:
  cmp word ptr [esi+0x140],0x02
  jl END
  cmp word ptr [esi+0x140],0x02
  jne BG_1
  cmp word ptr [esi+0x142],0x00
  jne BG_1
  
  fldz
  fsub dword ptr [0x85AE94]
  fstp dword ptr [esi+0xF4]
  
  ;#global sound
  push 0x1F
  mov ecx,esi
  call 0x439490
  
  jmp END
  
  BG_1:
  fldz
  
  fld dword ptr [esi+0xF4]
  fadd dword ptr [0x8677A8]
  fst dword ptr [esi+0xF4]
  
  fcompp 
  fnstsw ax
  test ah,0x41
  jne END_1
  fldz
  fstp dword ptr [esi+0xF4]
  END_1:
  jmp END
  
  ;# DODGE AIR
  DODGE_AIR:
  cmp word ptr [esi+0x140],0x02
  jl END
  cmp word ptr [esi+0x140],0x02
  jne BA_2
  cmp word ptr [esi+0x142],0x00
  jne BA_2
  
  fldz
  fsub dword ptr [0x85AE94]
  fstp dword ptr [esi+0xF4]
  fldz
  fstp dword ptr [esi+0xF8]
  fld dword ptr [0x8677A8]
  fstp dword ptr [esi+0x100]
  
  ;#global sound
  push 0x1F
  mov ecx,esi
  call 0x439490
  
  jmp END
  
  BA_2:
  
  fld dword ptr [esi+0xF8]
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0xF8]
  
  fldz
  
  fld dword ptr [esi+0xF4]
  fadd dword ptr [0x8677A8]
  fst dword ptr [esi+0xF4]
  
  fcompp 
  fnstsw ax
  test ah,0x41
  jne END_2
  fldz
  fstp dword ptr [esi+0xF4]
  END_2:
  jmp END
  
  END:
  cmp dword ptr [esi+0x144],0x00
end
005B24D9 = satoriA623REACT_DODGE_B

005B25DE = satoriFLDZ
005B2818 = satoriFLDZ

func satoriA623REACT_SKIPOBJ_B
  cmp word ptr [esi+0x13E],0x00
  je LABEL1
  
  
  jne 0x5A8C97
  LABEL1:
  cmp word ptr [esi+0x140],0x08
  jne 0x5A8C97
end
005B2552 = satoriA623REACT_SKIPOBJ_B


func satoriA623REACT_SKIPOBJ_C
  cmp word ptr [esi+0x13E],0x02
  je LABEL1
  
  
  jne 0x5A8C97
  LABEL1:
  cmp word ptr [esi+0x140],0x01
  jne 0x5A8C97
end
005B278E = satoriA623REACT_SKIPOBJ_C

func satoriA623REACT_LV
  cmp byte ptr [esi+0x6AF],0x05
end
005B888E = satoriA623REACT_LV
005B88A9 = satoriA623REACT_LV
func satoriA623REACT_C_LV
  mov al,0x01
end
005B26D6 = satoriA623REACT_C_LV

func satoriA623REACT_COBJ
  fld dword ptr [0x871538]
end
005B27AC = satoriA623REACT_COBJ

func satoriA623REACT_OBJ
  mov ecx,[esi+0x398]
  ;cmp word ptr [ecx+0x13E],0x00
  ;jne LABEL6
  cmp word ptr [ecx+0x140],0x01
  jne LABEL6
  cmp word ptr [ecx+0x142],0x01
  jle LABEL6
  cmp dword ptr [ecx+0x144],0x01
  jle LABEL6
  cmp word ptr [ecx+0x13C],0x23A
  je LABELEND
  cmp word ptr [ecx+0x13C],0x23B
  je LABELEND
  LABEL6:
  mov cl,[esi+0x113]
  cmp cl,0xFF
  jne LABEL4
  mov ecx,[esi+0x398]
  movzx ecx, word ptr [ecx+0x13C]
  cmp cx,0x0031
  jle short LABEL3
  cmp cx,0x0096
  jge short LABEL3
  jmp LABEL4
  LABEL3:
  mov ecx,[esi+0x398]
  movzx ecx, byte ptr [ecx+0x6AF]
  imul cx,cx,0x3C
  add ecx,0x12C
  cmp dword ptr [esi+0x144],ecx
  jl LABEL1
  LABEL4:
  mov cl,[esi+0x113]
  sub cl,0x0A
  cmp cl,0x0A
  jbe LABELEND
  mov [esi+0x113],cl
  jmp LABEL2
  LABELEND:
  mov dword ptr [esi+0x34C],0x00000000
  jmp 0x5C0F89
  LABEL1:
  mov ecx,[esi+0x398]
  cmp word ptr [esi+0x13E],0x02
  je BVER
  jmp CVER
  BVER:
  mov word ptr [ecx+0x8A0],0x01
  jmp LABEL2
  CVER:
  mov word ptr [ecx+0x8A0],0x02
  LABEL2:
  mov ecx,[esi+0x398]
  cmp word ptr [esi+0x36C],0x00
end
005C0F60 = satoriA623REACT_OBJ

func satoriA623REACT_OBJ_PERM
  cmp cx,0x023A
  jmp 0x5C0F9D
end
005C0F7B = satoriA623REACT_OBJ_PERM

func satoriA623REACT_1
  movsx eax,word ptr [esi+0x00013C]
  ;movzx ecx,byte ptr [eax+0x5B76C8]
  cmp word ptr [esi+0x8A0],0x00
  je LABEL1
  cmp eax,0x96
  jl LABEL1
  cmp eax,0x9E
  jg LABEL1
  je AIRB
  cmp word ptr [esi+0x8A0],0x01
  je GROUNDB
  jmp GROUNDC
  
  ;# change seq + subseq, use ecx+0x08 for just seq, 0x0C for subseq only
  ;# B ver ground
  GROUNDB:
  ;# not sure if necessary
  mov word ptr [esi+0x196],0x00
  mov ecx,[esi]
  mov eax,[ecx+0x04]
  push 0x01
  push 0x23A
  mov ecx,esi
  call eax
  jmp LABEL1
  
  ;# C ver ground
  GROUNDC:
  mov word ptr [esi+0x196],0x00
  mov ecx,[esi]
  mov eax,[ecx+0x04]
  push 0x04
  push 0x23B
  mov ecx,esi
  call eax
  jmp LABEL1
  
  ;# both ver air
  AIRB:
  mov word ptr [esi+0x196],0x00
  mov ecx,[esi]
  mov eax,[ecx+0x04]
  push 0x02
  push 0x23A
  mov ecx,esi
  call eax
  jmp LABEL1
  
  LABEL1:
  mov word ptr [esi+0x8A0],0x00
  
  
  ;mov ecx,esi
  ;movsx eax,word ptr [esi+0x00013C]
  
  cmp [esi+0x196],bx
  jne 0x5A8C97
end
;005A59C5 = satoriA623REACT_1
005A59AC = satoriA623REACT_1


func satoriA421FIELD_SCALE
  fld1
end
005BFF24 = satoriA421FIELD_SCALE
005BFF78 = satoriA421FIELD_SCALE

func satoriA421FIELD_NOTRAIL
  jmp 0x5BF727
end
005BF703 = satoriA421FIELD_NOTRAIL

func satoriA421FIELD_2
  jmp 0x5BFEF4
end
005BFD20 = satoriA421FIELD_2

func satoriA421FIELD_1

  fld1
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fldz
  fst dword ptr [esi+0xF4]
  fstp dword ptr [esi+0xF8]
  cmp dword ptr [esi+0x144],0x168
  jge 0x5BFF39
  
  
  mov ecx,[esi+0x398]
  cmp word ptr [ecx+0x13C],0x221
  je LABEL1
  cmp word ptr [ecx+0x13C],0x222
  je LABEL1
  jmp END3
  LABEL1:
  cmp word ptr [ecx+0x13E],0x00
  jne END3
  cmp word ptr [ecx+0x140],0x00
  jne END3
  cmp word ptr [ecx+0x142],0x00
  jne END3
  cmp dword ptr [ecx+0x144],0x00
  jne END3
  OUT:
  jmp 0x5BFF39
  
  END3:
  mov ecx,[esi+0x398]
  mov ecx,[ecx+0x170]
  fld dword ptr [ecx+0xF0]
  fadd dword ptr [0x871544]
  fld dword ptr [esi+0xF0]
  fadd qword ptr [0x858F00]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne END1
  fld dword ptr [esi+0xF0]
  fld dword ptr [ecx+0xF0]
  fadd dword ptr [0x871544]
  fadd qword ptr [0x858F00]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne END1
  fld dword ptr [ecx+0xEC]
  fld dword ptr [esi+0xEC]
  fadd qword ptr [0x858F00]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne END1
  fld dword ptr [esi+0xEC]
  fld dword ptr [ecx+0xEC]
  fadd qword ptr [0x858F00]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne END1
  
  mov ecx,[esi+0x398]
  movzx eax, word ptr [ecx+0x5E4]
  movzx ecx, byte ptr [ecx+0x6AA]
  add cx,0x02
  add ax,cx
  cmp ax,0x01F4
  jl LABELB1
  mov ax,0x01F4
  LABELB1:
  mov ecx,[esi+0x398]
  mov [ecx+0x5E4],ax

  END1:

  mov ecx,[esi+0x398]
  movzx eax,word ptr [ecx+0x13C]
  
  
  jmp 0x5BFB95
end
005BFB6B = satoriA421FIELD_1

005AF91D = satoriFLDZ
005B0050 = satoriFLDZ

005B04D1 = satoriFLDZ
005AFD6E = satoriFLDZ

func satoriA214MIRRORLV1
  fld dword ptr [0x867810]
end
func satoriA214MIRRORLV2
  fld dword ptr [0x86782C]
end
func satoriA214MIRRORLV3
  fld dword ptr [0x858830]
end
func satoriA214MIRRORLV4
  fld dword ptr [0x85B9D4]
end

;005C748E = satoriA214MIRRORLV1
;005C7522 = satoriA214MIRRORLV2
;005C75CF = satoriA214MIRRORLV3
;005C7678 = satoriA214MIRRORLV4

func satoriA214MIRROR_LV_LEAP
  jmp 0x5C75FA
end
005C7423 = satoriA214MIRROR_LV_LEAP

func satoriA214UNCRASH
  mov al,[esi+0x113]
  cmp al,0x05
  jb 0x5BBFDB
  sub al,0x05
  jmp 0x5BD3C2
end
005BD3B2 = satoriA214UNCRASH

func satoriA214MIRROR_LV
  mov eax,[esi+0x398]
  cmp byte ptr [eax+0x6A8],0x01
  je LABEL1
  cmp byte ptr [eax+0x6A8],0x02
  je LABEL2
  cmp byte ptr [eax+0x6A8],0x03
  je LABEL3
  
  ;fld dword ptr [0x85BC44]
  fld dword ptr [0x867810]
  jmp END
  LABEL3:
  ;fld dword ptr [0x867810]
  fld dword ptr [0x85882C]
  jmp END
  LABEL2:
  fld dword ptr [0x85882C]
  jmp END
  LABEL1:
  fld dword ptr [0x85BCA4]
  
  END:
  
end
005C7678 = satoriA214MIRROR_LV

func satoriA214MIRROR_ANG
  
  fsub dword ptr [eax]

  fldz
  fsub dword ptr [0x86782C]
  
  mov eax,[esi+0x398]
  cmp byte ptr [eax+0x6A8],0x01
  je LABEL1
  cmp byte ptr [eax+0x6A8],0x02
  je LABEL2
  cmp byte ptr [eax+0x6A8],0x03
  je LABEL3
  
  ;fmul dword ptr [0x85BC44]
  fmul dword ptr [0x867810]
  jmp END
  LABEL3:
  ;fmul dword ptr [0x867810]
  fmul dword ptr [0x85882C]
  jmp END
  LABEL2:
  fmul dword ptr [0x85882C]
  jmp END
  LABEL1:
  fmul dword ptr [0x85BCA4]
  
  END:
  fadd dword ptr [0x86782C]
  faddp
  
  mov eax,[esi+0x35C]
  fstp dword ptr [esp+0x14]
  
end
005C7608 = satoriA214MIRROR_ANG

func satoriA214MIRROR_ANGDIST
  fld dword ptr [0x85AE94]
end
005C75FA = satoriA214MIRROR_ANGDIST

func satoriA214MIRROR
end
;005AF8E3 = satoriA214MIRROR

func satoriA214MIRROR_OFFSET
  imul edx,edx,0x60
  fstp dword ptr [esp+0x28]
end
005AD222 = satoriA214MIRROR_OFFSET
005AD311 = satoriA214MIRROR_OFFSET
005AD4C2 = satoriA214MIRROR_OFFSET
005AD643 = satoriA214MIRROR_OFFSET

func satoriA214MIRROR_HEIGHT
  fadd dword ptr [0x857DD4]
end
005AD218 = satoriA214MIRROR_HEIGHT
005AD307 = satoriA214MIRROR_HEIGHT
005AD4B8 = satoriA214MIRROR_HEIGHT
005AD639 = satoriA214MIRROR_HEIGHT

005AD1FB = satoriFLDZ
005AD2EA = satoriFLDZ
005AD49B = satoriFLDZ
005AD61C = satoriFLDZ

func satoriA214MIRROR_XYFREEZE
  cmp word ptr [esi+0x13E],0x0C
  jne 0x5BD3C8
  mov ecx,esi
  jmp 0x5BD3FD
end
005BD266 = satoriA214MIRROR_XYFREEZE

func satoriA214MIRROR_NEVERJMP
  
  
  
  cmp dword ptr [esi+0x190],0x00
  jne 0x5BD26B
  mov byte ptr [esi+0x194],0x01
  mov dword ptr [esi+0x190],0x00
  jmp 0x5BD249
end
005BD20A = satoriA214MIRROR_NEVERJMP

func satoriA214MIRROR_END
  cmp dword ptr [esi+0x144],0x12C
  jge OUT
  mov edx,[esi+0x398]
  cmp word ptr [edx+0x13C],0x01F9
  je LABEL1
  cmp word ptr [edx+0x13C],0x01FA
  je LABEL1
  cmp word ptr [edx+0x13C],0x01FB
  je LABEL1
  cmp word ptr [edx+0x13C],0x01FC
  je LABEL1
  jmp END
  LABEL1:
  cmp word ptr [edx+0x13E],0x00
  jne END
  cmp word ptr [edx+0x140],0x00
  jne END
  cmp word ptr [edx+0x142],0x00
  jne END
  cmp dword ptr [edx+0x144],0x00
  jne END
  OUT:
  jmp 0x5BD13F
  END:
end
005BD0ED = satoriA214MIRROR_END

func satoriA421GRAB_METERB
  
  movzx eax, word ptr [esi+0x5E4]
  movzx ecx, byte ptr [esi+0x6AE]
  imul cx,cx,0x04
  add ax,0x02
  add ax,cx
  cmp ax,0x01F4
  jl LABELB1
  mov ax,0x01F4
  LABELB1:
  mov [esi+0x5E4],ax
  
  mov eax,[esi+0x170]
end

func satoriA421GRAB_METERC
  
  movzx eax, word ptr [esi+0x5E4]
  movzx ecx, byte ptr [esi+0x6AE]
  imul cx,cx,0x04
  add ax,0x02
  add ax,cx
  cmp ax,0x01F4
  jl LABELB1
  mov ax,0x01F4
  LABELB1:
  mov [esi+0x5E4],ax
  
  mov ecx,[esi+0x170]
end
005AF8E3 = satoriA421GRAB_METERB
005B0016 = satoriA421GRAB_METERC

func satoriA421GRAB_NOWISPB
  jmp 0x5AFE25
end
005AFD8D = satoriA421GRAB_NOWISPB

func satoriA421GRAB_NOWISPC
  jmp 0x5B0588
end
005B04F0 = satoriA421GRAB_NOWISPC

func satoriA421GRAB_YEFF
  fadd dword ptr [0x871544]
end
005C016F = satoriA421GRAB_YEFF
005C03D5 = satoriA421GRAB_YEFF

func satoriA421GRAB_XEFF
  mov eax,[esi+0x398]
  imul ecx,ecx,0x48
  jmp 0x5C03BB
end
005C03B2 = satoriA421GRAB_XEFF

func satoriA421GRAB_XY2
  fld dword ptr [esi+0xF4]
  fsub dword ptr [0x8677A8]
  fstp dword ptr [esi+0xF4]
  mov ecx,[esi+0x190]
end
005AF752 = satoriA421GRAB_XY2
005AFE85 = satoriA421GRAB_XY2

func satoriA421GRAB_XYC
  fld dword ptr [0x85AE94]
  fstp dword ptr [esi+0xF4]
  fldz
  fstp dword ptr [esi+0xF8]
  jmp 0x5B01EC
end
func satoriA421GRAB_XYB
  fld dword ptr [0x85AE94]
  fstp dword ptr [esi+0xF4]
  fldz
  fstp dword ptr [esi+0xF8]
  jmp 0x5AFAB0
end
005B01C8 = satoriA421GRAB_XYC
005AFA8C = satoriA421GRAB_XYB

func satoriA421GRAB_GROUNDHIT
  mov byte ptr [esi+0x194],0x01
end
005B0303 = satoriA421GRAB_GROUNDHIT
005AFB9F = satoriA421GRAB_GROUNDHIT

func satoriA236TRAP_ONCE
  mov word ptr [esi+0x7D2],0x0001
end
005AEB79 = satoriA236TRAP_ONCE
005AEB8D = satoriA236TRAP_ONCE
005AED51 = satoriA236TRAP_ONCE
005AED67 = satoriA236TRAP_ONCE

005AEABF = satoriNOP
005AEC97 = satoriNOP

005AEA79 = satoriFLDZ
005AEA8F = satoriFLDZ
005AEAA5 = satoriFLDZ

005BEB15 = satoriFLDZ

func satoriA236TRAP_AFTER
  fldz
  fst dword ptr [esi+0xF4]
  fst dword ptr [esi+0xF8]
end
005BECF5 = satoriA236TRAP_AFTER
005BED0D = satoriNOP
005BECA8 = satoriNOP

func satoriA236TRAP_MAIN

  mov ebx,[esi+0x398]
  cmp word ptr [ebx+0x13E],0x00
  jne LABELO
  cmp word ptr [ebx+0x140],0x00
  jne LABELO
  cmp word ptr [ebx+0x142],0x00
  jne LABELO
  cmp dword ptr [ebx+0x144],0x00
  jne LABELO
  movzx ebx, word ptr [ebx+0x13C]
  cmp bx,0x0212
  je 0x5BEC90
  cmp bx,0x0213
  je 0x5BEC90

  LABELO:
  
  cmp word ptr [esi+0x140],0x08
  jne LABELN
  cmp byte ptr [esi+0x113],0xFF
  jne LABELM
  cmp word ptr [esi+0x142],0x12C
  jl LABELN
  
  LABELM:
  mov byte ptr [esi+0x194],0x00
  mov bl,[esi+0x113]
  sub bl,0x0A
  cmp bl,0x0A
  jbe LABELEND
  mov [esi+0x113],bl
  jmp END
  
  LABELEND:
  jmp 0x5BEC90
  
  LABELN:
  cmp dword ptr [esi+0x144],0x0A
  jg LABEL1
  mov dword ptr [esi+0x144],0x08
  
  ;#check
  mov eax,[esi+0x398]
  mov eax,[eax+0x170]
  fld dword ptr [eax+0xEC]
  fld dword ptr [esi+0xEC]
  fadd dword ptr [0x86788C]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne short LABEL2
  
  mov eax,[esi+0x398]
  mov eax,[eax+0x170]
  fld dword ptr [esi+0xEC]
  fsub dword ptr [0x86788C]
  fld dword ptr [eax+0xEC]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne short LABEL2
  
  mov dword ptr [esi+0x144],0x0B
  jmp LABEL1
  
  LABEL2:  
  jmp END
  LABEL1:
  fld dword ptr [esi+0xF0]
  fadd dword ptr [0x8596B8]
  fstp dword ptr [esi+0xF0]
  
  
  
  mov eax,[esi+0x398]
  mov eax,[eax+0x170]
  fld dword ptr [eax+0xF0]
  fld dword ptr [esi+0xF0]
  fadd dword ptr [0x8596B4]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne short END
  
  
  
  END:

  push 0x04
  mov ebx,0x00000001
end
005BE8E5 = satoriA236TRAP_MAIN

func satoriA236TRAP_DONTCREATE
  fld1
  fld dword ptr [esi+0xF0]
  fcompp
  fnstsw ax
  test ah,0x41
  jne 0x5BEB15
  push 0x00000168
end
005BEA44 = satoriA236TRAP_DONTCREATE

func satoriA236TRAP_SCALING
  fstp st0
  cmp dword ptr [esi+0x144],0x0A
  jg LABEL1
  fldz
  fstp dword ptr [esi+0xF0]
  fld1
  fstp dword ptr [esi+0x120]
  mov dword ptr [esi+0x144],0x00
  
  ;#check
  mov eax,[esi+0x398]
  mov eax,[eax+0x170]
  
  fld dword ptr [eax+0xEC]
  fld dword ptr [esi+0xEC]
  fadd dword ptr [0x86788C]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne short LABEL2
  
  mov eax,[esi+0x398]
  mov eax,[eax+0x170]
  fld dword ptr [esi+0xEC]
  fsub dword ptr [0x86788C]
  fld dword ptr [eax+0xEC]
  fcompp 
  fnstsw ax
  test ah,0x41
  jne short LABEL2
  
  mov dword ptr [esi+0x144],0x0B
  jmp LABEL1
  
  LABEL2:  
  jmp END
  LABEL1:
  fld dword ptr [esi+0x120]
  fadd dword ptr [0x85BC6C]
  fstp dword ptr [esi+0x120]
  END:
  jmp 0x5BED54
end
005BED3A = satoriA236TRAP_SCALING

func satoriA236TRAP_TRANSP
  cmp al,0x01
  jb 0x5BBFDB
  cmp al,0xAF
  ja LABEL1
  sub al,0x04
  LABEL1:
  sub al,0x01
  mov [esi+0x113],al
  jmp 0x5BED34
end
005BED24 = satoriA236TRAP_TRANSP

func satoriA236TRAP_TRANSP2
  cmp al,0x01
  jb 0x5BBFDB
  cmp al,0xE1
  ja LABEL1
  sub al,0x04
  LABEL1:
  sub al,0x01
  mov [esi+0x113],al
  jmp 0x5BECD8
end
005BECC8 = satoriA236TRAP_TRANSP2

func satoriA236TRAP_HITCOUNT
  fstp st0
  cmp dword ptr [esi+0x144],0x00
  jne LABEL1
  mov byte ptr [esi+0x194],0x09
  mov byte ptr [esi+0x190],0x00
  LABEL1:
  
  push 0x16
  mov ecx,esi
  call 0x48CDE0
  
  ;#density
  push 0x03
  mov ecx,esi
  call 0x48CE30
  
  fld dword ptr [esi+0x11C]
end
005BECA2 = satoriA236TRAP_HITCOUNT

func satoriA236TRAP_SCALE
  fstp st0
  ;fld1
  fld dword ptr [0x85B94C]
end
005C7BE0 = satoriA236TRAP_SCALE

005BECA8 = satoriNOP

func satoriA236TRAP_STABILIZE2
  mov [esp+0x24],eax
  fldz
end
005BEAC3 = satoriA236TRAP_STABILIZE2

func satoriA236TRAP_STABILIZE1
  mov [esp+0x28],eax
  fldz
end
005BEAEB = satoriA236TRAP_STABILIZE1

005BEA9E = satoriFLDZ

func satoriA236TRAP_TREE
  fstp st0
  fldz
  fst dword ptr [esi+0xF4]
end
005BED5A = satoriA236TRAP_TREE

;005BED3A = satoriNOP

func satoriA236TRAP_X
  ;fst dword ptr [esi+0xF0]
  fst dword ptr [esi+0xF4]
  fsub dword ptr [0x858820]
  fstp dword ptr [esi+0xF8]
  
  fld dword ptr [esi+0xF0]
  ;fadd dword ptr [0x85AE94]
  fstp dword ptr [esi+0xF0]
  
  cmp dword ptr [esi+0x144],0x00
  jne short END1
  ;# trail
  ;# width
  fld dword ptr [0x8596B8]
  ;# blending mode?
  push 0x02
  push 0x01
  ;# length
  push 0x40
  mov ecx,esi
  push ecx
  fstp dword ptr [esp]
  mov ecx,esi
  push 0x000003DF
  call 0x4B0F50
  mov ecx,esi
  END1:
  jmp 0x5BEB29
end
005BEB1D = satoriA236TRAP_X

005AEA36 = satoriNOP

func satoriA236TRAP
end

;005BE778 = satoriNOP

func satoriA236TREE_STAGECENTER
  fstp dword ptr [esp+0x28]
  cmp word ptr [esi+0x13C],0x0264
  jne LABEL1
  fld dword ptr [0x8575A4]
  fstp dword ptr [esp+0x28]
  LABEL1:
  fld dword ptr [esp+0x28]
end
;005AE845 = satoriA236TREE_STAGECENTER

func satoriA236TREE_XOFF
  movsx edx,al
  imul edx,edx,0x78
end
005AE821 = satoriA236TREE_XOFF

func satoriA236TREE_CVER
  jmp 0x5AE75F
end
005AE88B = satoriA236TREE_CVER

func satoriA236TREE_REMOVEHARDBOX
  jmp 0x5BE653
end
005BE5F8 = satoriA236TREE_REMOVEHARDBOX

func satoriA236TREE_DENSITY
end

func satoriA236TREE_LV2
  mov byte ptr [esi+0x18C],0x05
end
005C7849 = satoriA236TREE_LV2

func satoriA236TREE_LV1
  mov al,0x01
end
005BE220 = satoriA236TREE_LV1

func satoriA236TREE_ONHIT3
  cmp word ptr [esi+0x13C],0x035E
  je 0x5BE7F3
  push 0x02
  push 0x00
  push 0x00
  mov ecx,esi
  call 0x48CE90
  test al,al
  je 0x5BE7F3
end
005BE7B3 = satoriA236TREE_ONHIT3

func satoriA236TREE_ONHIT2
  
  ;# recast
  pushad
  mov eax,[esi+0x398]
  cmp word ptr [esi+0x13C],0x035E
  je END2
  cmp word ptr [eax+0x13E],0x00
  jne END2
  cmp word ptr [eax+0x140],0x00
  jne END2
  cmp dword ptr [eax+0x144],0x00
  jne END2
  cmp word ptr [eax+0x13C],0x020D
  je END1
  cmp word ptr [eax+0x13C],0x020E
  je END1
  jmp END2
  END1:
  popad
  je 0x5BBFC7
  END2:
  popad
  
  
  cmp dword ptr [esi+0x144],0x00
  jne LABEL1
  mov byte ptr [esi+0x194],0x01
  mov dword ptr [esi+0x190],0x00000000
  LABEL1:
  cmp word ptr [esi+0x13C],0x035E
  je LABEL2
  push 0x02
  push 0x00
  push 0x00
  mov ecx,esi
  call 0x48CE90
  test al,al
  jne 0x5BBFDB
  LABEL2:
  ;# graze res
  push 0x0A
  mov ecx,esi
  call 0x48CDE0
  ;# density
  push 0x01
  mov ecx,esi
  call 0x48CE30
  jmp 0x5BE750
end
005BE73B = satoriA236TREE_ONHIT2

func satoriA236TREE_ONHIT1

  cmp word ptr [esi+0x13C],0x035E
  jne LABELZ
  cmp dword ptr [esi+0x144],0x0040
  jge LABELZ
  ;# screen shake
  fld dword ptr [0x85C610]
  push 0x00
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  LABELZ:
  
  ;# recast
  pushad
  mov eax,[esi+0x398]
  cmp word ptr [esi+0x13C],0x035E
  je END2
  cmp word ptr [eax+0x13E],0x00
  jne END2
  cmp word ptr [eax+0x140],0x00
  jne END2
  cmp dword ptr [eax+0x144],0x00
  jne END2
  cmp word ptr [eax+0x13C],0x020D
  je END1
  cmp word ptr [eax+0x13C],0x020E
  je END1
  jmp END2
  END1:
  popad
  je 0x5BBFC7
  END2:
  popad
  
  pushad
  mov eax,[esi+0x398]
  cmp byte ptr [eax+0x6A9],0x04
  jge LV1
  cmp word ptr [esi+0x140],0x36
  jne LV1NEXT
  mov word ptr [esi+0x140],0x37
  mov word ptr [esi+0x142],0x77
  LV1NEXT:
  cmp byte ptr [eax+0x6A9],0x02
  jge LV1
  cmp word ptr [esi+0x140],0x35
  jne LV2NEXT
  mov word ptr [esi+0x140],0x37
  mov word ptr [esi+0x142],0x77
  LV2NEXT:
  LV1:
  popad
  cmp word ptr [esi+0x140],0x0045
  je 0x5BBFC7
  cmp word ptr [esi+0x13C],0x035E
  je LABEL1
  push 0x02
  push 0x00
  push 0x00
  mov ecx,esi
  call 0x48CE90
  test al,al
  jne 0x5BBFDB
  LABEL1:
  fld dword ptr [esi+0x11C]
end
005BE6ED = satoriA236TREE_ONHIT1

func satoriA236TREE_ONHIT0
  
  ;# recast
  pushad
  mov eax,[esi+0x398]
  cmp word ptr [esi+0x13C],0x035E
  je END2
  cmp word ptr [eax+0x13E],0x00
  jne END2
  cmp word ptr [eax+0x140],0x00
  jne END2
  cmp dword ptr [eax+0x144],0x00
  jne END2
  cmp word ptr [eax+0x13C],0x020D
  je END1
  cmp word ptr [eax+0x13C],0x020E
  je END1
  jmp END2
  END1:
  popad
  je 0x5BBFC7
  END2:
  popad
  
  pushad
  mov eax,[esi+0x398]
  cmp byte ptr [eax+0x6A9],0x04
  jge LV1
  cmp word ptr [esi+0x140],0x36
  jne LV1NEXT
  mov word ptr [esi+0x140],0x37
  mov word ptr [esi+0x142],0x77
  LV1NEXT:
  cmp byte ptr [eax+0x6A9],0x02
  jge LV1
  cmp word ptr [esi+0x140],0x35
  jne LV2NEXT
  mov word ptr [esi+0x140],0x37
  mov word ptr [esi+0x142],0x77
  LV2NEXT:
  LV1:
  popad
  cmp word ptr [esi+0x140],0x0045
  je 0x5BBFC7
  cmp word ptr [esi+0x13C],0x035E
  je 0x5BE0FA
  push 0x04
  push 0x03
  push 0x00
  jmp 0x5BE0EB
end
005BE0E5 = satoriA236TREE_ONHIT0

func satoriA236TREE_ROSEFREEZE
  cmp dword ptr [esi+0x144],0x1F
  jg LABEL1
  fld dword ptr [ecx+0x04]
  jmp END
  LABEL1:
  fldz
  fstp dword ptr [esi+0x12C]
  fldz
  END:
  sub esp,0x08
end
005BE80C = satoriA236TREE_ROSEFREEZE

func satoriA236TREE_ROSEDUR
  cmp byte ptr [esi+0x194],0x00
  jne LABEL1
  mov byte ptr [esi+0x144],0xF0
  LABEL1:
  cmp dword ptr [esi+0x144],0xF0
  jl 0x5BE762
  mov byte ptr [esi+0x113],0xFF
  mov byte ptr [esi+0x194],0x00
end
005BE764 = satoriA236TREE_ROSEDUR

func satoriA236TREE_HEIGHT
  fld dword ptr [esi+0xF0]
  fadd dword ptr [0x85BCA0]
  cmp word ptr [esi+0x13C],0x035E
  jne LABEL1
  fadd dword ptr [0x85BCA0]
  ;fadd qword ptr [0x85BCD0]
  LABEL1:
end
005BE29B = satoriA236TREE_HEIGHT
005BE338 = satoriA236TREE_HEIGHT

func satoriA236TREE_CENTER
  fstp st0
  fld dword ptr [esi+0xEC]
end
005BE2C7 = satoriA236TREE_CENTER
005BE35F = satoriA236TREE_CENTER

005BE272 = satoriNOP

func satoriA236TREE_SPAWNREQ
  cmp word ptr [esi+0x140],0x31
  jl 0x5BE5F8
  cmp word ptr [esi+0x140],0x37
  jg 0x5BE5F8
  test edx,edx
  jne 0x5BE5F8
end
005BE240 = satoriA236TREE_SPAWNREQ

func satoriA236TREE_SPAWNDIST
  fld dword ptr [0x85BC7C]
  fadd dword ptr [0x85BC7C]
  fadd dword ptr [0x85BC7C]
  mov eax,[esi+0x144]
  and al,0x01
  je LABEL1A
  fsub dword ptr [0x85BC7C]
  mov eax,[esi+0x144]
  and al,0x02
  je LABEL1A
  fsub dword ptr [0x85BC7C]
  LABEL1A:
  mov eax,[esi+0x144]
  and al,0x04
  je LABEL1
  ;fsub dword ptr [0x85BC7C]
  LABEL1:
  cmp word ptr [esi+0x13C],0x035E
  je LABEL2
  fmul dword ptr [0x85BC58]
  jmp END
  LABEL2:
  fmul dword ptr [0x85B9C0]
  jmp END
  END:
end
005BE280 = satoriA236TREE_SPAWNDIST
005BE31D = satoriA236TREE_SPAWNDIST

func satoriA236TREE_SPAWNRATE
  cmp word ptr [esi+0x13C],0x035E
  jne LABEL1
  mov ecx,0x00000013
  jmp END
  LABEL1:
  mov ecx,0x00000059
  END:
end
005BE239 = satoriA236TREE_SPAWNRATE

func satoriA236TREE_DRAWORDER
  mov byte ptr [esi+0x358],0xFF
end
func satoriA236TREE_DRAWORDER_1
  cmp word ptr [esi+0x36C],0x0000
  mov byte ptr [esi+0x358],0xFF
end
005BE0FA = satoriA236TREE_DRAWORDER_1

;# this includes codes for subterranean garden
func satoriA236TREE_ONCE
  cmp ecx,0x00
  je 0x5BE1CC
  jne 0x5BE21A
end
005BE1BD = satoriA236TREE_ONCE

005BE721 = satoriNOP
005BE705 = satoriNOP
;005BE6F3 = satoriNOP
005BE6F3 = satoriA236TREE_DRAWORDER
005BE125 = satoriNOP
005AE81B = satoriNOP
005AE7E8 = satoriFLDZ

func satoriA236TREE
end

func satoriD623C_TO_B
  jmp 0x5B05BD
end
005B0B56 = satoriD623C_TO_B

func satoriD623B_LV
  cmp byte ptr [esi+0x6A7],0x05
end
005B05ED = satoriD623B_LV

005B05FA = satoriFLDZ
005B0614 = satoriFLDZ
005B0981 = satoriFLDZ

005B0B86 = satoriFLDZ
005B0BA0 = satoriFLDZ
005B0F49 = satoriFLDZ

func satoriD623

  pushad
  mov eax,[esi+0x144]
  cmp eax,0xA
  jge NEXTA1
  imul eax,0x19
  mov byte ptr [esi+0x113],al
  NEXTA1:
  mov eax,[esi+0x398]
  movzx eax, byte ptr [eax+0x6A7]
  imul eax,0x3C
  add eax,0x12C
  cmp dword ptr [esi+0x144],eax
  jl NEXTA2
  mov ecx,[esi+0x144]
  sub ecx,eax
  mov eax,0x19
  sub eax,ecx
  imul eax,0xA
  mov byte ptr [esi+0x113],al
  cmp byte ptr [esi+0x113],0xA
  jge NEXTA3
  NEXTA2:
  cmp dword ptr [esi+0x144],0x00000FFF
  NEXTA3:
  popad
  
  
  jl NEXT
  mov ecx,0xFFFFFFFF
  jmp 0x5C0DA5
  NEXT:
  
  pushad
  mov eax,[esi+0x398]
  cmp dword ptr [eax+0x144],0x00
  jne END2
  cmp word ptr [eax+0x142],0x00
  jne END2
  cmp word ptr [eax+0x13E],0x00
  jne END2
  cmp word ptr [eax+0x13C],0x230
  je END1
  cmp word ptr [eax+0x13C],0x231
  je END1
  jmp END2
  END1:
  mov eax,0x03
  jmp END3
  END2:
  mov eax,0x01
  END3:
  cmp eax,0x02
  popad
  jl NEXT2
  mov ecx,0xFFFFFFFF
  jmp 0x5C0DA5
  NEXT2:

  pushad
  cmp word ptr [esi+0x13E],0x00
  je LABELS0
  cmp word ptr [esi+0x13E],0x01
  je LABELS1
  jmp LABELS2
  
  LABELS0:
  fld1
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov eax,[esi+0x398]
  mov byte ptr [esi+0x104],0x01
  mov ecx,[eax+0x170]
  fld dword ptr [ecx+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [ecx+0xF0]
  ;fadd dword ptr [0x85CA78]
  fadd dword ptr [0x85CA78]
  fadd dword ptr [0x8596B8]
  fadd dword ptr [0x8596B8]
  fstp dword ptr [esi+0xF0]
  
  mov ebx,0x00
  cmp dword ptr [ecx+0x76C],0x00
  jne PRESSAB
  cmp dword ptr [ecx+0x78C],0x00
  jne PRESSAB
  jmp NOTPRESSAB
  PRESSAB:
  add ebx,0x00010000
  NOTPRESSAB:
  
  cmp dword ptr [ecx+0x770],0x00
  jne PRESSBC
  cmp dword ptr [ecx+0x790],0x00
  jne PRESSBC
  jmp NOTPRESSBC
  PRESSBC:
  add ebx,0x00100000
  NOTPRESSBC:
  
  cmp dword ptr [ecx+0x75C],0x00
  jne PRESSA
  cmp dword ptr [ecx+0x77C],0x00
  jne PRESSA
  cmp dword ptr [ecx+0x76C],0x00
  jne PRESSA
  cmp dword ptr [ecx+0x78C],0x00
  jne PRESSA
  jmp NOTPRESSA
  PRESSA:
  add ebx,0x00000001
  NOTPRESSA:
  
  cmp dword ptr [ecx+0x760],0x00
  jne PRESSB
  cmp dword ptr [ecx+0x780],0x00
  jne PRESSB
  cmp dword ptr [ecx+0x76C],0x00
  jne PRESSB
  cmp dword ptr [ecx+0x78C],0x00
  jne PRESSB
  cmp dword ptr [ecx+0x770],0x00
  jne PRESSB
  cmp dword ptr [ecx+0x790],0x00
  jne PRESSB
  jmp NOTPRESSB
  PRESSB:
  add ebx,0x00000010
  NOTPRESSB:
  
  cmp dword ptr [ecx+0x764],0x00
  jne PRESSC
  cmp dword ptr [ecx+0x784],0x00
  jne PRESSC
  cmp dword ptr [ecx+0x770],0x00
  jne PRESSC
  cmp dword ptr [ecx+0x790],0x00
  jne PRESSC
  jmp NOTPRESSC
  PRESSC:
  add ebx,0x00000100
  NOTPRESSC:
  
  cmp dword ptr [ecx+0x768],0x00
  jne PRESSD
  cmp dword ptr [ecx+0x788],0x00
  jne PRESSD
  jmp NOTPRESSD
  PRESSD:
  add ebx,0x00001000
  NOTPRESSD:
  
  mov word ptr [esi+0x142],0x01
  cmp ebx,0x00000000
  je TABLE_NULL1
  cmp ebx,0x00000001
  je TABLE_A
  cmp ebx,0x00000010
  je TABLE_B
  cmp ebx,0x00000100
  je TABLE_C
  cmp ebx,0x00001000
  je TABLE_D
  cmp ebx,0x00000011
  je TABLE_AB
  cmp ebx,0x00000101
  je TABLE_AC
  cmp ebx,0x00001001
  je TABLE_AD
  cmp ebx,0x00000110
  je TABLE_BC
  cmp ebx,0x00001010
  je TABLE_BD
  cmp ebx,0x00001100
  je TABLE_CD
  cmp ebx,0x00000111
  je TABLE_ABC
  cmp ebx,0x00001011
  je TABLE_ABD
  cmp ebx,0x00001101
  je TABLE_ACD
  cmp ebx,0x00001110
  je TABLE_BCD
  cmp ebx,0x00001111
  je TABLE_ABCD
  cmp ebx,0x00010011
  je TABLE_APB
  cmp ebx,0x00100110
  je TABLE_BPC
  cmp ebx,0x00010111
  je TABLE_APBC
  cmp ebx,0x00100111
  je TABLE_ABPC
  cmp ebx,0x00110111
  je TABLE_APBPC
  cmp ebx,0x00011011
  je TABLE_APBD
  cmp ebx,0x00101110
  je TABLE_BPCD
  cmp ebx,0x00011111
  je TABLE_APBCD
  cmp ebx,0x00101111
  je TABLE_ABPCD
  cmp ebx,0x00111111
  je TABLE_APBPCD
  jmp TABLE_NULL1
  
  TABLE_NULL1:
  mov word ptr [esi+0x140],0x00
  jmp TABLE1END
  TABLE_A:
  mov word ptr [esi+0x140],0x01
  jmp TABLE1END
  TABLE_B:
  mov word ptr [esi+0x140],0x02
  jmp TABLE1END
  TABLE_C:
  mov word ptr [esi+0x140],0x03
  jmp TABLE1END
  TABLE_D:
  mov word ptr [esi+0x140],0x04
  jmp TABLE1END
  TABLE_AB:
  mov word ptr [esi+0x140],0x05
  jmp TABLE1END
  TABLE_AC:
  mov word ptr [esi+0x140],0x06
  jmp TABLE1END
  TABLE_AD:
  mov word ptr [esi+0x140],0x07
  jmp TABLE1END
  TABLE_BC:
  mov word ptr [esi+0x140],0x08
  jmp TABLE1END
  TABLE_BD:
  mov word ptr [esi+0x140],0x09
  jmp TABLE1END
  TABLE_CD:
  mov word ptr [esi+0x140],0x0A
  jmp TABLE1END
  TABLE_ABC:
  mov word ptr [esi+0x140],0x0B
  jmp TABLE1END
  TABLE_ABD:
  mov word ptr [esi+0x140],0x0C
  jmp TABLE1END
  TABLE_ACD:
  mov word ptr [esi+0x140],0x0D
  jmp TABLE1END
  TABLE_BCD:
  mov word ptr [esi+0x140],0x0E
  jmp TABLE1END
  TABLE_ABCD:
  mov word ptr [esi+0x140],0x0F
  jmp TABLE1END
  
  TABLE_APB:
  mov word ptr [esi+0x140],0x10
  jmp TABLE1END
  TABLE_BPC:
  mov word ptr [esi+0x140],0x11
  jmp TABLE1END
  TABLE_APBC:
  mov word ptr [esi+0x140],0x12
  jmp TABLE1END
  TABLE_ABPC:
  mov word ptr [esi+0x140],0x13
  jmp TABLE1END
  TABLE_APBPC:
  mov word ptr [esi+0x140],0x14
  jmp TABLE1END
  TABLE_APBD:
  mov word ptr [esi+0x140],0x15
  jmp TABLE1END
  TABLE_BPCD:
  mov word ptr [esi+0x140],0x16
  jmp TABLE1END
  TABLE_APBCD:
  mov word ptr [esi+0x140],0x17
  jmp TABLE1END
  TABLE_ABPCD:
  mov word ptr [esi+0x140],0x18
  jmp TABLE1END
  TABLE_APBPCD:
  mov word ptr [esi+0x140],0x19
  jmp TABLE1END
  
  
  TABLE1END:
  jmp END
  
  LABELS1:
  fld1
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov eax,[esi+0x398]
  mov byte ptr [esi+0x104],0x01
  mov ecx,[eax+0x170]
  fld dword ptr [ecx+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [ecx+0xF0]
  ;fadd dword ptr [0x85CA78]
  fadd dword ptr [0x85CA78]
  fadd dword ptr [0x8596B8]
  fadd dword ptr [0x8596B8]
  fadd dword ptr [0x8596B8]
  fstp dword ptr [esi+0xF0]
  
  
  
  mov ebx,0x00
  
  cmp dword ptr [ecx+0x754],0x00
  jl PRESSL
  jg PRESSR
  je NOTPRESSLR
  cmp dword ptr [ecx+0x774],0x00
  jl PRESSL
  jg PRESSR
  je NOTPRESSLR
  PRESSL:
  add ebx,0x00000001
  jmp NOTPRESSLR
  PRESSR:
  add ebx,0x00000010
  NOTPRESSLR:
  
  cmp dword ptr [ecx+0x758],0x00
  jl PRESSU
  jg PRESSDWN
  je NOTPRESSDU
  cmp dword ptr [ecx+0x778],0x00
  jl PRESSU
  jg PRESSDWN
  je NOTPRESSDU
  PRESSDWN:
  add ebx,0x00000100
  jmp NOTPRESSDU
  PRESSU:
  add ebx,0x00001000
  NOTPRESSDU:
  
  mov word ptr [esi+0x142],0x01
  cmp ebx,0x0000000
  je TABLE_NULL2
  cmp ebx,0x0000101
  je TABLE_1
  cmp ebx,0x0000100
  je TABLE_2
  cmp ebx,0x0000110
  je TABLE_3
  cmp ebx,0x0000001
  je TABLE_4
  cmp ebx,0x0000010
  je TABLE_6
  cmp ebx,0x0001001
  je TABLE_7
  cmp ebx,0x0001000
  je TABLE_8
  cmp ebx,0x0001010
  je TABLE_9
  jmp TABLE_NULL2
  
  TABLE_NULL2:
  mov word ptr [esi+0x140],0x04
  jmp TABLE2END
  TABLE_1:
  mov word ptr [esi+0x140],0x00
  jmp TABLE2END
  TABLE_2:
  mov word ptr [esi+0x140],0x01
  jmp TABLE2END
  TABLE_3:
  mov word ptr [esi+0x140],0x02
  jmp TABLE2END
  TABLE_4:
  mov word ptr [esi+0x140],0x03
  jmp TABLE2END
  TABLE_6:
  mov word ptr [esi+0x140],0x05
  jmp TABLE2END
  TABLE_7:
  mov word ptr [esi+0x140],0x06
  jmp TABLE2END
  TABLE_8:
  mov word ptr [esi+0x140],0x07
  jmp TABLE2END
  TABLE_9:
  mov word ptr [esi+0x140],0x08
  jmp TABLE2END
  
  TABLE2END:
  
  jmp END
  
  LABELS2:
  
  END:
  popad

  mov byte ptr [esi+0x18C],0x03
end
005C0BED = satoriD623

func satoriD623_FIX1
  fldz
  fmul dword ptr [esi+0xF4]
end
005C0D35 = satoriD623_FIX1
005C0D4B = satoriFLDZ

func satoriD623_FLDZ1
  fldz
  fstp dword ptr [esi+0x128]
end

func satoriD623_FLDZ2
  fldz
  jnl 0x5C7FD2
end

005C0CFC = satoriNOP
005C0D0E = satoriNOP
005C7F99 = satoriFLDZ
005C7FB1 = satoriD623_FLDZ1
005C7FC6 = satoriD623_FLDZ2

func satoriD623_SUBSEQ1_JMP
  add eax,ebx
  jmp 0x5C0CF6
end
005C0C7F = satoriD623_SUBSEQ1_JMP

func satoriD623_SUBSEQ1_SETUP
  cmp word ptr [esi+0x13E],0x01
  jg 0x5C7F8C
  jmp 0x5C7F92
end
005C7F85 = satoriD623_SUBSEQ1_SETUP

func satoriD623B_ONCE1
  cmp eax,0x00
  jne 0x5B083C
  jmp 0x5B07C1
end
func satoriD623B_ONCE2
  cmp ecx,0x00
  jne 0x5B0767
  jmp 0x5B0689
end
005B07B3 = satoriD623B_ONCE1
005B0676 = satoriD623B_ONCE2

func satoriA2141_BULLETSCALE
  fmul qword ptr [0x85B920]
end
005BD674 = satoriA2141_BULLETSCALE

func satoriA2141_BULLETEND
  fldpi
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x80
  jb 0x5BBFDB
  sub al,0x19
  mov [esi+0x113],al
  jmp 0x5BD6AD
end
005BD697 = satoriA2141_BULLETEND

func satoriA2141_BULLETMOVE


  pushad
  push 0x03
  push 0x00
  push 0x00
  mov ecx,esi
  call 0x48CE90
  test al,al
  popad
  jne 0x5BDA45
  
  
  mov ecx,[esi+0x35C]
  cmp dword ptr [esi+0x144],0x00
  jne LABEL1
  fld dword ptr [esi+0x12C]
  fstp dword ptr [ecx]
  fldz
  fstp dword ptr [ecx+0x04]
  
  ;# trail
  fld dword ptr [0x85B3B0]
  push 0x02
  push 0x01
  push 0x0A
  mov ecx,esi
  push ecx
  fstp dword ptr [esp]
  push 0x000003DF
  mov ecx,esi
  call 0x4B0F50
  
  LABEL1:
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx+0x04]
  fadd dword ptr [0x85AD04]
  fst dword ptr [ecx+0x04]
  
  fst dword ptr [esp+0x18]
  sub esp,0x08
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx]
  fstp dword ptr [esp]
  lea ecx,[esi+0x04]
  call 0x438C00
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx]
  fstp dword ptr [esi+0x12C]
  
  cmp byte ptr [esi+0x104],0x01
  je LABELB1
  fldz
  fld1
  fsubp
  jmp END
  LABELB1:
  fld1
  END:
  fmul dword ptr [esi+0xF4]
  fadd dword ptr [esi+0xEC]
  fstp dword ptr [esi+0xEC]
  
  fld dword ptr [esi+0xF8]
  fadd dword ptr [esi+0xF0]
  fstp dword ptr [esi+0xF0]
  
  cmp byte ptr [esi+0x194],0x00
  jne LABELC1
  mov dword ptr [esi+0x144],0x5A
  LABELC1:
  cmp dword ptr [esi+0x144],0x52
  jl 0x5BD68E
end
005BD65E = satoriA2141_BULLETMOVE

func satoriA2141_SUBSEQLV
  mov al,0x00
end
005BD8B1 = satoriA2141_SUBSEQLV

func satoriA2141_DUR
  cmp dword ptr [esi+0x144],0x5A
end
005BD68E = satoriA2141_DUR

func satoriA2141_POPDUR
  cmp dword ptr [esi+0x144],0x05
end
005BD894 = satoriA2141_POPDUR

func satoriA2141_POPANG
  fld dword ptr [esi+0x12C]
  fstp dword ptr [esp+0x38]
  fldz
end
005BD8A1 = satoriA2141_POPANG

;# target opponent angle
func satoriA2141_ANGG

  sub esp,0x28
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x20],ecx
  mov ecx,[esi+0x170]
  fld dword ptr [ecx+0xEC]
  fsub dword ptr [esi+0xEC]
  fild dword ptr [esp+0x20]
  fmulp st1
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx+0xF0]
  ;fadd qword ptr [0x857B20]
  fsub dword ptr [0x871540]
  fsub dword ptr [esi+0xF0]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  call 0x409760
  fchs
  add esp,0x28
  
  fst dword ptr [esp+0x22C]
  movzx ecx, byte ptr [esi+0x104]
end

func satoriA2141_ANGA

  sub esp,0x28
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x20],ecx
  mov ecx,[esi+0x170]
  fld dword ptr [ecx+0xEC]
  fsub dword ptr [esi+0xEC]
  fild dword ptr [esp+0x20]
  fmulp st1
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx+0xF0]
  fsub dword ptr [0x871540]
  fsub dword ptr [esi+0xF0]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  call 0x409760
  fchs
  add esp,0x28
  
  fst dword ptr [esp+0x26C]
  movzx ecx, byte ptr [esi+0x104]
end
005AD99B = satoriA2141_ANGG
005ADE0F = satoriA2141_ANGA

func satoriA2141_PATTERN1
  nop
end
func satoriA2141_PATTERN2
  fsub qword ptr [0x857F80]
end
005AD943 = satoriA2141_PATTERN1
005AD959 = satoriA2141_PATTERN1
005AD96B = satoriA2141_PATTERN2

005ADDB7 = satoriA2141_PATTERN1
005ADDCD = satoriA2141_PATTERN1
005ADDDF = satoriA2141_PATTERN2

func satoriA2141_BULLETCOUNT
  pushad
  mov eax,[esi+0x398]
  movzx eax, byte ptr [esi+0x6AC]
  cmp al,0x00
  je LABEL0
  cmp al,0x01
  je LABEL1
  cmp al,0x02
  je LABEL2
  cmp al,0x03
  je LABEL3
  cmp al,0x04
  je LABEL4
  
  LABEL0:
  fcomp dword ptr [0x86782C]
  jmp END
  
  LABEL1:
  fcomp dword ptr [0x85C22C]
  jmp END
  
  LABEL2:
  fcomp dword ptr [0x858830]
  jmp END
  
  LABEL3:
  fcomp dword ptr [0x85BAE4]
  jmp END
  
  LABEL4:
  fcomp dword ptr [0x85B9D4]
  jmp END
  
  END:
  popad
end
005AD910 = satoriA2141_BULLETCOUNT
005ADD86 = satoriA2141_BULLETCOUNT

func satoriA2141_HEIGHT
  cmp word ptr [esi+0x13C],0x1FE
  je LABELBG
  cmp word ptr [esi+0x13C],0x200
  je LABELBA
  cmp word ptr [esi+0x13C],0x1FF
  je LABELCG
  cmp word ptr [esi+0x13C],0x201
  je LABELCA
  
  LABELBG:
  fld dword ptr [0x85B870]
  jmp END
  
  LABELBA:
  fld dword ptr [0x85B870]
  jmp END
  
  LABELCG:
  fld dword ptr [0x85B3B0]
  jmp END
  
  LABELCA:
  ;fld dword ptr [0x85B3B0]
  fldz
  
  END:
end
005ADAA4 = satoriA2141_HEIGHT
005ADF18 = satoriA2141_HEIGHT

func satoriA2141_JUMPA
  jmp 0x5ADCF3
end
005ADAAF = satoriA2141_JUMPA

func satoriA2141_JUMPG
  jmp 0x5AD88D
end
005AD6B1 = satoriA2141_JUMPG

func satoriD421_INSTANCE
  movzx eax,word ptr [ecx+0x00013C]
  
  cmp ax,0x21C
  jl LABELOUT
  cmp ax,0x21F
  jg LABELOUT
  
  cmp word ptr [ecx+0x13E],0x00
  jne LABELOUT
  cmp dword ptr [ecx+0x144],0x00
  jne LABELOUT
  cmp word ptr [ecx+0x142],0x00
  jne LABELOUT
  cmp word ptr [ecx+0x140],0x00
  jne LABELOUT
  
  fstp st0
  jmp 0x5BEFCF
  
  LABELOUT:
end
005BEF86 = satoriD421_INSTANCE

func satoriD421_EFF
  pushad
  ;#fld dword ptr [0x85BCDC]
  
  mov ecx,[esi+0x398]
  mov ecx,[ecx+0x170]
  fld dword ptr [ecx+0xF0]
  fadd dword ptr [0x871544]
  fld dword ptr [esi+0xF0]
  fadd dword ptr [0x858EE0]
  fcompp 
  fnstsw ax
  test ah,0x41
  ;jne LABEL1
  jne END1
  fld dword ptr [esi+0xF0]
  fld dword ptr [ecx+0xF0]
  fadd dword ptr [0x871544]
  fadd dword ptr [0x858EE0]
  fcompp 
  fnstsw ax
  test ah,0x41
  ;jne LABEL1
  jne END1
  fld dword ptr [ecx+0xEC]
  fld dword ptr [esi+0xEC]
  fadd dword ptr [0x858EE0]
  fcompp 
  fnstsw ax
  test ah,0x41
  ;jne LABEL1
  jne END1
  fld dword ptr [esi+0xEC]
  fld dword ptr [ecx+0xEC]
  fadd dword ptr [0x858EE0]
  fcompp 
  fnstsw ax
  test ah,0x41
  ;jne LABEL1
  jne END1
  
  mov ebx,[esi+0x398]
  movzx eax, word ptr [ebx+0x5E4]
  movzx ecx, byte ptr [ebx+0x6A6]
  add ax,0x02
  add ax,cx
  cmp ax,0x01F4
  jl LABELB1
  mov ax,0x01F4
  LABELB1:
  mov [ebx+0x5E4],ax
  jmp END1
  
  cmp word ptr [ecx+0x13C],0x60
  jl LABEL1X
  cmp word ptr [ecx+0x13C],0x96
  jge LABEL1X
  jmp LABEL1
  
  LABEL1X:
  
  cmp word ptr [ecx+0x13C],0xC5
  jl LABEL1Y
  cmp word ptr [ecx+0x13C],0xC7
  jge LABEL1Y
  jmp LABEL1
  
  LABEL1Y:
  mov eax,[esi+0x398]
  mov ebx,eax
  mov eax,0xC
  sub al,[ebx+0x6A6]
  imul eax,0xF
  mov ah,[esi+0x194]
  add ah,0x01
  cmp ah,al
  jb LABEL2
  mov ecx,[esi+0x170]
  cmp byte ptr [ecx+0x7CC],0x02
  je LABELSKIP
  push 0x1F4
  call 0x4691F0
  
  ;# sound
  push 0x03
  mov ecx,[esi+0x398]
  call 0x464980
  LABELSKIP:
  
  mov ah,0x00
  LABEL2:
  mov [esi+0x194],ah
  
  LABEL1:
  popad 
  
  pushad
  mov al,[esi+0x194]
  mov [esi+0x112],al
  END1:
  popad
  
  
  cmp [esi+0x144],ecx
  fld qword ptr [0x85CDE0]
end

func satoriD421_EFF_ALT
  cmp byte ptr [esi+0x194],0x00
  je 0x5C649A
  
  cmp [esi+0x144],ecx
  fld qword ptr [0x85CDE0]
end
005BF206 = satoriD421_EFF_ALT

func satoriD421_ONGRAZE_ETC
  push 0x0A

  mov ecx,dword ptr [esi+0x190]
  cmp ecx,0x01
  je LABEL1
  cmp ecx,0x02
  je LABEL3
  cmp ecx,0x06
  je LABEL2
  cmp ecx,0x07
  je LABEL3
  jne END
  
  LABEL1:
  
  mov ecx,[esi+0x398]
  movzx eax, word ptr [ecx+0x5E4]
  movzx ecx, byte ptr [ecx+0x6A6]
  add cx,0x02
  imul cx,cx,0x05
  add ax,cx
  cmp ax,0x01F4
  jl LABELB1
  mov ax,0x01F4
  LABELB1:
  mov ecx,[esi+0x398]
  mov [ecx+0x5E4],ax
  
  jmp END
  LABEL2:
  
  mov ecx,[esi+0x398]
  movzx eax, word ptr [ecx+0x5E4]
  movzx ecx, byte ptr [ecx+0x6A6]
  add cx,0x02
  imul cx,cx,0x02
  add ax,cx
  cmp ax,0x01F4
  jl LABELC1
  mov ax,0x01F4
  LABELC1:
  mov ecx,[esi+0x398]
  mov [ecx+0x5E4],ax
  
  jmp END
  LABEL3:
  
  mov ecx,[esi+0x398]
  movzx eax, word ptr [ecx+0x5E4]
  movzx ecx, byte ptr [ecx+0x6A6]
  add cx,0x02
  imul cx,cx,0x03
  add ax,cx
  cmp ax,0x01F4
  jl LABELD1
  mov ax,0x01F4
  LABELD1:
  mov ecx,[esi+0x398]
  mov [ecx+0x5E4],ax
  END:
  
  mov ecx,esi
  call 0x48CDE0
end
005BF189 = satoriD421_ONGRAZE_ETC

func satoriD421_DEFAULTHITS
  mov byte ptr [esi+0x194],0x03
end
005C7C84 = satoriD421_DEFAULTHITS

;# durations 005BF1E5
func satoriD421_DUR
  cmp al,0x01
  mov ecx,0x000000D7
  jl LABEL1
  LABEL1:
  cmp al,0x02
  mov ecx,0x000000D7
end
;005BF1E3 = satoriD421_DUR

func satoriD421_DUR0
  mov ecx,0x0000011F
end
005BF1E5 = satoriD421_DUR0

func satoriD421_DUR2
  mov ecx,0x0000011F
end
005BF1EC = satoriD421_DUR2

func satoriD421_DUR4
  mov ecx,0x0000011F
end
005BF1F5 = satoriD421_DUR4

func satoriD421_HEIGHT
  fadd dword ptr [0x85C0B8]
end
005C7CA6 = satoriD421_HEIGHT

func satoriD421_STATIONARY
  fstp st0
end
005BF088 = satoriD421_STATIONARY
005BF0D0 = satoriD421_STATIONARY

func satoriD421B_SELECT
  fld dword ptr [0x858198]
  push 0x03
end
005AEE15 = satoriD421B_SELECT
005AEFA0 = satoriD421B_SELECT
005AF1AF = satoriD421B_SELECT
005AF3A5 = satoriD421B_SELECT

func satoriD421B_SUBSEQ
  fldz
end
005AEE38 = satoriD421B_SUBSEQ
005AF1D2 = satoriD421B_SUBSEQ

func satoriD421B_LOOP
  cmp edi,0x0000003C
end
005AEEEB = satoriD421B_LOOP
005AF072 = satoriD421B_LOOP
005AF285 = satoriD421B_LOOP
005AF477 = satoriD421B_LOOP

func satoriD214_LV
  cmp al,0x00
  je short LABEL0
  cmp al,0x01
  je short LABEL1
  cmp al,0x02
  je short LABEL2
  cmp al,0x03
  je short LABEL3
  cmp al,0x04
  jge short LABEL4
  jmp short LABEL0
  
  LABEL0:
  mov ebp,0x0000003
  jmp END
  
  LABEL1:
  mov ebp,0x0000003
  jmp END
  
  LABEL2:
  mov ebp,0x0000004
  jmp END
  
  LABEL3:
  mov ebp,0x0000004
  jmp END
  
  LABEL4:
  mov ebp,0x0000004
  jmp END
  
  END:
  fld dword ptr [0x85BCA4]
end
005ACAE7 = satoriD214_LV
005ACC6D = satoriD214_LV
005ACE73 = satoriD214_LV
005AD05D = satoriD214_LV

func satoriD214_DUR
  cmp dword ptr [esi+0x144],0x2FF
end
005BC69B = satoriD214_DUR

func satoriD214_HEIGHT
  fsub qword ptr [0x85D3D0]
end
005ACB52 = satoriD214_HEIGHT
005ACCD6 = satoriD214_HEIGHT
005ACEDC = satoriD214_HEIGHT
005AD0C6 = satoriD214_HEIGHT

func satoriD214_ANGLEFIX_3
  fld dword ptr [esi+0x37C]
  
  fld dword ptr [0x85BBE4]
  fcompp
  fnstsw ax
  test ah,0x41
  ;# not under
  jne short LABEL1
  ;# under
  
  fld dword ptr [esi+0x37C]
  
  fldz
  fsub dword ptr [0x85BBE4]
  fcompp
  fnstsw ax
  test ah,0x41
  ;# not under
  jne short LABEL3
  ;# under
  jmp LABEL2
  
  LABEL1:
  fadd dword ptr [0x85BBE4]
  jmp END
  
  LABEL2:
  fsub dword ptr [0x85BBE4]
  jmp END
  
  LABEL3:
  fadd dword ptr [esi+0x37C]
  
  END:
end
005BCBCE = satoriD214_ANGLEFIX_3

func satoriD214_ANGLEFIX_2
  fild dword ptr [esp+0x18]
  fsub qword ptr [0x85BBB0]
  fld dword ptr [esp+0x10]
  fld1
  faddp
  fdivp
  
  push 0x03
end
005BCBC0 = satoriD214_ANGLEFIX_2

func satoriD214_ANGLEFIX
  ;fadd dword ptr [0x85B824]
end
005BCBD7 = satoriD214_ANGLEFIX

func satoriD214_LOOPCOUNT
  add edi,0x0F
  cmp edi,0x3C
end
005BCC22 = satoriD214_LOOPCOUNT

;# 10 esp+1C = wave count
;# 18 esp+24 / edi = angle

func satoriD214_INITSPEED
  fstp st0
  fld dword ptr [esp+0x1C]
  fmul dword ptr [0x8589F0]
  
  pushad
  mov ecx,[esi+0x398]
  cmp word ptr [ecx+0x13C],0x1F4
  je short GRB
  cmp word ptr [ecx+0x13C],0x1F5
  je short GRC
  cmp word ptr [ecx+0x13C],0x1F6
  je short AUB
  cmp word ptr [ecx+0x13C],0x1F7
  je short AIC  
  jmp END
  GRB:
  jmp END
  GRC:
  fadd dword ptr [0x85BC7C]
  fadd dword ptr [0x85BC7C]
  jmp END
  AUB:
  jmp END
  AIC:
  fadd dword ptr [0x85BC7C]
  fadd dword ptr [0x85BC7C]
  jmp END
  
  fadd dword ptr [0x85BC7C]
  END:
  popad
  fstp dword ptr [esp+0x0001D0]
end
005BCBE6 = satoriD214_INITSPEED

func satoriD214_SUBSEQ_TARG
  fld dword ptr [0x8589F0]
  fcompp 
  fnstsw ax
  test ah,0x41
  ;# not under
  jne short LABEL1
  ;# under
  jmp LABEL2
  
  LABEL1:
  fild dword ptr [esp+0x24]
  fdiv dword ptr [0x85B3B0]
  fstp dword ptr [esp+0x0001D4]
  jmp END
  
  LABEL2:
  fild dword ptr [esp+0x24]
  fdiv dword ptr [0x85B3B0]
  
  fld dword ptr [0x8589F0]
  fcomp
  fnstsw ax
  test ah,0x41
  ;# not under
  jne short LABELA1
  ;# under
  jmp LABELA2
  
  LABELA1:
  fstp st0
  fld dword ptr [0x871538]
  jmp END2
  
  LABELA2:
  fstp st0
  fldz
  
  END2:
  
  fstp dword ptr [esp+0x0001D4]
  jmp END
  
  END:
end
005BCBF1 = satoriD214_SUBSEQ_TARG

func satoriD214_MOMENTUMS
  fadd qword ptr [0x857F78]
  fmul qword ptr [0x85B920]
end
005BC6B7 = satoriD214_MOMENTUMS

func satoriD214_INSTAPOP
  jmp 0x5BCB2F
end
005BC9C6 = satoriD214_INSTAPOP

func satoriD236_CRYSTALS
  fld1
end
005BDBD6 = satoriD236_CRYSTALS

func satoriD236_ETC_3
  cmp word ptr [ecx+0x13E],0x00
  jne 0x5BDCC3
  cmp ax,0x0208
  je 0x5BDCE1
end
005BDCAB = satoriD236_ETC_3

func satoriD236_ETC_2
  mov word ptr [esi+0x142],0x0000
  mov byte ptr [esi+0x194],0x00
  mov dword ptr [esi+0x190],0x01
  cmp byte ptr [esi+0x113],0x20
  jb 0x5BDBEB
  sub byte ptr [esi+0x113],0x20
  sub byte ptr [esi+0x112],0x20
  sub byte ptr [esi+0x111],0x20
  sub byte ptr [esi+0x110],0x20
  jmp 0x5BDCD6
end
005BDCC5 = satoriD236_ETC_2

func satoriD236_ETC_1
  ;cmp [esi+0x000140],bx
  cmp word ptr [esi+0x000140],0x0E
end
005BDB14 = satoriD236_ETC_1

func satoriD236_PROJSCALE_2
  fld1
  fst dword ptr [esi+0x120]
  fstp dword ptr [esi+0x11C]
  mov ecx,[esi+0x000398]
end
005BDB21 = satoriD236_PROJSCALE_2

func satoriD236_PROJSCALE_1
  fstp dword ptr [esi+0x000120]
  fld1
  fst dword ptr [esi+0x120]
  fstp dword ptr [esi+0x11C]
end
005BDE19 = satoriD236_PROJSCALE_1
005BDDCB = satoriD236_PROJSCALE_1

func satoriD236C_ANG
  fadd dword ptr [0x85BBE4]
end
005BDD23 = satoriD236C_ANG

func satoriD236C_N
  fldz
  fsub qword ptr [0x85BBE4]
  push 0x03
end
005AE698 = satoriD236C_N
005AE22B = satoriD236C_N

func satoriD236B_N
  fld qword ptr [0x871520]
  push 0x03
end
005AE42C = satoriD236B_N
005AE062 = satoriD236B_N

func satoriD236B_HEIGHT
  fadd dword ptr [0x85CBBC]
end
;005ADFE4 = satoriD236B_HEIGHT
;005AE091 = satoriD236B_HEIGHT
;005AE3AF = satoriD236B_HEIGHT
;005AE45B = satoriD236B_HEIGHT

func satoriD236B_HEIGHT_0
  mov ebx,[esi+0x398]
  cmp word ptr [ebx+0x13C],0x208
  je short LABEL1
  cmp word ptr [ebx+0x13C],0x20A
  je short LABEL1
  jmp LABEL2
  
  LABEL1:
  fld dword ptr [0x85CBBC]
  jmp END
  
  LABEL2:
  fld qword ptr [0x857980]
  
  END:
end
005BDA57 = satoriD236B_HEIGHT_0

func satoriD236_ENDLOOP
  add edi,0x19
  cmp edi,0x19
end
005AE497 = satoriD236_ENDLOOP
005AE703 = satoriD236_ENDLOOP
005AE296 = satoriD236_ENDLOOP
005AE0CD = satoriD236_ENDLOOP

func satoriD236_MOMENTUM_2
  fld dword ptr [esi+0xF8]
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0xF8]
  mov ebx,0x00000002
end
;005AE2A9 = satoriD236_MOMENTUM_2
;005AE4F3 = satoriD236_MOMENTUM_2

005B86A4 = satoriNOP

func satoriD236_MOMENTUM_1
  fld1
end
005B8675 = satoriD236_MOMENTUM_1

func satoriD236_TEST

  cmp dword ptr [esi+0x144],0x01
  jne END
  cmp word ptr [esi+0x142],0x01
  jne END
  cmp word ptr [esi+0x140],0x00
  jne END
  cmp word ptr [esi+0x13E],0x00
  jne END
  
  pushad
  lea edi,[esi+0x5E8]
  push 0x00
  mov ecx,edi
  call 0x456C80
  movsx eax,word ptr [eax]
  
  popad
  
  cmp word ptr [esi+0x142],0x01
  cmp word ptr [esi+0x142],0x01
  cmp word ptr [esi+0x142],0x01
  cmp word ptr [esi+0x142],0x01
  cmp word ptr [esi+0x142],0x01
  cmp word ptr [esi+0x142],0x01
  cmp word ptr [esi+0x142],0x01
  cmp word ptr [esi+0x142],0x01
  cmp word ptr [esi+0x142],0x01
  
  END:
  mov ecx,esi
  call 0x487CA0
end
;005ADF3A = satoriD236_TEST

func satori66C_REDIRECT
  jmp 0x5AB1A9
end
005AC8B4 = satori66C_REDIRECT

func satori66B_MOMENTUM
  fld dword ptr [0x85B3B0]
end
005B8411 = satori66B_MOMENTUM

func satori66B_MOMENTUM_2
  fsub dword ptr [0x85AAE8]
end
005AB1B6 = satori66B_MOMENTUM_2
005AB2BC = satori66B_MOMENTUM_2

func satori66B_MOMENTUM_3
  cmp word ptr [esi+0x140],0x09
end
005AB2A8 = satori66B_MOMENTUM_3

func satoriC_DENSITY
  
  ;# graze res
  pushad
  push 0x14
  mov ecx,esi
  call 0x48CDE0

  ;# density
  push 0x03
  mov ecx,esi
  call 0x48CE30
  popad
  
  
  
  pushad
  mov eax,[esi+0x190]
  
  cmp eax,0x04
  je short LABEL3A
  cmp eax,0x06
  je short LABEL3A
  cmp eax,0x08
  je short LABEL3A
  
  jmp short LABEL3
  LABEL3A:
  mov byte ptr [esi+0x194],0x00
  LABEL3:

  mov eax,[esi+0x190]
  
  cmp eax, 0x00
  jne short LABEL4
  
  ;cmp eax, 0x01
  ;je short LABEL4
  ;cmp eax, 0x02
  ;je short LABEL4
  
  jmp short LABEL5
  LABEL4:
  movzx eax, word ptr [esi+0x36C]
  add ax,0x01
  mov word ptr [esi+0x36C],ax
  cmp ax,0x04
  jl short LABEL5
  cmp byte ptr [esi+0x194],0x00
  je short LABEL5
  mov dword ptr [esi+0x190],0x00
  mov word ptr [esi+0x36C],0x00
  
  LABEL5:
  popad
  jmp 0x5BC2BC
end
005BC282 = satoriC_DENSITY

func satoriC_DENSITY_2
  cmp byte ptr [esi+0x194],0x00
end
005BC40C = satoriC_DENSITY_2

func satoriC_DENSITY_2A
  cmp byte ptr [esi+0x194],0x00
  jmp 0x5BC40C
end
005BC3AE = satoriC_DENSITY_2A

func satoriC_DENSITY_2B
  cmp byte ptr [esi+0x194],0x00
  je 0x5BC3AE
  jmp 0x5BC381
end
005BC378 = satoriC_DENSITY_2B

func satoriC_DENSITY_3
  cmp byte ptr [esi+0x194],0x00
  jng 0x5BC282
  jmp 0x5BC1F7
end
005BC1EA = satoriC_DENSITY_3

005BC3A7 = satoriNOP

func satoriC_DENSITY_5
  mov byte ptr [esi+0x194],0x00
end
005BC279 = satoriC_DENSITY_5

func satoriC_THROB
  fld dword ptr [esi+0xF0]
  fsub dword ptr [0x85AAE8]
  fstp dword ptr [esi+0xF0]
  fmul qword ptr [0x85BAD0]
end
005BC214 = satoriC_THROB

func satoriC_FIX
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0001 ;# 2c
  je 0x5C7069
  cmp ax,0x0002 ;# j2c
  je 0x5C7069
  cmp ax,0x0003 ;# else
  je 0x5C7069
  cmp ax,0x0005 ;# 2c
  je 0x5C7069
  cmp ax,0x0006 ;# j2c
  je 0x5C7069
  cmp ax,0x0007 ;# else
  je 0x5C7069
  jmp 0x5C706F
end
005C701C = satoriC_FIX

func satoriC_HITCOUNT
  mov byte ptr [esi+0x194],0x04
  jmp 0x5C74AE
end
005C7069 = satoriC_HITCOUNT

func satori2C_Y
  cmp word ptr [esi+0x13E],0x01
  je LABEL2C
  cmp word ptr [esi+0x13E],0x02
  je LABELJ2C
  cmp word ptr [esi+0x13E],0x05
  je LABEL2C
  cmp word ptr [esi+0x13E],0x06
  je LABELJ2C
  jmp END
  
  LABEL2C:
  fld dword ptr [esi+0xF0]
  fadd st0,st1
  fstp dword ptr [esi+0xF0]
  jmp END
  
  LABELJ2C:
  fld dword ptr [esi+0xF0]
  fsub st0,st1
  fstp dword ptr [esi+0xF0]
  jmp END
  END:
  fsub dword ptr [0x85B9C0] ;#.75
end
005BC38A = satori2C_Y

func satoriC_BULLET_RECAST
  cmp cx,0x019A ;# 410 5C
  je 0x5BC267
end
;005BC260 = satoriC_BULLET_RECAST

func satoriC_BULLET_UNLIMIT
  jmp 0x5BC282
end
005BC259 = satoriC_BULLET_UNLIMIT

func satoriC_BULLET_TRANSFORMS_2
  cmp eax,0x07
  ja 0x5BC5AE
  cmp eax,0x05
  je 0x5BC1D1
  cmp eax,0x06
  je 0x5BC1D1
  cmp eax,0x07
  je 0x5BC1D1
  jmp dword ptr [eax*0x4+0x5C6B6C]
end
005BBFF7 = satoriC_BULLET_TRANSFORMS_2

func satoriC_BULLET_TRANSFORMS
  jmp 0x5BC1D1
end
;# subseq 1 for 2C
005BC03E = satoriC_BULLET_TRANSFORMS
;# subseq 2 for j2C
005BC175 = satoriC_BULLET_TRANSFORMS

func satori5C_MOVE
  jmp 0x5AB741
end
005AB346 = satori5C_MOVE

func satori2C_MOVE
end
005AB9BC = satori5C_MOVE

func satori6C_CHARGE
  LABEL0:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL03
  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x00
  mov ecx,esi
  call edx
  
  LABEL03:
  cmp dword ptr [esi+0x144],0x00
  jne LABEL01
  cmp word ptr [esi+0x142],0x00
  jne LABEL01
  cmp word ptr [esi+0x140],0x00
  jne LABEL01
  cmp word ptr [esi+0x13E],0x01
  je LABEL02
  
  LABEL01:
  cmp word ptr [esi+0x13E],0x00
  jne LABEL1
  cmp word ptr [esi+0x142],0x00
  jne LABEL1
  cmp word ptr [esi+0x140],0x03
  jne LABEL2
  cmp byte ptr [esi+0x7F4],0x00
  je LABEL2
  fld dword ptr [esi+0xF0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85C538]
  push edi
  push eax
  sub esp,0x08
  fstp dword ptr [esp+0x20]
  mov ecx,esi
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x3E
  call 0x438CE0
  mov edx,[esi]
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  jmp LABEL2
  
  LABEL02:
  
  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x00
  mov ecx,esi
  call edx
  END:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret
  
  LABEL2:
  cmp word ptr [esi+0x142],0x00
  jne LABEL1
  cmp word ptr [esi+0x140],0x06
  jne LABEL1
  mov word ptr [esi+0x7D0],0x01
  
  ;# obj create
  jmp 0x5AB7BA
  
  LABEL1:
  cmp word ptr [esi+0x13E],0x01
  jne END
  cmp word ptr [esi+0x142],0x00
  jne END
  cmp word ptr [esi+0x140],0x04
  jne END
  
  ;# obj create
  jmp 0x5AB908
end
005AB756 = satori6C_CHARGE

func satoriJ5C_MOVE
  jmp 0x5AC127
end
005ABCB1 = satoriJ5C_MOVE

func satoriJ2C_MOVE
end
005AC402 = satoriJ5C_MOVE

func satoriJ6C_CHARGE
  LABEL0:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL03
  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x00
  mov ecx,esi
  call edx
  
  LABEL03:
  cmp dword ptr [esi+0x144],0x00
  jne LABEL01
  cmp word ptr [esi+0x142],0x00
  jne LABEL01
  cmp word ptr [esi+0x140],0x00
  jne LABEL01
  cmp word ptr [esi+0x13E],0x01
  je LABEL02
  cmp word ptr [esi+0x13E],0x02
  je LABEL02
  
  LABEL01:
  cmp word ptr [esi+0x13E],0x00
  jne LABEL1
  cmp word ptr [esi+0x142],0x00
  jne LABEL1
  cmp word ptr [esi+0x140],0x03
  jne LABEL2
  cmp byte ptr [esi+0x7F4],0x00
  je LABEL2
  fld dword ptr [esi+0xF0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85C538]
  push edi
  push eax
  sub esp,0x08
  fstp dword ptr [esp+0x20]
  mov ecx,esi
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x3E
  call 0x438CE0
  mov edx,[esi]
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  jmp LABEL2
  
  LABEL02:
  
  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x09
  mov ecx,esi
  call edx
  END:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret
  
  LABEL2:
  cmp word ptr [esi+0x142],0x00
  jne LABEL1
  cmp word ptr [esi+0x140],0x06
  jne LABEL1
  mov word ptr [esi+0x7D0],0x01
  
  ;# obj create
  jmp 0x5AC1E2
  
  LABEL1:
  cmp word ptr [esi+0x13E],0x00
  jne LABEL1A
  cmp word ptr [esi+0x142],0x00
  jne LABEL1A
  cmp word ptr [esi+0x140],0x0F
  jne LABEL1A
  fld dword ptr [0x8677A8]
  fstp dword ptr [esi+0x100]
  
  LABEL1A:
  cmp word ptr [esi+0x13E],0x01
  jne LABEL1B
  cmp word ptr [esi+0x142],0x00
  jne LABEL1B
  cmp word ptr [esi+0x140],0x0D
  jne LABEL1B
  fld dword ptr [0x8677A8]
  fstp dword ptr [esi+0x100]
  
  LABEL1B:
  cmp word ptr [esi+0x13E],0x01
  jne END
  cmp word ptr [esi+0x142],0x00
  jne END
  cmp word ptr [esi+0x140],0x04
  jne END
  
  ;# obj create
  jmp 0x5AC351
end
;#j6C
005AC178 = satoriJ6C_CHARGE

func satori6C_SHOOT_X
  cmp word ptr [esi+0x13C],0x19A
  je short LABEL5C
  cmp word ptr [esi+0x13C],0x19B
  je short LABEL6C
  cmp word ptr [esi+0x13C],0x19C
  je short LABEL2C
  fldz
  jmp END
  LABEL5C:
  LABEL2C:
  ;fld dword ptr [0x85BDB8] ;# 8.5
  fld dword ptr [0x85B9BC] ;# 12.5
  jmp END
  LABEL6C:
  ;fld dword ptr [0x85B3B0] ;# 15
  fld dword ptr [0x85AE94] ;# 20.
  END:
end
func satori6C_SHOOT_X_AIR
  cmp word ptr [esi+0x13C],0x19E
  je short LABEL5C
  cmp word ptr [esi+0x13C],0x19F
  je short LABEL6C
  cmp word ptr [esi+0x13C],0x1A0
  je short LABEL2C
  fldz
  jmp END
  LABEL5C:
  LABEL2C:
  ;fld dword ptr [0x85BDB8] ;# 8.5
  fld dword ptr [0x85B9BC] ;# 12.5
  jmp END
  LABEL6C:
  ;fld dword ptr [0x85B3B0] ;# 15
  fld dword ptr [0x85AE94] ;# 20.
  END:
end
005AB7EB = satori6C_SHOOT_X
;# charge
005AB939 = satori6C_SHOOT_X
;# air
005AC213 = satori6C_SHOOT_X_AIR
;# charge air
005AC382 = satori6C_SHOOT_X_AIR

func satori6C_SUBSEQ
  cmp word ptr [esi+0x13C],0x19C
  je short LABEL2C
  fld dword ptr [0x871538]
  jmp END
  LABEL2C:
  fld1
  jmp END
  END:
end
func satori6C_SUBSEQ_CHARGE
  cmp word ptr [esi+0x13C],0x19C
  je short LABEL2C
  fld dword ptr [0x85882C]
  jmp END
  LABEL2C:
  fld dword ptr [0x85B870]
  jmp END
  END:
end
func satori6C_SUBSEQ_AIR
  cmp word ptr [esi+0x13C],0x1A0
  je short LABELJ2C
  fld dword ptr [0x871538]
  jmp END
  LABELJ2C:
  fld dword ptr [0x8589F0]
  jmp END
  END:
end
func satori6C_SUBSEQ_AIR_CHARGE
  cmp word ptr [esi+0x13C],0x1A0
  je short LABELJ2C
  fld dword ptr [0x85882C]
  jmp END
  LABELJ2C:
  fld dword ptr [0x85BCA4]
  jmp END
  END:
end
005AB800 = satori6C_SUBSEQ
005AB94E = satori6C_SUBSEQ_CHARGE
005AC228 = satori6C_SUBSEQ_AIR
005AC397 = satori6C_SUBSEQ_AIR_CHARGE

func satoriC_OFFSET_Y
  fadd dword ptr [0x85CBBC]
end
005AB81D = satoriC_OFFSET_Y
005AB96B = satoriC_OFFSET_Y
005AC245 = satoriC_OFFSET_Y
005AC3B4 = satoriC_OFFSET_Y

func satoriC_OFFSET_X
  shl edx,0x03
  sub edx,eax
end
005AB831 = satoriC_OFFSET_X
005AB97F = satoriC_OFFSET_X
005AC259 = satoriC_OFFSET_X
005AC3C8 = satoriC_OFFSET_X

func satori6C_ACC
end
005BC3E1 = satoriNOP

func satori6C_LOOPN_2B
  pushf
  cmp ax,0x192
  jne short LABEL1
  mov [esi+0x7D6],bx
  jmp END
  LABEL1:
  mov [esi+0x7D4],bx
  END:
  popf
end
005B8400 = satori6C_LOOPN_2B

func satori6C_LOOPN_6C
  pushf
  cmp ax,0x19B
  jne short LABEL1
  mov [esi+0x7D4],bx
  jmp END
  LABEL1:
  mov [esi+0x7D6],bx
  END:
  popf
end
005B83D4 = satori6C_LOOPN_6C

func satoriJ6C_LOOPN
  jmp 0x5B84C4
end
005B846F = satoriJ6C_LOOPN

func satoriJ44_GRAVITY
  fldz
  fsub dword ptr [0x85B954]
  ;fld1
  ;fsubp
end
005A6A75 = satoriJ44_GRAVITY

func satori3A_MOMENTUM
  fld dword ptr [0x85BBBC]
end
005A8EF0 = satori3A_MOMENTUM
005A8F6D = satori3A_MOMENTUM

func satori3A_MOMENTUM_2
  fsub dword ptr [0x8677A8]
end
005A8F13 = satori3A_MOMENTUM_2
005A8FF9 = satori3A_MOMENTUM_2

func satori66A_MOMENTUM
  ;fld dword ptr [0x85C610]
  fld dword ptr [0x85BC60]
end
005B82EF = satori66A_MOMENTUM

func satori66A_MOMENTUM_2
  fsub dword ptr [0x85BC58]
end
005A904C = satori66A_MOMENTUM_2

func satoriF5A_MOMENTUM
  fld dword ptr [0x86782C]
end

func satori5AA_MOMENTUM
  fld dword ptr [0x85882C]
end
005A8994 = satoriF5A_MOMENTUM
;# 5aa
005A9740 = satori5AA_MOMENTUM

func satoriF5A_MOMENTUM_2
  fsub qword ptr [0x8677C8]
end
005A893D = satoriF5A_MOMENTUM_2
;# 66a
;005A904C = satoriF5A_MOMENTUM_2
;# 5aa
005A96ED = satoriF5A_MOMENTUM_2

func satoriF5A_DIST
  fcomp dword ptr [0x857DD4]
end
005BB337 = satoriF5A_DIST

func satori2A_PARTICLE
  fld dword ptr [0x858830]
end
005A8D39 = satori2A_PARTICLE

func satori2A_PARTICLE_2
  cmp word ptr [eax+0x013C],0x012F
end
005C151E = satori2A_PARTICLE_2

func satoriJ2A_PARTICLE
  fld dword ptr [0x8589F0]
end
005A93F3 = satoriJ2A_PARTICLE

func satoriJ2A_PARTICLE_2
  cmp word ptr [eax+0x00013C],0x0134
end
005C1153 = satoriJ2A_PARTICLE_2

func satoriJ8A_MOMENTUMFRAME
  cmp word ptr [esi+0x140],0x02
end
;005A9509 = satoriJ8A_MOMENTUMFRAME

func satoriJ8A_XMUL
  fmul dword ptr [0x85B9C0]
end
005A951B = satoriJ8A_XMUL

func satoriJ8A_PARTICLE
  fldz
  push 0x03
  fst dword ptr [esp+0x000334]
  lea eax,[esp+0x000334]
  fstp dword ptr [esp+0x000338]
  push eax
  ;# subseq
  fld dword ptr [0x867810]
  push 0x01
  fstp dword ptr [esp+0x000344]
  movzx ecx,byte ptr [esi+0x000104]
  fld dword ptr [esi+0x0000F0]
  push ecx
  sub esp,0x08
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0000EC]
  fstp dword ptr [esp]
  push 0x00000350
  call 0x46EB30
  fld dword ptr [esi+0x0000F4]
end
005A9513 = satoriJ8A_PARTICLE

func satoriJ8A_PARTICLE_2
  cmp word ptr [eax+0x00013C],0x0135
end
005C129F = satoriJ8A_PARTICLE_2

func satoriJ6A
  cmp word ptr [esi+0x140],0x10
end
func satoriJ6A_2
  cmp word ptr [esi+0x140],0x02
end
005A9297 = satoriJ6A
005A92D1 = satoriJ6A_2

func satoriJ6A_SKIP
  jmp 0x5A9246
end
005A9211 = satoriJ6A_SKIP

func satoriJ2A_1F
  fld dword ptr [esi+0xF4]
  fld qword ptr [0x857F78]
  fmul st1,st0
  fxch st1
  fstp dword ptr [esi+0xF4]
  fmul dword ptr [esi+0xF8]
  fstp dword ptr [esi+0xF8]
  fldz
  fstp dword ptr [esi+0x100]
  mov byte ptr [esi+0x194],0x01
end
005B8345 = satoriJ2A_1F
005A9462 = satoriNOP
005A947F = satoriNOP
005A94A0 = satoriNOP

func satoriJ2A
  cmp word ptr [esi+0x140],0x05
  jne short LABEL1
  cmp word ptr [esi+0x142],0x00
  jne short LABEL1
  
  fldz
  fsub dword ptr [0x867860]
  fstp dword ptr [esi+0xF4]
  fld dword ptr [0x86782C]
  fstp dword ptr [esi+0xF8]
  fld dword ptr [0x8677A8]
  fstp dword ptr [esi+0x100]
  
  LABEL1:
  fld dword ptr [esi+0xF8]
end
005A9374 = satoriJ2A

func satoriJ8A
  fld dword ptr [0x85B9BC]
end
005A9529 = satoriJ8A

func satori2B_REDIRECT
  jmp 0x5A9ED9
end
005AA343 = satori2B_REDIRECT 

func satori5B_2B_SWITCH
  movsx eax,word ptr [esi+0x7D2]
end
005A99F5 = satori5B_2B_SWITCH

func satori6B_ADD
  push 0x00000191
  mov ecx,esi
  call 0x489610
  cmp bp,ax
  jle short LABEL1
  jmp 0x5BB653
  LABEL1:
  fldz
  mov eax,[esi]
  fstp dword ptr [esi+0x12C]
  push 0x00000191
  jmp 0x5BB13B
end
005BB642 = satori6B_ADD

func satori6B_2B_RECOVER
  cmp word ptr [esi+0x13C],0x191
  je LABEL6B
  mov ecx,esi
  call 0x438C60
  test al,al
  je 0x5AA12F
  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x02
  mov ecx,esi
  call edx
  jmp 0x5AA12F
  
  LABEL6B:
  mov ecx,esi
  call 0x438C60
  test al,al
  je 0x5AA12F
  mov eax,[esi]
  mov edx,[eax+0x08]
  push ebx
  mov ecx,esi
  call edx
  jmp 0x5AA12F
end
005AA11A = satori6B_2B_RECOVER

func satori5B_WAVE
  cmp word ptr [esi+0x7D2],0x01
end
func satori5B_LOOP
  cmp edi,0x02
  jl 0x5A99F5
  jmp 0x5A9AB9
end
func satori6B_LOOP
  cmp edi,0x02
  jl 0x5A9F50
  jmp 0x5AA014
end
func satoriJ5B_LOOP
  cmp edi,0x02
  jl 0x5AA6E6
  jmp 0x5AA7AA
end
func satoriJ2B_LOOP
  cmp edi,0x02
  jl 0x5AAC74
  jmp 0x5AAD38
end
;#bullet subseq
func satori5B_BULLETID
  cmp edi,0x00
  jne short LABEL1
  fld1
  jmp short LABEL2
  LABEL1:
  fldz
  LABEL2:
  fstp dword ptr [esp+0x1D0]
end
func satori6B_BULLETID
  cmp edi,0x00
  jne short LABEL1
  fld1
  jmp short LABEL2
  LABEL1:
  fldz
  LABEL2:
  fstp dword ptr [esp+0x4C4]
end
func satoriJ5B_BULLETID
  cmp edi,0x00
  jne short LABEL1
  fld1
  jmp short LABEL2
  LABEL1:
  fldz
  LABEL2:
  fstp dword ptr [esp+0x1AC]
end
func satoriJ2B_BULLETID
  cmp edi,0x00
  jne short LABEL1
  fld1
  jmp short LABEL2
  LABEL1:
  fldz
  LABEL2:
  fstp dword ptr [esp+0x1C4]
end
func satori5B_ANGDISPARITY
  imul eax,ecx
  lea edx,[eax+eax*0x8]
  lea edx,[edx+edx]
end
func satoriJ5B_ANGDISPARITY
  imul eax,edi
  lea edx,[eax+eax*0x8]
  lea edx,[edx+edx]
end
func satori5B_ANGFIX
  lea ecx,[ecx+ecx*0x8]
end
func satori5B_YOFFSET
  cmp edi,0x00
  jne short LABEL1
  fadd dword ptr [0x85AE94]
  fadd dword ptr [0x85AE94]
  jmp short LABEL2
  LABEL1:
  fadd dword ptr [0x85CA78]
  fadd dword ptr [0x85AE94]
  LABEL2:
  nop
end
func satoriJ2B_YOFFSET
  cmp edi,0x00
  jne short LABEL1
  fadd dword ptr [0x85AE94]
  fadd dword ptr [0x85AE94]
  fadd dword ptr [0x85AE94]
  jmp short LABEL2
  LABEL1:
  fadd dword ptr [0x85CA78]
  fadd dword ptr [0x85AE94]
  LABEL2:
  nop
end
func satori6B_2B_YOFFSET
  cmp word ptr [esi+0x13C],0x191
  je LABEL6B
  
  cmp edi,0x00
  jne short LABEL1A
  fadd dword ptr [0x85CA78]
  ;fadd dword ptr [0x85AE94]
  jmp short LABEL2A
  LABEL1A:
  fadd dword ptr [0x85CA78]
  fadd dword ptr [0x85AE94]
  LABEL2A:
  jmp END
  
  LABEL6B:
  cmp edi,0x00
  jne short LABEL1
  fadd dword ptr [0x85AE94]
  fadd dword ptr [0x85AE94]
  jmp short LABEL2
  LABEL1:
  fadd dword ptr [0x85CA78]
  fadd dword ptr [0x85AE94]
  LABEL2:
  
  END:
end
func satori5B_YOFFSET1
  fadd dword ptr [0x871544]
end
func satori6B_2B_ANGLES
  cmp word ptr [esi+0x13C],0x191
  je LABEL6B
  
  cmp ax,0xFF92
  mov word ptr [esi+0x7D4],ax
  jnl short LABEL1A
  mov word ptr [esi+0x7D4],0xFF92
  LABEL1A:
  cmp word ptr [esi+0x7D4],0xFFBA
  jle short LABELEND
  mov word ptr [esi+0x7D4],0xFFBA
  jmp LABELEND
  
  LABEL6B:
  cmp ax,0xFFC4
  mov word ptr [esi+0x7D4],ax
  jnl short LABEL1
  mov word ptr [esi+0x7D4],0xFFC4
  LABEL1:
  cmp word ptr [esi+0x7D4],0xFFEC
  jle short LABELEND
  mov word ptr [esi+0x7D4],0xFFEC
  
  LABELEND:
  jmp 0x5AA265
end
func satoriJ2B_ANGLES
  cmp ax,0x14
  mov word ptr [esi+0x7D4],ax
  jnl short LABEL1
  mov word ptr [esi+0x7D4],0x14
  LABEL1:
  cmp word ptr [esi+0x7D4],0x3C
  jle short LABELEND
  mov word ptr [esi+0x7D4],0x3C
  
  LABELEND:
  jmp 0x5AB09B
end

func satori6B_2B_XOFF
  cmp word ptr [esi+0x13C],0x191
  je LABEL6B
  
  cmp edi,0x00
  jne short LABEL1A
  add edx,edx
  jmp short LABEL2A
  LABEL1A:
  add edx,edx
  neg edx
  LABEL2A:
  mov [esp+0x28],edx
  jmp END
  
  LABEL6B:
  cmp edi,0x00
  jne short LABEL1
  add edx,edx
  jmp short LABEL2
  LABEL1:
  mov edx,0x00000000
  LABEL2:
  mov [esp+0x28],edx
  
  END:
end
func satoriJ2B_XOFF
  cmp edi,0x01
  jne short LABEL1
  add edx,edx
  jmp short LABEL2
  LABEL1:
  mov edx,0x00000000
  LABEL2:
  mov [esp+0x28],edx
end
func satoriB_DISABLECHARGE
  cmp word ptr [esi+0x140],0x40
end
func satoriB_STARTUP
  mov ecx,0x00000003
end

005A99BB = satoriB_STARTUP
005A9D0C = satoriB_DISABLECHARGE
005A99D7 = satori5B_WAVE
005A9AB3 = satori5B_LOOP
005A9A4E = satori5B_BULLETID
005A9A01 = satori5B_ANGDISPARITY
005A9A14 = satori5B_ANGFIX
005A9A67 = satori5B_YOFFSET
005A9AEF = satori5B_YOFFSET1
;# 6b
005A9F16 = satoriB_STARTUP
005AA17A = satoriB_DISABLECHARGE
005A9F32 = satori5B_WAVE
005AA00B = satori6B_LOOP
005A9FA9 = satori6B_BULLETID
005A9F5C = satoriJ5B_ANGDISPARITY
005A9F6F = satori5B_ANGFIX
005A9FC2 = satori6B_2B_YOFFSET
005AA0B2 = satori5B_YOFFSET1
005AA242 = satori6B_2B_ANGLES
005A9FDF = satori6B_2B_XOFF
;# jb
005AA6AB = satoriB_STARTUP
005AAA22 = satoriB_DISABLECHARGE
005AA6C8 = satori5B_WAVE
005AA7A1 = satoriJ5B_LOOP
005AA73F = satoriJ5B_BULLETID
005AA6F2 = satoriJ5B_ANGDISPARITY
005AA705 = satori5B_ANGFIX
005AA758 = satori5B_YOFFSET
005AA7E0 = satori5B_YOFFSET1
;# j2b
005AAC39 = satoriB_STARTUP
005AAFB0 = satoriB_DISABLECHARGE
005AAC56 = satori5B_WAVE
005AAD2F = satoriJ2B_LOOP
005AACCD = satoriJ2B_BULLETID
005AAC80 = satoriJ5B_ANGDISPARITY
005AAC93 = satori5B_ANGFIX
005AACE6 = satoriJ2B_YOFFSET
005AAD6E = satori5B_YOFFSET1
005AB078 = satoriJ2B_ANGLES
005AAD03 = satoriJ2B_XOFF

func satoriBBULLET_SPEED
  fld dword ptr [0x85B9BC]
end
005BBBFD = satoriBBULLET_SPEED

func satoriBBULLET_SPEED1
  fld dword ptr [eax]
  
  pushad
  mov eax,[esi+0x144]
  cmp eax,0x16
  jl LABELEND
  sub eax,0x0E
  xor edx,edx
  mov ebx,0x32
  div ebx
  cmp word ptr [esi+0x13E],0x01
  je short LABEL1
  jmp short LABEL2
  
  LABEL1:
  cmp edx,0x19
  jl short LABEL1A
  fsub dword ptr [0x85BCA4]
  jmp short LABEL1B
  LABEL1A:
  fadd dword ptr [0x85BCA4]
  LABEL1B:
  jmp short LABELEND
  
  LABEL2:
  cmp edx,0x19
  jl short LABEL2A
  fadd dword ptr [0x85BCA4]
  jmp short LABEL2B
  LABEL2A:
  fsub dword ptr [0x85BCA4]
  LABEL2B:
  jmp short LABELEND
  
  LABELEND:
  popad
  fst dword ptr [eax]
  fstp dword ptr [esp]
end
005BBC1B = satoriBBULLET_SPEED1

func satoriBBULLETTRAIL
  cmp dword ptr [esi+0x144],0x00
  jne short END1
  fld dword ptr [0x85AE94]
  push 0x02
  push 0x01
  push 0x20
  push ecx
  fstp dword ptr [esp]
  
  cmp word ptr [esi+0x13E],0x00
  je short LABEL1
  cmp word ptr [esi+0x13E],0x01
  je short LABEL2
  jmp short LABEL1
  LABEL1:
  push 0x000003DF
  jmp short END
  LABEL2:
  push 0x000003E0
  jmp short END
  
  END:
  mov ecx,esi
  call 0x4B0F50
  END1:
  nop
  
  ;# density
  push 0x04
  mov ecx,esi
  call 0x48CE30
  
  cmp dword ptr [esi+0x190],0x00
end
005BBB71 = satoriBBULLETTRAIL
005BBBA0 = satoriNOP

func satoriBBULLET_JMP1
  fld1
  jmp 0x5BBBA6
end
func satoriBBULLET_JMP2
  fld1
  jmp 0x5BBBE3
end
005BBB9A = satoriBBULLET_JMP1
005BBBD7 = satoriBBULLET_JMP2


func satoriJUMPTABLE_BULLET
  cmp eax,0xBF
  je short LABEL1
  cmp eax,0xC0
  je short LABEL1
  cmp eax,0xC1
  je short LABEL1
  jmp short LABEL2
  LABEL1:
  nop
  LABEL2:
  movzx eax,byte ptr [eax+0x5C6A7C]
end
;005BBB23 = satoriJUMPTABLE_BULLET

func satori6DINIT
  fld dword ptr [0x85BC44]
end
005A64BF = satori6DINIT

func satori6DHOLD
  fld dword ptr [0x85BDB8]
end
005A6316 = satori6DHOLD

func satori4D
  fldz
  fsub dword ptr [0x86782C]
end
005A6697 = satori4D

func satoriJY
  fld dword ptr [0x85BAE4]
end
005A5E91 = satoriJY

func satoriJGRAV
  fld dword ptr [0x8677A8]
end
005A5E9D = satoriJGRAV

func satoriDJ8X
  fld dword ptr [0x8589F0]
end
005A6E57 = satoriDJ8X

func satoriHJ8DJ8Y
  fld dword ptr [0x85B9D0]
end
005A6E68 = satoriHJ8DJ8Y

func satori2DD
  fld dword ptr [0x85B9D0]
end
005A7E4A = satori2DD

func satoriHJ7X
  fldz
  ;fsub dword ptr [0x85BC30]
  fsub dword ptr [0x85BC44]
end
005A7F57 = satoriHJ7X

func satoriHJ9X
  fld dword ptr [0x85BDB8]
  ;fld dword ptr [0x85BC30]
  ;fld dword ptr [0x85BDB8]
end
005A6D6B = satoriHJ9X

func satoriHJ79Y  
  fld dword ptr [0x85C5B8]
end
005A7F68 = satoriHJ79Y

func satoriTEST11
  call 0x438CE0
end
005A7FA9 = satoriTEST11

func satoriJ66

  fld dword ptr [0x85BDB8]
end
005A684C = satoriJ66

func satoriJ44
  fldz
  fsub dword ptr [0x85BDB8]
end
;005A6A64 = satoriJ44

func satoriSPACE
  jmp 0x5C1785
end
005C172F = satoriSPACE

;# bullet 0f table
func satoriBULLET0FTABLE
  
  cmp eax,0x39
  ;je SCA
  cmp eax,0x3C
  je SC10
  cmp eax,0x3D
  je SC11
  cmp eax,0x3E
  je SC12
  cmp eax,0x3F
  je SC13
  cmp eax,0x46
  je SC20
  cmp eax,0x47
  je SC21
  cmp eax,0x48
  je SC22
  cmp eax,0x49
  je SC23
  cmp eax,0x4A
  je SC24
  cmp eax,0x4B
  je SC25
  cmp eax,0x4C
  je SC26
  cmp eax,0x4D
  je SC27
  cmp eax,0x4E
  je SC28
  cmp eax,0x4F
  je SC29
  jmp LABEL1

  SCA:
  jmp 0x5C6FF8
  jmp 0x5C6FEF
  
  SC20Z:
  mov byte ptr [esi+0x194],0x01
  mov eax, [esi+0x35C]
  fstp st1
  fstp st0
  fld dword ptr [eax+0x8]
  mov edi, [esi]
  call 0x820230
  mov edx, [edi+0x0C]
  mov ecx, esi
  push eax
  
  jmp 0x5C6FEF
  
  SC10:
  jmp 0x5C1BF3
  
  SC11:
  jmp 0x5C1C51
  
  SC12:
  jmp 0x5C7836
  mov eax,[esi+0x35C]
  jmp 0x5C94EF
  
  SC13:
  jmp 0x5C938B
  
  SC20:
  jmp 0x5C17BE
  
  SC21:
  jmp 0x5C1759
  
  SC22:
  jmp 0x5C1765
  
  SC23:
  jmp 0x5C1785
  
  SC24:
  jmp 0x5C17D7
  
  SC25:
  jmp 0x5C17FB
  
  SC26:
  jmp 0x5C184C
  
  SC27:
  jmp 0x5C1C34
  
  SC28:
  jmp 0x5C180D
  
  SC29:
  jmp 0x5C182A
  
  ;call edx
  ;pop edi
  ;pop esi
  ;pop ebx
  ;add esp,0x14
  ;ret
  
  LABEL1:
  movzx eax,byte ptr [eax+0x5CA3C8]
end
005C6E33 = satoriBULLET0FTABLE
;# add esp,0x14 is obligatory for bullet 0f
;# add esp,0x2B8 is obligatory for bullets

;# bullet seq table
func satoriBULLETSEQTABLE
  cmp eax,0x3C
  je SC10
  cmp eax,0x3D
  je SC11
  cmp eax,0x3E
  je SC12
  cmp eax,0x3F
  je SC13
  cmp eax,0x46
  je SC20
  cmp eax,0x47
  je SC21
  cmp eax,0x48
  je SC22
  cmp eax,0x49
  je SC23
  cmp eax,0x4A
  je SC24
  cmp eax,0x4B
  je SC25
  cmp eax,0x4C
  je SC26
  cmp eax,0x4D
  je SC27
  cmp eax,0x4E
  je SC28
  cmp eax,0x4F
  je SC29
  jmp LABEL1
  
  SC10:
  jmp 0x5C1BE6
  
  SC11:
  jmp 0x5C1C4C
  
  SC12:
  jmp 0x5BDE45
  mov ecx,[esi+0x190]
  jmp 0x5C3CE5
  
  SC13:
  jmp 0x5C3682
  
  ;# 870
  SC20:
  jmp 0x5C173B
  
  SC21:
  jmp 0x5C1753
  
  SC22:
  jmp 0x5C175F
  
  SC23:
  jmp 0x5C177F
  
  SC24:
  jmp 0x5C17CA
  
  SC25:
  jmp 0x5C17F5
  
  SC26:
  jmp 0x5C1846
  
  SC27:
  jmp 0x5C1C2E
  
  SC28:
  jmp 0x5C1807
  
  SC29:
  jmp 0x5C1819
  
  SC20A:
  jmp 0x5B2E40
  
  LABEL1:
  movzx eax,byte ptr [eax+0x5C6A7C]
end
005BBB23 = satoriBULLETSEQTABLE

func satoriSPELL0FTABLE
  ;#602
  cmp eax,0x00000064
  je SC05
  
  ;#605
  cmp eax,0x00000067
  je SC05
  
  cmp eax,0x0000006A
  je SC05
  
  cmp eax,0x0000006B
  je SC05
  
  ;#610
  cmp eax,0x0000006C
  je SC05
  
  cmp eax,0x0000006D
  je SC05
  
  cmp eax,0x0000006E
  je SC12
  
  cmp eax,0x0000006F
  je SC13
  
  ;#620
  cmp eax,0x00000076
  je SC20
  
  ;#621
  cmp eax,0x00000077
  je SC21
  
  ;#622
  cmp eax,0x00000078
  je SC22
  
  ;#623
  cmp eax,0x00000079
  je SC23
  
  ;#624
  cmp eax,0x0000007A
  je SC24
  
  ;#625
  cmp eax,0x0000007B
  je SC25
  
  ;#626
  cmp eax,0x0000007C
  je SC26
  
  ;#627
  cmp eax,0x0000007D
  je SC27
  
  ;#628
  cmp eax,0x0000007E
  je SC28
  
  ;#629
  cmp eax,0x0000007F
  je SC29
  
  ;#670
  cmp eax,0x000000A8
  je SC20A
  
  ;#671
  cmp eax,0x000000A9
  je SC21A
  
  ;#676
  cmp eax,0x000000AE
  je SC26A
  
  ;#677
  cmp eax,0x000000AF
  je SC27A
  jmp LABEL1
  
  SC05:
  ;mov dword ptr [esi+0x190],0x00000001 
  ;mov ecx,esi
  ;pop esi
  ;pop ebx
  ;jmp 0x4636B0
  jmp 0x5B8902
  
  SC12:
  jmp 0x5B86AF
  mov ecx,esi
  mov dword ptr [esi+0x190],0x01
  call 0x4636B0
  xor ebx,ebx
  mov [esi+0x7D0],bx
  mov [esi+0x7D2],bx
  pop esi
  pop ebx
  ret
  
  SC13:
  jmp 0x5B8912
  
  SC20:
  jmp 0x5B8902
  
  SC21:
  jmp 0x5B8902
  
  SC22:
  jmp 0x5B8902
  
  SC23:
  ;007EB113
  ;mov dword ptr [esi+0x190],0x00000000 
  ;mov byte ptr [esi+0x7F4],0x01 
  ;pop esi
  ;pop ebx
  ;pop ecx
  ;ret 
  jmp 0x5B8902
  
  SC24:
  jmp 0x5B8902
  
  SC25:
  jmp 0x5B8902
  
  SC26:
  jmp 0x5B8902
  
  SC27:
  jmp 0x5B8902
  
  SC28:
  jmp 0x5B8902
  
  SC29:
  jmp 0x5B8902
  
  SC20A:
  jmp 0x5B8902
  
  SC21A:
  jmp 0x5B8902
  
  SC26A:
  jmp 0x5B8902
  
  SC27A:
  jmp 0x5B8902
  
  LABEL1:
  movzx ecx,byte ptr [eax+0x5B8CE8]
end
005B853A = satoriSPELL0FTABLE

;# spell seq table
func satoriSPELLSEQTABLE
  cmp eax,0x0000006D
  je SC10
  cmp eax,0x0000006E
  je SC11
  cmp eax,0x0000006F
  je SC12
  cmp eax,0x00000070
  je SC13
  cmp eax,0x00000077
  je SC20
  cmp eax,0x00000078
  je SC21
  cmp eax,0x00000079
  je SC22
  cmp eax,0x0000007A
  je SC23
  cmp eax,0x0000007B
  je SC24
  cmp eax,0x0000007C
  je SC25
  cmp eax,0x0000007D
  je SC26
  cmp eax,0x0000007E
  je SC27
  cmp eax,0x0000007F
  je SC28
  cmp eax,0x00000080
  je SC29
  cmp eax,0x000000A9
  je SC20A
  cmp eax,0x000000AA
  je SC21A
  cmp eax,0x000000AF
  je SC26A
  cmp eax,0x000000B0
  je SC27A
  jmp LABEL1
  
  SC10:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1852
  
  SC11:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1C41
  
  SC12:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5B3FD0
  mov ecx,esi
  call 0x487CA0
  jmp 0x5B3FD0
  
  SC13:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5B3B36
  
  SC20:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1735
  
  SC21:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1747
  
  SC22:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C176B
  
  SC23:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1779
  
  SC24:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C17C4
  
  SC25:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C17E9
  
  SC26:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C182F
  
  SC27:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1C17
  
  SC28:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1801
  
  SC29:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1813
  
  SC20A:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1741
  
  SC21A:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C174D
  
  SC26A:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1838
  
  SC27A:
  mov ebp,0x00000003
  mov bl,0xFF
  jmp 0x5C1C1D
  
  LABEL1:
  movzx eax,byte ptr [eax+0x5B7990]
end
005ACBC4 = satoriSPELLSEQTABLE

;# spellcard table grounded
func satoriSPELLCARDTABLE_BOUNDS
  add eax,0xFFFFFF38
  cmp eax,0x2D
  jmp 0x5B9D6A
end
005B9D62 = satoriSPELLCARDTABLE_BOUNDS

func satoriSPELLCARDTABLE_SPREAD
  ;cmp eax,0x00
  ;je 0x5B9E69
  ;cmp eax,0x04
  ;je 0x5B9E69
  ;cmp eax,0x0D
  ;je 0x5B9E69
  
  cmp eax,0x0A
  je SC10
  cmp eax,0x0B
  je SC11
  cmp eax,0x0C
  je SC12
  cmp eax,0x0D
  je SC13
  cmp eax,0x13
  jbe LABEL1
  
  push ebx
  cmp eax,0x14
  je SC20
  cmp eax,0x15
  je SC21
  cmp eax,0x16
  je SC22
  cmp eax,0x17
  je SC23
  cmp eax,0x18
  je SC24
  cmp eax,0x19
  je SC25
  cmp eax,0x1A
  je SC26
  cmp eax,0x1B
  je SC27
  cmp eax,0x1C
  je SC28
  cmp eax,0x1D
  je SC29
  jmp SCNONE
  SC10:
  push ebx
  push 0x00000262
  jmp END
  SC11:
  push ebx
  push 0x00000263
  jmp END
  SC12:
  push ebx
  push 0x00000264
  jmp END
  SC13:
  push ebx
  push 0x00000265
  jmp END
  SC20:
  push 0x0000026C
  jmp END
  SC21:
  push 0x0000026D
  jmp END
  SC22:
  push 0x0000026E
  jmp END
  SC23:
  push 0x0000026F
  jmp END
  SC24:
  push 0x00000270
  jmp END
  SC25:
  push 0x00000271
  jmp END
  SC26:
  push 0x00000272
  jmp END
  SC27:
  push 0x00000273
  jmp END
  SC28:
  push 0x00000274
  jmp END
  SC29:
  push 0x00000275
  jmp END
  SCNONE:
  push 0x00000258
  jmp END
  END:
  jmp 0x5B9D84
  LABEL1:
  movzx eax,byte ptr [eax+0x5BBABC]
end
005B9D70 = satoriSPELLCARDTABLE_SPREAD

;# spellcard table air
func satoriSPELLCARDTABLE_SPREAD_AIR
  sub eax,0x000000C8
  cmp eax,0x01
  je short SC01
  cmp eax,0x06
  je short SC06
  cmp eax,0x07
  je short SC07
  cmp eax,0x14
  je short SC20
  cmp eax,0x15
  je short SC21
  ;cmp eax,0x16
  ;je short SC22
  cmp eax,0x1A
  je short SC26
  cmp eax,0x1B
  je short SC27
  mov eax,0x00000001
  mov edi,0x00000001
  jmp 0x5BAB8E
  
  SC01:
  movsx eax,bp
  push eax
  push 0x0000028B
  jmp END
  
  SC06:
  movsx eax,bp
  push eax
  push 0x00000290
  jmp END
  
  SC07:
  movsx eax,bp
  push eax
  push 0x00000291
  jmp END
  
  SC20:
  movsx eax,bp
  push eax
  push 0x0000029E
  jmp END
  
  SC21:
  movsx eax,bp
  push eax
  push 0x0000029F
  jmp END
  
  SC22:
  movsx eax,bp
  push eax
  push 0x000002A0
  jmp END
  
  SC26:
  movsx eax,bp
  push eax
  push 0x000002A4
  jmp END
  
  SC27:
  movsx eax,bp
  push eax
  push 0x000002A5
  jmp END
  
  END:
  jmp 0x5BAB46
end
005BAB28 = satoriSPELLCARDTABLE_SPREAD_AIR




;# HAAAAAAAAAAAAAAAAAAAAAAAAA


func satoriS_SOUVENIR0
  cmp word ptr [esi+0x140],0x08
  jne LABEL4
  mov word ptr [esi+0x5E4],0x01F4
  
  LABEL4:
  cmp word ptr [esi+0x140],0x07
  jne LABEL3
  mov word ptr [esi+0x5E4],0x01F4
  
  LABEL3:
  cmp word ptr [esi+0x140],0x06
  jne LABEL2
  mov word ptr [esi+0x5E4],0x01F4
  
  LABEL2:
  cmp word ptr [esi+0x140],0x05
  jne LABEL1
  mov word ptr [esi+0x5E4],0x01F4
  
  LABEL1:
  cmp word ptr [esi+0x140],0x04
  
end
005B2B56 = satoriS_SOUVENIR0

func satoriS_SOUVENIR1
  jmp 0x5B2E06
end
005B2C14 = satoriS_SOUVENIR1

func satoriS_SOUVENIR2
  fldz
  fst dword ptr [esi+0xF4]
  fstp dword ptr [esi+0xF8]
  mov ecx,[esi+0x398]
  fld dword ptr [ecx+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [ecx+0xF0]
  fadd dword ptr [0x857F70]
  fstp dword ptr [esi+0xF0]
  mov ecx,[esi+0x35C]
end
005C170D = satoriS_SOUVENIR2

func satoriS_SOUVENIRDUR
  cmp dword ptr [esi+0x144],0x78
end
005C15F0 = satoriS_SOUVENIRDUR

func satoriS_FLD1
  fld1
end
005B2E14 = satoriS_FLD1

func satoriS_SOUVENIR_NOSCATTER
  jmp 0x5C16BA
end
005C1604 = satoriS_SOUVENIR_NOSCATTER

func satoriS_SOUVENIR_NOSHADE
  jmp 0x5C869F
end
005C8630 = satoriS_SOUVENIR_NOSHADE
005C862A = satoriS_SOUVENIR_NOSHADE

func satoriS_HYPNOSIS1
  cmp word ptr [esi+0x13C],0x25C
  jne LABEL1
  cmp word ptr [esi+0x13E],0x02
  jne LABEL1
  cmp word ptr [esi+0x140],0x00
  jne LABEL1
  cmp word ptr [esi+0x142],0x01
  jne LABEL1
  cmp dword ptr [esi+0x144],0x01
  jne LABEL1
  
  mov ecx,esi
  call 0x468D10
  mov ecx,esi
  call 0x468D10
  mov ecx,esi
  call 0x468D10
  mov ecx,esi
  call 0x468D10
  mov ecx,esi
  call 0x468D10
  mov ecx,esi
  push 0x01
  add ecx,0x0000057C
  call 0x435D80
  jmp 0x5A8C97
  
  LABEL1:
  cmp word ptr [esi+0x13E],0x00
  jne 0x5A8C97

end
005B3925 = satoriS_HYPNOSIS1

func satoriS_HYPNOSIS2
  mov eax,esi
end
func satoriS_HYPNOSIS4
  mov ecx,esi
end
005B38FB = satoriS_HYPNOSIS2
005C2A4C = satoriS_HYPNOSIS4

func satoriS_HYPNOSIS3
  jmp 0x5C2A4C
end
005C28E2 = satoriS_HYPNOSIS3

func satoriS_HYPNOSISEND
  fmul dword ptr [esi+0xF4]
  fadd dword ptr [esi+0xEC]
  fstp dword ptr [esi+0xEC]
  fld  dword ptr [esi+0xF8]
  fadd dword ptr [esi+0xF0]
  fstp dword ptr [esi+0xF0]
  
  fld dword ptr [0x857F70]
  fstp dword ptr [esi+0xF0]
  
  mov ecx,esi
  call 0x438C60
  test al,al
  je KEEP
  jmp 0x5BBFC7
  KEEP:
  cmp dword ptr [esi+0x144],0x78
  jge 0x5BBFC7
  jmp 0x5C69E8
  
  jmp 0x5BBFC7
end
005C2B69 = satoriS_HYPNOSISEND


func satoriS_SUBGARDEN_FLASH
  cmp word ptr [esi+0x142],0x00
  jne LABEL1
  cmp word ptr [esi+0x140],0x02
  jne LABEL1
  cmp word ptr [esi+0x13E],0x00
  jne LABEL1
  push 0x17
  mov ecx,esi
  mov word ptr [esi+0x4A6],0x0028
  call 0x439490
  fld dword ptr [esi+0xF0]
  fadd qword ptr [0x857968]
  movzx ecx,byte ptr [esi+0x104]
  push 0x01
  push ecx
  fstp dword ptr [esp+0x18]
  sub esp,0x08
  fld dword ptr [esp+0x20]
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0xEC]
  fstp dword ptr [esp]
  push 0x73
  call 0x438CE0
  push 0x3C
  push 0x00
  push 0x00
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  
  ;# create flash object
  ;# activate flash
  ;# remove top card
  ;# weather change
  LABEL1:
  
  jmp 0x5AE75F
end
005B3FD0 = satoriS_SUBGARDEN_FLASH

func satoriS_SUBGARDEN0
  cmp word ptr [esi+0x13C],0x0264
  je LABEL2
  cmp word ptr [esi+0x13C],0x035E
  je LABEL2
  
  push 0x00000330
  
  jmp END
  LABEL2:
  push 0x0000035E
  END:
end
;005B412B = satoriS_SUBGARDEN0
;005B4179 = satoriS_SUBGARDEN0
;005B4307 = satoriS_SUBGARDEN0
;005B44CF = satoriS_SUBGARDEN0
;005B452A = satoriS_SUBGARDEN0
;005B46B7 = satoriS_SUBGARDEN0
;005C3E3B = satoriS_SUBGARDEN0
;005C974C = satoriS_SUBGARDEN0
;005C97B4 = satoriS_SUBGARDEN0
;005C97FD = satoriS_SUBGARDEN0

005AE850 = satoriS_SUBGARDEN0

005C790C = satoriS_SUBGARDEN0
005C7A53 = satoriS_SUBGARDEN0
005C7A9C = satoriS_SUBGARDEN0
005C7B39 = satoriS_SUBGARDEN0
005BDFA0 = satoriS_SUBGARDEN0
005BE213 = satoriS_SUBGARDEN0
005BE2D8 = satoriS_SUBGARDEN0
005BE426 = satoriS_SUBGARDEN0
005BE552 = satoriS_SUBGARDEN0
005BE5EF = satoriS_SUBGARDEN0


func satoriS_SUBGARDEN1
  cmp cx,0x0264
end
;005C40C6 = satoriS_SUBGARDEN1

func satoriS_FINGER1
  cmp word ptr [esi+0x13C],0x035F
  je LABEL1
  jmp LABEL2
  LABEL1:
  push 0x0000035F
  jmp END
  LABEL2:
  push 0x00000358
  END:
end
func satoriS_FINGER0
  cmp word ptr [esi+0x13C],0x0265
  je LABEL1
  jmp LABEL2
  LABEL1:
  push 0x0000035F
  jmp END
  LABEL2:
  push 0x00000358
  END:
end
005C375D = satoriS_FINGER1
005C39D7 = satoriS_FINGER1
005C3A8D = satoriS_FINGER1
005C3BFD = satoriS_FINGER1
005B3CFC = satoriS_FINGER0

func satoriS_MINES_DUR
  cmp dword ptr [esi+0x144],0x0168
end
005C377F = satoriS_MINES_DUR

func satoriS_MINES_BOOM
  cmp dword ptr [esi+0x144],0x00
  jne LABEL1
  push 0x4A
  mov ecx,[esi+0x398]
  call 0x464980
  
  fld dword ptr [0x85C610]
  push 0x00
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  LABEL1:
  fld dword ptr [esi+0x378]
end
005C37DE = satoriS_MINES_BOOM

005C389B = satoriFLDZ
005C38B3 = satoriFLDZ

func satoriS_MINES_ANGLE
  fmul dword ptr [0x858830]
  fsub qword ptr [0x867830]
end
005B3C5C = satoriS_MINES_ANGLE
005B3EE5 = satoriS_MINES_ANGLE

func satoriS_MINES_FLOOR
  fldz
  fld dword ptr [esi+0xF0]
  fcompp
  fnstsw ax
  test ah,0x41
  jnp 0x5C3B0A
  fld dword ptr [esi+0xF0]
end
005C3AD3 = satoriS_MINES_FLOOR

func satoriS_MINES_SPEED
  fld dword ptr [0x858830]
end
005B3C75 = satoriS_MINES_SPEED
005B3EFE = satoriS_MINES_SPEED

func satoriS_MINES_FREEZE
  fstp dword ptr [esi+0x12C]
  mov ecx,esi
  call 0x438C60
  test al,al
  je 0x5C69E8
end
005C37C5 = satoriS_MINES_FREEZE

;# LRE
func satoriS_LRE
  mov eax,0x26
  mov ebx,0x000000FF
  mov ecx,0x00
  mov edi,0xFFFFFFFF
  mov ebp,0x1E

  movzx eax,word ptr [esi+0x13E]
  ;fstp st0
  cmp ax,0x0000
  jg LABEL22EA16
  jne LABEL22EA25
  cmp word ptr [esi+0x140],0x07 
  jl LABEL22EA25
  LABEL22EA16:
  push 0x02 
  ;fstp st0
  push 0x00 
  mov ecx,esi
  call 0x46B370
  fldz 
  LABEL22EA25:
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL22EAF1
  mov ecx,[esi+0x144]
  cmp ecx,0x78 
  jnl LABEL2211DF
  mov eax,ecx
  cdq 
  mov edi,0x00000005 
  idiv edi
  test edx,edx
  jne LABEL22EAF1
  test ecx,ecx
  jne LABEL22EA65
  
  ;#SOUND LRE 1
  push 0x38
  ;push 0x32 
  ;fstp st0
  mov ecx,esi
  call 0x464980
  ;#
  fldz
  LABEL22EA65:
  mov eax,0x0000000F 
  cmp [esi+0x7D0],ax
  jg LABEL22EAF1
  fst dword ptr [esp+0x340]
  fst dword ptr [esp+0x344]
  fstp dword ptr [esp+0x348]
  cmp [esi+0x7D0],ax
  jne LABEL22EAA3
  ;#SOUND LRE 2
  push 0x39
  ;push 0x33 
  mov ecx,esi
  call 0x464980
  fld1 
  fstp dword ptr [esp+0x348]
  LABEL22EAA3:
  fld dword ptr [esi+0x0F0]
  movzx edx,byte ptr [esi+0x104]
  fadd qword ptr [0x85C208] 
  push 0x03 
  lea ecx,[esp+0x344]
  push ecx
  push 0x01 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000366
  call 0x46EB30
  add word ptr [esi+0x7D0],0x01 
  jmp LABEL22EAF3
  LABEL22EAF1:
  fstp st0
  LABEL22EAF3:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL22EB09
  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x00 
  mov ecx,esi
  call edx
  LABEL22EB09:
  cmp word ptr [esi+0x13E],0x00 
  jne LABEL23120A
  cmp word ptr [esi+0x140],0x07 
  jne LABEL23120A
  cmp word ptr [esi+0x142],0x00 
  jne LABEL23120A
  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x857B20] 
  movzx eax,byte ptr [esi+0x104]
  push 0x01 
  push eax
  fstp dword ptr [esp+0x18]
  sub esp,0x08 
  fld dword ptr [esp+0x20]
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL2211DF:
  mov edx,[esi]
  fstp st0
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
  
  LABEL23120A:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp, ebp
  pop ebp
  ret
end

func satoriS_LRE_AIR
  mov eax,0x2F
  mov ebx,0x000000FF
  mov ecx,0x00
  mov edi,0xFFFFFFFF
  mov ebp,0x1E
  
  mov ecx,0x00
  movzx eax,word ptr [esi+0x13E]
  ;fstp st0
  cmp ax,cx
  jg LABEL22FEE4
  jne LABEL22FEF3
  cmp word ptr [esi+0x140],0x07 
  jl LABEL22FEF3
  LABEL22FEE4:
  push 0x02 
  ;fstp st0
  push 0x00 
  mov ecx,esi
  call 0x46B370
  fldz 
  LABEL22FEF3:
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL22FFDA
  mov ecx,[esi+0x144]
  cmp ecx,0x78 
  jl LABEL22FF2B
  ;fstp st0
  mov edx,[esi]
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  fld dword ptr [0x8677A8] 
  fstp dword ptr [esi+0x100]
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
  
  LABEL22FF2B:
  mov eax,ecx
  cdq 
  mov edi,0x00000005 
  idiv edi
  test edx,edx
  jne LABEL22FFDA
  test ecx,ecx
  jne LABEL22FF4E
  ;#SOUND LRE 1
  push 0x38
  ;push 0x32 
  fstp st0
  mov ecx,esi
  call 0x464980
  fldz 
  LABEL22FF4E:
  mov eax,0x0000000F 
  cmp [esi+0x7D0],ax
  jg LABEL22FFDA
  fst dword ptr [esp+0x00000358]
  fst dword ptr [esp+0x0000035C]
  fstp dword ptr [esp+0x00000360]
  cmp [esi+0x7D0],ax
  jne LABEL22FF8C
  ;#SOUND LRE 2
  push 0x39
  ;push 0x33 
  mov ecx,esi
  call 0x464980
  fld1 
  fstp dword ptr [esp+0x00000360]
  
  LABEL22FF8C:
  fld dword ptr [esi+0x0F0]
  movzx edx,byte ptr [esi+0x104]
  fadd qword ptr [0x85C208] 
  push 0x03 
  lea ecx,[esp+0x0000035C]
  push ecx
  push 0x01 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000366 
  call 0x46EB30
  add word ptr [esi+0x7D0],0x01 
  jmp LABEL22FFDC
  LABEL22FFDA:
  fstp st0
  LABEL22FFDC:
  cmp word ptr [esi+0x13E],0x02 
  jl LABEL23002A
  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0x0F8]
  call 0x487EA0
  test al,al
  je LABEL23002A
  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x0A 
  mov ecx,esi
  call edx
  mov ecx,esi
  call 0x4397F0
  fstp dword ptr [esi+0x0F0]
  mov ecx,esi
  call 0x4636B0
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL23002A:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL230040
  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x09 
  mov ecx,esi
  call edx
  LABEL230040:
  cmp word ptr [esi+0x13E],0x00 
  jne LABEL23120A
  cmp word ptr [esi+0x140],0x07 
  jne LABEL23120A
  cmp word ptr [esi+0x142],0x00 
  jne LABEL23120A
  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x857B20] 
  movzx eax,byte ptr [esi+0x104]
  push 0x01 
  push eax
  fstp dword ptr [esp+0x18]
  sub esp,0x08 
  fld dword ptr [esp+0x20]
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABEL23120A:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

func satoriS_LRE0
  xor ebx, ebx
  mov [esi+0x7D0], bx
  mov [esi+0x7D2], bx
  mov dword ptr [esi+0x190],0x1
  call 0x4636B0
  pop edi
  pop esi
  pop ebx
  add esp,0x10
  ret
end

func satoriS_LRE_BULLET
  ;cmp word ptr [esi+0x13E],0x00
  ;cmp dword ptr [esi+0x144],0x00
  ;jne short FRAME0
  ;mov byte ptr [esi+0x194],0x01
  ;FRAME0:
  
  mov edi,0x00000001
  cmp [esi+0x13E],di
  jg LABEL23D4C4
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x8579D8]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  cmp word ptr [esi+0x140],0x02
  jl LABEL23D454
  mov al,[esi+0x113]
  cmp al,0x1E
  jb LABEL2365F7
  sub al,0x1E
  mov [esi+0x113],al
  mov al,0xE2
  add [esi+0x111],al
  add [esi+0x110],al
  LABEL23D454:
  mov eax,[esi+0x398]
  cmp word ptr [eax+0x13C],0x026C
  jne LABEL23D48C
  cmp [esi+0x13E],di
  jg LABEL23D48C
  fld dword ptr [eax+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [eax+0xF0]
  fadd qword ptr [0x85C208]
  fstp dword ptr [esi+0xF0]
  LABEL23D48C:
  push 0x00
  call 0x48CDE0
  cmp dword ptr [esi+0x190],0x08
  jne LABEL23D4C4
  movzx eax,word ptr [esi+0x36C]
  cmp ax,0x0002
  jnl LABEL23D4C4
  add eax,0x01
  mov [esi+0x36C],ax
  add byte ptr [esi+0x194],0x01
  mov dword ptr [esi+0x190],0x00000000
  LABEL23D4C4:
  mov ecx,esi
  call 0x438C60
  or ebx,0xFFFFFFFF
  test al,al
  je LABEL23D4D8
  add [esi+0x34C],ebx
  LABEL23D4D8:
  cmp dword ptr [esi+0x144],0x00
  jne LABEL240F87
  cmp word ptr [esi+0x142],0x00
  jne LABEL240F87
  cmp word ptr [esi+0x140],0x00
  jne LABEL240F87
  cmp [esi+0x13E],di
  jmp LABEL2370EE

  LABEL2370EE:
  jne LABEL240F87
  LABEL2365F7:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL240F87:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
end

func satoriS_LRE_BULLET_0F
  fstp st1
  fstp st0
  mov byte ptr [esi+0x194],0x01
  mov eax,[esi+0x0000035C]
  fld dword ptr [eax+0x08]
  mov edi,[esi]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  pop edi
  pop esi
  pop ebx
  add esp,0x14
  ret 
end

005C1735 = satoriS_LRE
005C1741 = satoriS_LRE_AIR
005C173B = satoriS_LRE_BULLET
005C17BE = satoriS_LRE_BULLET_0F

;# 604 -> 605
func satoriS_GUNGNIR
  mov ebx,0x01
  mov ebp,0x00
  mov eax,0x18
  mov edi,0x258
  cmp [esi+0x144],ebp
  jne LABEL19479E
  cmp [esi+0x142],bp
  jne LABEL19479E
  cmp [esi+0x140],bp
  jne LABEL19479E
  cmp [esi+0x13E],bp
  jne LABEL19479E
  push 0x17 
  mov ecx,esi
  mov word ptr [esi+0x4A6],0x0028 
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85CBC8] 
  push ebx
  push eax
  fstp dword ptr [esp+0x18]
  movsx eax,al
  fld dword ptr [esp+0x18]
  lea edx,[eax*0x8]
  sub esp,0x08 
  sub edx,eax
  add edx,edx
  fstp dword ptr [esp+0x04]
  mov [esp+0x20],edx
  fld dword ptr [esi+0x0EC]
  mov ecx,esi
  fisub dword ptr [esp+0x20]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push ebp
  push ebp
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  ;#SOUND GUNGNIR 1
  push 0x3A
  ;push 0x34 
  mov ecx,esi
  call 0x464980
  fldz 
  fst dword ptr [esp+0x000002C4]
  push 0x03 
  fst dword ptr [esp+0x000002CC]
  lea eax,[esp+0x000002C8]
  fstp dword ptr [esp+0x000002D0]
  push eax
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebx
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000357 
  call 0x46EB30
  LABEL19479E:
  mov ecx,esi
  call 0x487CA0
  push 0x02 
  push 0x06 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1947C5
  mov edx,[esi]
  mov eax,[edx+0x08]
  push ebp
  mov ecx,esi
  call eax
  LABEL1947C5:
  cmp [esi+0x142],bp
  jne LABEL199FB0
  cmp word ptr [esi+0x140],0x0C 
  jne LABEL199FB0
  fldz 
  push 0x03 
  fstp dword ptr [esp+0x00000108]
  lea ecx,[esp+0x00000108]
  fld dword ptr [0x871544] 
  push ecx
  fstp dword ptr [esp+0x00000110]
  push ebx
  fld dword ptr [0x8589F0] 
  mov ecx,esi
  fstp dword ptr [esp+0x00000118]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x857F98] 
  movsx edx,al
  imul edx,edx,0x64
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push eax
  sub esp,0x08 
  mov [esp+0x28],edx
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x00000357
  call 0x46EB30
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x0000010C]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  movsx edx,al
  fadd qword ptr [0x857F98] 
  push 0x03 
  imul edx,edx,0x64
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  lea ecx,[esp+0x00000108]
  push ecx
  push ebx
  push eax
  sub esp,0x08 
  mov [esp+0x28],edx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x00000357
  call 0x46EB30
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x0000010C]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push 0x03 
  fadd qword ptr [0x857F98] 
  lea ecx,[esp+0x00000108]
  push ecx
  push ebx
  push eax
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  sub esp,0x08 
  movsx edx,al
  fstp dword ptr [esp+0x04]
  imul edx,edx,0x64
  mov [esp+0x28],edx
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x00000357
  mov ecx,esi
  call 0x46EB30
  ;#SOUND GUNGNIR 2
  push 0x3B
  ;push 0x35 
  mov ecx,esi
  call 0x464980
  LABEL199FB0:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

;# FRAME 0
func satoriS_GUNGNIR_0F
  mov dword ptr [esi+0x190],0x00000001 
  mov ecx,esi
  pop esi
  pop ebx
  jmp 0x4636B0
end

;# 854 -> 855
func satoriS_GUNGNIR_BULLET
  
  movsx eax,word ptr [esi+0x13E]
  xor ebp,ebp
  cmp eax,0x07 
  ja LABEL1A1686
  cmp eax,0x00
  je TABLE01
  cmp eax,0x01
  je TABLE01
  cmp eax,0x02
  je TABLE2
  cmp eax,0x03
  je TABLE3
  cmp eax,0x04
  je TABLE4
  cmp eax,0x05
  je TABLE5
  cmp eax,0x06
  je TABLE6
  cmp eax,0x07
  je TABLE7
  jmp LABEL1A1686

  TABLE01:
  mov ecx,[esi+0x398]
  cmp word ptr [ecx+0x13C],0x025D 
  jne LABEL19E2D8
  push ebp
  push ebp
  mov ecx,esi
  call 0x48CF60
  jmp LABEL1A1686
  
  TABLE2:
  ;cmp dword ptr [esi+0x144],0x00
  ;jne short LABEL1
  ;mov byte ptr [esi+0x194],0x05
  ;LABEL1:
  push ebp
  call 0x48CDE0
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  cmp [esi+0x190],ebp
  je LABEL1A1470
  cmp byte ptr [esi+0x194],0x00 
  jle LABEL1A1470
  add word ptr [esi+0x36C],0x01 
  movzx eax,word ptr [esi+0x36C]
  cmp ax,0x0001 
  jl LABEL1A1470
  mov [esi+0x36C],bp
  mov [esi+0x190],ebp
  LABEL1A1470:
  mov edx,[esi+0x35C]
  fld dword ptr [edx]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fst dword ptr [esi+0x12C]
  fld dword ptr [esi+0x0EC]
  fcomp qword ptr [0x85C038] 
  fnstsw ax
  test ah,0x41 
  je LABEL19E2D6
  fld dword ptr [esi+0x0EC]
  fcomp qword ptr [0x85C058] 
  fnstsw ax
  test ah,0x05 
  jnp LABEL19E2D6
  
  
  
  
  ;#creation method
  mov eax,[esi]
  mov eax,[eax+0x44]
  
  ;#angle
  fstp dword ptr [esp+0x34]
  
  ;#spd
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x38]
  
  push 0x03 
  
  ;#subseq
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x40]
  
  ;#facing
  movzx edx,byte ptr [esi+0x104]
  
  ;#addr
  lea ecx,[esp+0x38]
  ;#addr
  push ecx
  ;#?
  push 0x01 
  ;#facing
  push edx
  sub esp,0x08 
  mov ecx,esi
  
  ;#Y
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp+0x04]
  
  ;#X
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  
  push 0x00000357
  call eax
  
  
  
  mov ecx,[esi+0x144]
  and ecx,0x80000001 
  jns LABEL1A1514
  dec ecx
  or ecx,0xFFFFFFFE 
  inc ecx
  LABEL1A1514:
  jne LABEL1A1686
  fld dword ptr [esi+0x0F0]
  mov ecx,esi
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fcomp qword ptr [esp+0x20]
  fnstsw ax
  test ah,0x41 
  jp LABEL1A1686
  fld dword ptr [esi+0x0F0]
  mov ecx,esi
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fsubr qword ptr [esp+0x20]
  fcomp qword ptr [0x8591F8] 
  fnstsw ax
  test ah,0x41 
  jp LABEL1A1686
  fldz 
  movzx eax,byte ptr [esi+0x104]
  mov edi,[esi]
  fst dword ptr [esp+0x20]
  push 0x03 
  fstp dword ptr [esp+0x28]
  fld dword ptr [0x85882C] 
  lea edx,[esp+0x24]
  push edx
  fstp dword ptr [esp+0x30]
  push 0x01 
  push eax
  mov ecx,esi
  add edi,0x44 
  call 0x4397F0
  mov edx,[edi]
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000357
  call edx
  jmp LABEL1A1686
  
  TABLE3:
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL19E2D8
  fld dword ptr [esi+0x120]
  sub al,0x05 
  fld qword ptr [0x8581D8] 
  mov [esi+0x113],al
  mov eax,[esi+0x35C]
  fmul st1,st0
  fxch st1
  mov bl,0xFB
  add [esi+0x111],bl
  add [esi+0x110],bl
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x11C]
  sub esp,0x08 
  fadd qword ptr [0x858C08] 
  lea ecx,[esi+0x04]
  fstp dword ptr [esi+0x11C]
  fld dword ptr [eax]
  fstp dword ptr [esi+0x12C]
  fmul dword ptr [eax+0x04]
  fstp dword ptr [eax+0x04]
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  jmp LABEL1A1686
  
  TABLE4:
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL19E2D8
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  LABEL1A1658:
  fstp dword ptr [esi+0x120]
  mov bl,0xFB
  fld dword ptr [esi+0x378]
  add [esi+0x111],bl
  fmul qword ptr [0x85B818] 
  sub al,0x05 
  add [esi+0x110],bl
  mov [esi+0x113],al
  LABEL1A1680:
  fstp dword ptr [esi+0x378]
  
  TABLEDEF:
  LABEL1A1686:
  movsx eax,byte ptr [esi+0x104]
  mov [esp+0x20],eax
  mov ecx,esi
  fild dword ptr [esp+0x20]
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  call 0x438C60
  test al,al
  je LABEL1A16CB
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL1A16CB:
  cmp [esi+0x144],ebp
  jne LABEL1A382A
  cmp [esi+0x142],bp
  jne LABEL1A382A
  cmp [esi+0x140],bp
  jne LABEL1A382A
  cmp word ptr [esi+0x13E],0x02 
  jne LABEL1A382A
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  
  TABLE5:
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL19E2D8
  fld dword ptr [esi+0x378]
  mov bl,0xFB
  fadd dword ptr [esi+0x11C]
  add [esi+0x111],bl
  sub al,0x05 
  add [esi+0x110],bl
  fstp dword ptr [esp+0x14]
  mov [esi+0x113],al
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x12C]
  fsub dword ptr [esi+0x37C]
  fstp dword ptr [esi+0x12C]
  fld dword ptr [esi+0x37C]
  fld qword ptr [0x85B818] 
  fmul st1,st0
  fxch st1
  fstp dword ptr [esi+0x37C]
  fmul dword ptr [esi+0x378]
  jmp LABEL1A1680
  
  TABLE6:
  mov eax,[esi+0x39C]
  cmp eax,ebp
  je LABEL19E2D8
  fld dword ptr [eax+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x0F0]
  fstp dword ptr [esi+0x0F0]
  jmp LABEL1A1686
  
  TABLE7:
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL19E2D8
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x11C]
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x8581D8] 
  jmp LABEL1A1658

  LABEL19E2D6:
  fstp st0
  LABEL19E2D8:
  add dword ptr [esi+0x0000034C],0xFFFFFFFF
  LABEL1A382A:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
end

;# 854 0F
func satoriS_GUNGNIR_BULLET_0F

  ;# eax is jump index
  ;ecx
  ;eax
  
  mov ecx,[esi+0x35C]
  ;#ADD THIS
  fstp st0
  fcom dword ptr [ecx+0x08]
  fnstsw ax
  test ah,0x44 
  jnp LABEL1A477A
  mov ebx,[esi]
  fstp st0
  fld dword ptr [ecx+0x08]
  call 0x820230
  mov ecx,esi
  push eax
  mov eax,[ebx+0x0C]
  call eax
  fldz 
  LABEL1A477A:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x00
  mov ebx,0x00000001 
  je LABEL1A4790
  cmp ax,bx
  jne LABEL1A4797
  LABEL1A4790:
  mov [esi+0x360],bx
  LABEL1A4797:
  cmp ax,0x0002 
  jne LABEL1A47FC
  mov eax,[esi+0x35C]
  fld dword ptr [eax]
  movzx ecx,byte ptr [esi+0x104]
  mov edx,[esi]
  fstp dword ptr [esi+0x12C]
  mov edx,[edx+0x48]
  push 0x03 
  mov byte ptr [esi+0x194],0x05 
  fld dword ptr [eax]
  lea eax,[esp+0x18]
  fstp dword ptr [esp+0x18]
  push eax
  push ebx
  fstp dword ptr [esp+0x24]
  push ecx
  fld dword ptr [0x85BCA4] 
  sub esp,0x08 
  fstp dword ptr [esp+0x34]
  mov ecx,esi
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000357
  call edx
  jmp LABEL1A47FE
  LABEL1A47FC:
  fstp st0
  LABEL1A47FE:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0003 
  jne LABEL1A4819
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx]
  fstp dword ptr [esi+0x12C]
  LABEL1A4819:
  cmp ax,0x0004 
  jne LABEL1A482B
  fld dword ptr [0x85AD04] 
  fstp dword ptr [esi+0x378]
  LABEL1A482B:
  cmp ax,0x0005 
  fld dword ptr [0x85C110] 
  jne LABEL1A4855
  fld dword ptr [0x85C500] 
  fstp dword ptr [esi+0x128]
  fst dword ptr [esi+0x378]
  fld dword ptr [0x858830] 
  fstp dword ptr [esi+0x37C]
  LABEL1A4855:
  cmp ax,0x0006 
  jne LABEL1A4869
  mov edx,[esi+0x35C]
  fld dword ptr [edx]
  fstp dword ptr [esi+0x12C]
  LABEL1A4869:
  cmp ax,0x0007 
  jne LABEL1A518F
  fstp dword ptr [esi+0x378]
  pop edi
  pop esi
  pop ebx
  add esp,0x14 
  ret 

  LABEL1A518F:
  fstp st0
  pop edi
  pop esi
  pop ebx
  add esp,0x14
  ret 
end

005B39D1 = satoriS_GUNGNIR
005C2B6E = satoriS_GUNGNIR_BULLET
005C9011 = satoriS_GUNGNIR_BULLET_0F

;#610 -> 607
func satoriS_OARFISHSHOT
  mov eax,0x59
  mov ebx,0x00
  mov edx,0x23
  mov edi,0x01
  mov ebp,0x03
  
  push 0x02 
  push 0x02 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x487CA0
  cmp [esi+0x13E],di
  jne LABEL297A40

  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000014 
  idiv ecx
  test edx,edx
  jne LABEL2978F1

  ;#SOUND OARFISH 1
  push 0x3C
  ;push 0x0E 
  mov ecx,esi
  call 0x464980
  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL2977F0

  fadd dword ptr [0x871554] 
  LABEL2977F0:
  fstp dword ptr [esp+0x0000021C]
  push ebp
  fld dword ptr [0x858830] 
  lea edx,[esp+0x00000220]
  fstp dword ptr [esp+0x00000224]
  push edx
  fldz 
  push edi
  fstp dword ptr [esp+0x00000230]
  mov ecx,esi
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85C148] 
  push eax
  sub esp,0x08 
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359 
  call 0x46EB30
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x00000224]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x85C148] 
  neg dl
  lea ecx,[esp+0x00000220]
  push ecx
  push edi
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  mov ecx,esi
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  fld dword ptr [0x85BCA4] 
  fstp dword ptr [esp+0x00000224]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x85C148] 
  neg cl
  lea eax,[esp+0x00000220]
  push eax
  push edi
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push ecx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  LABEL2978F1:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000014 
  idiv ecx
  cmp edx,0x0A 
  jne LABEL297A33

  ;#SOUND OARFISH 1
  push 0x3C
  ;push 0x0E 
  mov ecx,esi
  call 0x464980
  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL297930

  fadd dword ptr [0x871554] 
  LABEL297930:
  fstp dword ptr [esp+0x000001F8]
  push ebp
  fld dword ptr [0x858830] 
  lea edx,[esp+0x000001FC]
  fstp dword ptr [esp+0x00000200]
  push edx
  fldz 
  push edi
  fstp dword ptr [esp+0x0000020C]
  mov ecx,esi
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C148] 
  neg al
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push eax
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x00000200]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x85C148] 
  neg dl
  lea ecx,[esp+0x000001FC]
  push ecx
  push edi
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  mov ecx,esi
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  fld dword ptr [0x85BCA4] 
  fstp dword ptr [esp+0x00000200]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x85C148] 
  neg cl
  lea eax,[esp+0x000001FC]
  push eax
  push edi
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push ecx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  LABEL297A33:
  cmp dword ptr [esi+0x144],0x78 
  jnl LABEL28E6F9

  LABEL297A40:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL297A55

  mov edx,[esi]
  mov eax,[edx+0x08]
  push ebx
  mov ecx,esi
  call eax
  LABEL297A55:
  cmp [esi+0x13E],bx
  jne LABEL299E45

  cmp [esi+0x142],bx
  jne LABEL299E45

  cmp word ptr [esi+0x140],0x04 
  jne LABEL297AF4

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x871510] 
  push edi
  push eax
  fstp dword ptr [esp+0x18]
  movsx eax,al
  fld dword ptr [esp+0x18]
  lea ecx,[eax+eax*0x4]
  sub esp,0x08 
  add ecx,ecx
  add ecx,ecx
  fstp dword ptr [esp+0x04]
  mov [esp+0x20],ecx
  fld dword ptr [esi+0x0EC]
  mov ecx,esi
  fisub dword ptr [esp+0x20]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push ebx
  push ebx
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABEL297AF4:
  cmp [esi+0x142],bx
  jne LABEL299E45

  cmp word ptr [esi+0x140],0x06 
  jne LABEL299E45

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL297B2E

  fadd dword ptr [0x871554] 
  LABEL297B2E:
  fstp dword ptr [esp+0x000004DC]
  lea edx,[esp+0x000004DC]
  fldz 
  fstp dword ptr [esp+0x000004E0]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x000004E4]
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C148] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  movzx eax,byte ptr [esi+0x104]
  push ebp
  push edx
  push edi
  push eax
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL28E6F9:
  mov edx, [esi]
  mov eax, [edx+0x14]
  mov ecx, esi
  call eax
  LABEL299E45:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp, ebp
  pop ebp
  ret
end

;#660 -> 657
func satoriS_OARFISHSHOT_AIR
  mov eax,0x8B
  mov ebx,0x00
  mov edx,0x26
  mov edi,0x01
  mov ebp,0x03
  push 0x02 
  push 0x02 
  mov ecx,esi
  call 0x46B370
  cmp [esi+0x13E],di
  jne LABEL298163

  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000014 
  idiv ecx
  test edx,edx
  jne LABEL298014

  ;#SOUND OARFISH 1
  push 0x3C
  ;push 0x0E 
  mov ecx,esi
  call 0x464980
  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL297F13

  fadd dword ptr [0x871554] 
  LABEL297F13:
  fstp dword ptr [esp+0x00000210]
  push ebp
  fld dword ptr [0x858830] 
  lea edx,[esp+0x00000214]
  fstp dword ptr [esp+0x00000218]
  push edx
  fldz 
  push edi
  fstp dword ptr [esp+0x00000224]
  mov ecx,esi
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85C148] 
  push eax
  sub esp,0x08 
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x00000218]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x85C148] 
  neg dl
  lea ecx,[esp+0x00000214]
  push ecx
  push edi
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  mov ecx,esi
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  fld dword ptr [0x85BCA4] 
  fstp dword ptr [esp+0x00000218]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x85C148] 
  neg cl
  lea eax,[esp+0x00000214]
  push eax
  push edi
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push ecx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  LABEL298014:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000014 
  idiv ecx
  cmp edx,0x0A 
  jne LABEL298156

  ;#SOUND OARFISH 1
  push 0x3C
  ;push 0x0E 
  mov ecx,esi
  call 0x464980
  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL298053

  fadd dword ptr [0x871554] 
  LABEL298053:
  fstp dword ptr [esp+0x00000228]
  push ebp
  fld dword ptr [0x858830] 
  lea edx,[esp+0x0000022C]
  fstp dword ptr [esp+0x00000230]
  push edx
  fldz 
  push edi
  fstp dword ptr [esp+0x0000023C]
  mov ecx,esi
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C148] 
  neg al
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push eax
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x00000230]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x85C148] 
  neg dl
  lea ecx,[esp+0x0000022C]
  push ecx
  push edi
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  mov ecx,esi
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  fld dword ptr [0x85BCA4] 
  fstp dword ptr [esp+0x00000230]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x85C148] 
  neg cl
  lea eax,[esp+0x0000022C]
  push eax
  push edi
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push ecx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  LABEL298156:
  cmp dword ptr [esi+0x144],0x78 
  jnl LABEL28E6F9

  LABEL298163:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL29818D

  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x09 
  mov ecx,esi
  call eax
  fld dword ptr [0x8677A8] 
  fstp dword ptr [esi+0x100]
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
  LABEL29818D:
  cmp [esi+0x13E],bx
  jne LABEL299E45

  cmp [esi+0x142],bx
  jne LABEL299E45

  cmp [esi+0x140],bp
  jne LABEL29822B

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x871510] 
  push edi
  push eax
  fstp dword ptr [esp+0x18]
  movsx eax,al
  fld dword ptr [esp+0x18]
  lea ecx,[eax+eax*0x4]
  sub esp,0x08 
  add ecx,ecx
  add ecx,ecx
  fstp dword ptr [esp+0x04]
  mov [esp+0x20],ecx
  fld dword ptr [esi+0x0EC]
  mov ecx,esi
  fisub dword ptr [esp+0x20]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push ebx
  push ebx
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABEL29822B:
  cmp [esi+0x142],bx
  jne LABEL299E45

  cmp word ptr [esi+0x140],0x05 
  jne LABEL299E45

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL298265

  fadd dword ptr [0x871554] 
  LABEL298265:
  fstp dword ptr [esp+0x00000524]
  lea edx,[esp+0x00000524]
  fldz 
  fstp dword ptr [esp+0x00000528]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x0000052C]
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C148] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]

  movzx eax,byte ptr [esi+0x104]
  push ebp
  push edx
  push edi
  push eax
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359
  call 0x46EB30
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL28E6F9:
  mov edx, [esi]
  mov eax, [edx+0x14]
  mov ecx, esi
  call eax
  LABEL299E45:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp, ebp
  pop ebp
  ret
end

;#610, 660 0F
func satoriS_OARFISHSHOT_0F
  xor ebx,ebx
  mov [esi+0x7D0],bx
  mov [esi+0x7D2],bx
  mov dword ptr [esi+0x190],0x00000001 
  mov ecx,esi
  pop esi
  pop ebx
  ;add esp,0x10 
  jmp 0x4636B0
end

;#860 -> 857
func satoriS_OARFISHSHOT_BULLET
  ;# ? important
  mov ecx,esi
  
  cmp dword ptr [esi+0x190],0x05 
  je LABEL29EBDB
  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x06 
  mov ebp,0x00000002 
  ja LABEL2A5B2B
  cmp eax,0x00
  je TABLE0
  cmp eax,0x01
  je TABLE1
  cmp eax,0x02
  je TABLE2
  cmp eax,0x03
  je TABLE3
  cmp eax,0x04
  je TABLE4
  cmp eax,0x05
  je TABLE5
  cmp eax,0x06
  je TABLE6
  jmp TABLEDEF
  
  TABLE0:
  cmp word ptr [esi+0x36C],0x00 
  mov edi,0x00000001 
  jne LABEL2A57EE

  cmp [esi+0x144],ebp
  jl LABEL2A574C

  fld dword ptr [esi+0x0EC]
  push ecx
  fsub dword ptr [esi+0x378]
  fstp dword ptr [esp+0x18]
  fld dword ptr [esi+0x0F0]
  fsub dword ptr [esi+0x37C]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fld dword ptr [esp+0x18]
  fmul st0,st0
  fld st1
  fmulp st2
  faddp 
  fstp dword ptr [esp+0x48]
  fld dword ptr [esp+0x48]
  fstp dword ptr [esp]
  call 0x486FA0
  movsx eax,byte ptr [esi+0x104]
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x14]
  mov [esp+0x48],eax
  fld st0
  fild dword ptr [esp+0x48]
  fmulp st1
  fld qword ptr [0x858EC0] 
  fmul st1,st0
  fld dword ptr [esp+0x18]
  fld st0
  fld qword ptr [0x8581B8] 
  fmul st1,st0
  fxch st4
  faddp 
  fld dword ptr [esp+0x1C]
  fld st0
  fdivp st2
  fxch st1
  fstp dword ptr [esi+0x0F4]
  fxch st4
  movsx ecx,byte ptr [esi+0x104]
  fmulp st3
  mov [esp+0x1C],ecx
  fild dword ptr [esp+0x1C]
  fmulp st1
  fmulp st1
  fsubp st1
  ;#fdivrp st1,st0
  fdivrp st1
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  fst dword ptr [esi+0x0F8]
  fld dword ptr [esi+0x0F4]
  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x1C],edx
  fild dword ptr [esp+0x1C]
  fmulp st1
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  fstp dword ptr [esp]
  push ecx
  fstp dword ptr [esp]
  call 0x409760
  mov eax,[esi+0x35C]
  fchs 
  fstp dword ptr [eax]
  add esp,0x08 
  LABEL2A574C:
  push 0x00 
  mov ecx,esi
  call 0x48CDE0
  push 0x03 
  mov ecx,esi
  call 0x48CE30
  mov eax,[esi+0x144]
  cmp eax,0x08 
  jl LABEL2A57D3

  and eax,0x80000007 
  jns LABEL2A5775

  dec eax
  or eax,0xFFFFFFF8
  inc eax
  LABEL2A5775:
  jne LABEL2A57D3


  mov ecx,[esi+0x35C]
  fld dword ptr [ecx]
  push 0x03 
  fstp dword ptr [esp+0x000001F0]
  lea eax,[esp+0x000001F0]
  fldz 
  push eax
  fstp dword ptr [esp+0x000001F8]
  push edi
  fld dword ptr [0x8589F0] 
  fstp dword ptr [esp+0x00000200]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000359 
  call edx
  
  LABEL2A57D3:
  cmp dword ptr [esi+0x144],0x000001C2 
  jl LABEL2A57EE

  mov [esi+0x36C],di
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  
  LABEL2A57EE:
  cmp [esi+0x36C],di
  jne LABEL2A583B
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85BA10] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x0A
  jb LABEL29EBDB

  sub al,0x0A 
  mov [esi+0x113],al
  mov al,0xF6
  add [esi+0x111],al
  add [esi+0x112],al
  LABEL2A583B:
  fld dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  jmp LABEL2A5B2B

  TABLE1:
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x858C08] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  jmp LABEL2A5B2B

  TABLE2:
  cmp dword ptr [esi+0x144],0x00
  jne short LABEL1
  mov byte ptr [esi+0x194],0x01
  LABEL1:
  push 0x00 
  call 0x48CDE0
  push 0x03 
  mov ecx,esi
  call 0x48CE30
  cmp dword ptr [esi+0x144],0x00 
  jl LABEL2A5B2B

  mov al,[esi+0x111]
  cmp al,0x0A 
  jb LABEL2A58C4

  sub al,0x0A 
  mov [esi+0x111],al
  add byte ptr [esi+0x112],0xF6 
  jmp LABEL2A5B2B

  LABEL2A58C4:
  mov byte ptr [esi+0x111],0x00 
  mov byte ptr [esi+0x112],0x00 
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL29EBDB

  sub al,0x0A 
  mov [esi+0x113],al
  jmp LABEL2A5B2B

  TABLE3:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fmul qword ptr [0x85B818] 
  lea ecx,[esi+0x04]
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  cmp dword ptr [esi+0x144],0x0A 
  jl LABEL2A583B

  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85B978] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL29EBDB

  sub al,0x05 
  mov [esi+0x113],al
  mov al,0xFB 
  add [esi+0x112],al
  add [esi+0x111],al
  jmp LABEL2A583B

  TABLE4:
  cmp word ptr [esi+0x36C],0x00 
  mov edi,0x00000001 
  jne LABEL2A59B6

  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x867840] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld1 
  fcomp dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x41 
  jp LABEL2A59B6

  mov [esi+0x36C],di
  LABEL2A59B6:
  cmp [esi+0x36C],di
  jne LABEL2A5A44

  mov eax,[esi+0x144]
  and eax,0x80000001 
  jns LABEL2A59D5

  dec eax
  or eax,0xFFFFFFFE
  inc eax
  LABEL2A59D5:
  jne LABEL2A5A3D

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL2A59F3

  fadd dword ptr [0x871554] 
  LABEL2A59F3:
  push 0x0A 
  fstp dword ptr [esi+0x12C]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2A5A15

  fadd dword ptr [0x871554] 
  LABEL2A5A15:
  fmul qword ptr [0x867840] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x859910] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL2A5A3D:
  cmp [esi+0x36C],di
  LABEL2A5A44:
  jg LABEL2A5A91

  mov eax,[esi+0x398]
  movzx ecx,word ptr [eax+0x0000013C]
  cmp cx,0x025F
  je LABEL2A5A61

  cmp cx,0x0291
  jne LABEL2A5A8A

  LABEL2A5A61:
  cmp [eax+0x13E],di
  jg LABEL2A5A8A

  fld dword ptr [eax+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x0F0]
  fadd qword ptr [0x85C148] 
  fstp dword ptr [esi+0x0F0]
  jmp LABEL2A5A91

  LABEL2A5A8A:
  mov [esi+0x36C],bp
  LABEL2A5A91:
  cmp [esi+0x36C],bp
  jne LABEL2A5B2B

  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  jmp LABEL2A5AFE

  TABLE5:
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  jmp LABEL2A5AFE

  TABLE6:
  push 0x00 
  call 0x48CDE0
  push 0x00 
  mov ecx,esi
  call 0x48CE30
  cmp dword ptr [esi+0x144],0x04 
  jl LABEL2A5AEA
  mov byte ptr [esi+0x194],0x00 
  LABEL2A5AEA:
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  LABEL2A5AFE:
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  cmp byte ptr [esi+0x113],0x0F 
  jb LABEL29EBDB

  mov al,0xF1
  add [esi+0x112],al
  add [esi+0x111],al
  add [esi+0x113],al
  
  TABLEDEF:
  LABEL2A5B2B:
  mov ecx,esi
  call 0x438C60
  or ebx,0xFFFFFFFF
  test al,al
  je LABEL2A5B3F

  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL2A5B3F:
  cmp dword ptr [esi+0x144],0x00 
  jne LABEL2A869B

  cmp word ptr [esi+0x142],0x00 
  jne LABEL2A869B

  cmp word ptr [esi+0x140],0x00 
  jne LABEL2A869B

  cmp [esi+0x13E],bp
  jne LABEL2A869B

  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 

  LABEL29EBDB:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL2A869B:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
end

;# 860 0f
func satoriS_OARFISHSHOT_BULLET_0F
  
  ;#eax is jump index
  ;#ebp ebx etc are correct here
  
  mov eax,[esi+0x35C]
  ;# ADD THESE FSTPs
  fstp st1
  fstp st0
  fld dword ptr [eax]
  mov edi,[esi]
  fstp dword ptr [esi+0x12C]
  fld dword ptr [eax+0x08]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  cmp [esi+0x13E],bx
  jne LABEL2AA174

  fld dword ptr [esi+0x0EC]
  mov eax,[esi+0x35C]
  fstp dword ptr [esi+0x378]
  sub esp,0x08 
  fld dword ptr [esi+0x0F0]
  lea ecx,[esi+0x04]
  fstp dword ptr [esi+0x37C]
  fld dword ptr [0x85B98C] 
  fstp dword ptr [esi+0x380]
  fld dword ptr [eax]
  fstp dword ptr [esi+0x384]
  fld dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  
  call 0x438C00
  LABEL2AA174:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0002 
  jne LABEL2AA188

  mov byte ptr [esi+0x194],0x01 
  LABEL2AA188:
  cmp ax,0x0003 
  jne LABEL2AA1D2

  push 0x0A 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL2AA1AA

  fadd dword ptr [0x871554] 
  LABEL2AA1AA:
  fmul qword ptr [0x867840] 
  fstp dword ptr [esp+0x0C]
  fld dword ptr [esp+0x0C]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x0C]
  fld dword ptr [esp+0x0C]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL2AA1D2:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0004 
  jne LABEL2AA1ED

  fldz 
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL2AA1ED:
  cmp ax,0x0006 
  jne LABEL2AAA89

  
  mov byte ptr [esi+0x194],0x01 
  LABEL2AAA89:
  pop edi
  pop esi
  pop ebx
  add esp,0x14 
  ret 
end

;#640 for seq
;#2B8 for bullet
005B3FC9 = satoriS_OARFISHSHOT
005B4319 = satoriS_OARFISHSHOT_AIR
005B8997 = satoriS_OARFISHSHOT_0F
005C3CDF = satoriS_OARFISHSHOT_BULLET
005C94E9 = satoriS_OARFISHSHOT_BULLET_0F


;# 602 -> 621
func satoriS_APOLLO
  mov eax,0x23
  mov ebx,0x000000FF
  mov ecx,0x00
  mov edi,0xFFFFFFFF
  mov ebp,0x1E

  push 0x02 
  ;fstp st1
  push 0x00 
  ;fstp st0
  mov ecx,esi
  call 0x46B370
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL22E284

  cmp [esi+0x144],ebp
  jnl LABEL2305AD

  LABEL22E284:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL22E29A

  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00 
  mov ecx,esi
  call eax
  LABEL22E29A:
  cmp dword ptr [esi+0x144],0x00 
  jne LABEL22E5A5
  cmp word ptr [esi+0x142],0x00 
  jne LABEL22E5A5
  cmp word ptr [esi+0x140],0x00 
  jne LABEL22E5A5
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL22E5A5

  fldz 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  LABEL22E2DB:
  
  fmul dword ptr [0x857DD4]
  
  push 0x04 
  lea ecx,[esp+0x00000324]
  push ecx
  fstp dword ptr [esp+0x00000328]
  push 0x01 
  fld dword ptr [0x85B830] 
  fstp dword ptr [esp+0x00000330]
  fldz 
  fstp dword ptr [esp+0x00000334]
  
  fld dword ptr [0x8575A8]
  
  fstp dword ptr [esp+0x00000338]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esp+0x0000032C]
  push edx
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857B20] 
  
  fldz
  
  fadd qword ptr [0x85C208] 
  faddp 
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x00000338]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  movsx eax,byte ptr [esi+0x104]
  fmul qword ptr [0x857B20] 
  mov [esp+0x28],eax
  mov ecx,esi
  fild dword ptr [esp+0x28]
  fmulp st1
  
  fadd dword ptr [0x8575A4]
  
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x00000367
  call 0x46EB30
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x85BCA4] 
  fld dword ptr [esp+0x18]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jnp LABEL22E2DB

  fstp st0
  fldz 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  LABEL22E3C9:
  fmul qword ptr [0x858EF0] 
  push 0x04 
  lea ecx,[esp+0x00000304]
  push ecx
  fadd qword ptr [0x867830] 
  push 0x01 
  fstp dword ptr [esp+0x0000030C]
  fld dword ptr [0x85B830] 
  fstp dword ptr [esp+0x00000310]
  fldz 
  fstp dword ptr [esp+0x00000314]
  fld dword ptr [0x85AE94] 
  fstp dword ptr [esp+0x00000318]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esp+0x0000030C]
  push edx
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857B20] 
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C208] 
  faddp 
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x00000318]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  movsx eax,byte ptr [esi+0x104]
  fmul qword ptr [0x857B20] 
  mov [esp+0x28],eax
  mov ecx,esi
  fild dword ptr [esp+0x28]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  
  ;# oh no
  ;push 0x00000367
  push 0x00000350
  
  call 0x46EB30
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x85BCA4] 
  fld dword ptr [esp+0x18]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jnp LABEL22E3C9

  fstp st0
  fldz 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  LABEL22E4BD:
  fld qword ptr [0x858EF0] 
  push 0x04 
  fmul st1,st0
  lea ecx,[esp+0x000002E4]
  push ecx
  push 0x01 
  faddp 
  fstp dword ptr [esp+0x000002EC]
  fld dword ptr [0x85B830] 
  fstp dword ptr [esp+0x000002F0]
  fldz 
  fstp dword ptr [esp+0x000002F4]
  fld dword ptr [0x85BC10] 
  fstp dword ptr [esp+0x000002F8]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esp+0x000002EC]
  push edx
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857B20] 
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C208] 
  faddp 
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x000002F8]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  movsx eax,byte ptr [esi+0x104]
  fmul qword ptr [0x857B20] 
  mov [esp+0x28],eax
  mov ecx,esi
  fild dword ptr [esp+0x28]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  
  ;# oh no
  ;push 0x00000367
  push 0x00000350
  
  call 0x46EB30
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x85BCA4] 
  fld dword ptr [esp+0x18]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jnp LABEL22E4BD

  fstp st0
  LABEL22E5A5:
  cmp word ptr [esi+0x13E],0x00 
  jne LABEL23120A
  cmp word ptr [esi+0x140],0x07 
  jne LABEL23120A
  cmp word ptr [esi+0x142],0x00 
  jne LABEL23120A

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x857B20] 
  movzx ecx,byte ptr [esi+0x104]
  push 0x01 
  push ecx
  fstp dword ptr [esp+0x18]
  sub esp,0x08 
  fld dword ptr [esp+0x20]
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0

  LABEL23120A:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL2305AD:
  mov edx,[esi]
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret
end

;# 652 -> 671
func satoriS_APOLLO_AIR
  mov eax,0x2E
  mov ebx,0x000000FF
  mov ecx,0x00
  mov edi,0xFFFFFFFF
  mov ebp,0x1E
  
  push 0x02 
  ;fstp st1
  push 0x00 
  ;fstp st0
  mov ecx,esi
  call 0x46B370
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0001 
  jne LABEL22FAC9

  cmp [esi+0x144],ebp
  jnl LABEL22FF0E

  LABEL22FAC9:
  cmp ax,0x0002 
  jne LABEL22FB13

  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0x0F8]
  call 0x487EA0
  test al,al
  je LABEL22FB13

  mov ecx,esi
  call 0x4636B0
  mov ecx,esi
  call 0x4397F0
  fstp dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x0A 
  mov ecx,esi
  call eax
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
  LABEL22FB13:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL22FB29

  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x09 
  mov ecx,esi
  call eax
  LABEL22FB29:
  cmp dword ptr [esi+0x144],0x00 
  jne LABEL22FE34
  cmp word ptr [esi+0x142],0x00 
  jne LABEL22FE34
  cmp word ptr [esi+0x140],0x00 
  jne LABEL22FE34
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL22FE34

  fldz 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  
  LABEL22FB6A:
  fmul dword ptr [0x857DD4]
  
  push 0x04 
  lea ecx,[esp+0x000002F4]
  push ecx
  fstp dword ptr [esp+0x000002F8]
  push 0x01 
  fld dword ptr [0x85B830] 
  fstp dword ptr [esp+0x00000300]
  fldz 
  fstp dword ptr [esp+0x00000304]
  
  fld dword ptr [0x8575A8]
  
  fstp dword ptr [esp+0x00000308]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esp+0x000002FC]
  push edx
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857B20] 
  
  fldz
  
  fadd qword ptr [0x85C208] 
  faddp 
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x00000308]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  movsx eax,byte ptr [esi+0x104]
  fmul qword ptr [0x857B20] 
  mov [esp+0x28],eax
  mov ecx,esi
  fild dword ptr [esp+0x28]
  fmulp st1
  
  fadd dword ptr [0x8575A4]
  
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x00000367
  call 0x46EB30
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8]
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x85BCA4] 
  fld dword ptr [esp+0x18]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jnp LABEL22FB6A

  fstp st0
  fldz 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  LABEL22FC58:
  fmul qword ptr [0x858EF0] 
  push 0x04 
  lea ecx,[esp+0x00000314]
  push ecx
  fadd qword ptr [0x867830] 
  push 0x01 
  fstp dword ptr [esp+0x0000031C]
  fld dword ptr [0x85B830] 
  fstp dword ptr [esp+0x00000320]
  fldz 
  fstp dword ptr [esp+0x00000324]
  fld dword ptr [0x85AE94] 
  fstp dword ptr [esp+0x00000328]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esp+0x0000031C]
  push edx
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857B20] 
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C208] 
  faddp 
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x00000328]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  movsx eax,byte ptr [esi+0x104]
  fmul qword ptr [0x857B20] 
  mov [esp+0x28],eax
  mov ecx,esi
  fild dword ptr [esp+0x28]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  
  ;# oh no
  ;push 0x00000367 
  push 0x00000350
  
  call 0x46EB30
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x85BCA4] 
  fld dword ptr [esp+0x18]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jnp LABEL22FC58

  fstp st0
  fldz 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  LABEL22FD4C:
  fld qword ptr [0x858EF0] 
  push 0x04 
  fmul st1,st0
  lea ecx,[esp+0x00000334]
  push ecx
  push 0x01 
  faddp 
  fstp dword ptr [esp+0x0000033C]
  fld dword ptr [0x85B830] 
  fstp dword ptr [esp+0x00000340]
  fldz 
  fstp dword ptr [esp+0x00000344]
  fld dword ptr [0x85BC10] 
  fstp dword ptr [esp+0x00000348]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esp+0x0000033C]
  push edx
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857B20] 
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C208] 
  faddp 
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x00000348]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  movsx eax,byte ptr [esi+0x104]
  fmul qword ptr [0x857B20] 
  mov [esp+0x28],eax
  mov ecx,esi
  fild dword ptr [esp+0x28]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  
  ;# oh no
  ;push 0x00000367 
  push 0x00000350
  
  call 0x46EB30
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x85BCA4] 
  fld dword ptr [esp+0x18]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jnp LABEL22FD4C

  fstp st0
  LABEL22FE34:
  cmp word ptr [esi+0x13E],0x00 
  jne LABEL23120A
  cmp word ptr [esi+0x140],0x07 
  jne LABEL23120A
  cmp word ptr [esi+0x142],0x00 
  jne LABEL23120A

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x857B20] 
  movzx ecx,byte ptr [esi+0x104]
  push 0x01 
  push ecx
  fstp dword ptr [esp+0x18]
  sub esp,0x08 
  fld dword ptr [esp+0x20]
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0

  LABEL23120A:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL22FF0E:
  mov edx,[esi]
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  fld dword ptr [0x8677A8]
  fstp dword ptr [esi+0x100]
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

;# 852 -> 871
func satoriS_APOLLO_BULLET
  mov ecx,esi
  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x05 
  mov ebp,0x00000001 
  ja LABEL238828

  cmp eax,0x00
  je TABLE00
  cmp eax,0x01
  je TABLE01
  cmp eax,0x02
  je TABLE02
  cmp eax,0x03
  je TABLE03
  cmp eax,0x04
  je TABLE04
  cmp eax,0x05
  je TABLE05
  jmp LABEL238828

  TABLE00:
  mov edx,[esi+0x35C]
  fld dword ptr [edx]
  fstp dword ptr [esi+0x12C]
  mov eax,[esi+0x144]
  and eax,0x80000001 
  jns LABEL23C948

  dec eax
  or eax,0xFFFFFFFE
  inc eax
  LABEL23C948:
  jne LABEL23CA34

  push 0x0E 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL23C96A

  fadd dword ptr [0x871554] 
  LABEL23C96A:
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx]
  push 0x03 
  fadd qword ptr [0x871510] 
  lea edx,[esp+0x000002A4]
  push edx
  push ebp
  faddp 
  fsub qword ptr [0x858EC0] 
  fstp dword ptr [esp+0x000002AC]
  fld dword ptr [0x86782C] 
  fstp dword ptr [esp+0x000002B0]
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x000002B4]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov ecx,[esi+0x35C]
  mov edi,[esi]
  fstp qword ptr [esp+0x34]
  fld dword ptr [esi+0x0EC]
  push eax
  fstp qword ptr [esp+0x30]
  push ecx
  fld dword ptr [ecx]
  add edi,0x44 
  fchs 
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857958] 
  mov edx,[esi+0x35C]
  fsubr qword ptr [esp+0x3C]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [edx]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  movsx eax,byte ptr [esi+0x104]
  mov edx,[edi]
  imul eax,eax,0x23
  mov [esp+0x2C],eax
  mov ecx,esi
  fimul dword ptr [esp+0x2C]
  fsubr qword ptr [esp+0x38]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x00000367
  call edx
  LABEL23CA34:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fmul qword ptr [0x8581D8] 
  lea ecx,[esi+0x04]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fst dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  movsx eax,byte ptr [esi+0x104]

  pushf
  pushad  
  mov eax,[esi+0x144]
  xor edx,edx
  mov ebx,0x00000005
  div ebx
  cmp edx,0x00
  jne short LABELX1
  mov dword ptr [esi+0x190],0x00000000
  mov byte ptr [esi+0x194],0x01
  LABELX1:
  cmp dword ptr [esi+0x144],0x00
  jne short LABELX2
  
  ;# SOUND APOLLO 1
  mov ecx,[esi+0x398]
  push 0x3D
  call 0x464980
  LABELX2:
  popad
  popf
  fldz

  nop 
  mov [esp+0x14],eax
  push 0x00 
  mov ecx,esi
  fild dword ptr [esp+0x18]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fldz

  nop 
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  call 0x48CDE0
  fild dword ptr [esi+0x144]
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx+0x0C]
  fcompp 
  fnstsw ax
  test ah,0x41 
  jp LABEL238828

  ;# SOUND APOLLO 2
  mov ecx,[esi+0x398]
  push 0x3E
  call 0x464980
  fldz 
  fst dword ptr [esp+0x000000AC]
  push 0x03 
  fstp dword ptr [esp+0x000000B4]
  lea eax,[esp+0x000000B0]
  fld1 
  push eax
  fstp dword ptr [esp+0x000000BC]
  push ebp
  fld dword ptr [esi+0x0F0]
  movzx ecx,byte ptr [esi+0x104]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000367
  call edx
  fld dword ptr [0x8589F0] 
  fstp dword ptr [esp+0x000000B4]
  mov edi,0x00000004 
  jmp LABEL23CB30

  lea ecx,[ecx+0x00]
  LABEL23CB30:
  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x24],eax
  fild dword ptr [esp+0x24]
  jnl LABEL23CB4C

  fadd dword ptr [0x871554] 
  LABEL23CB4C:
  push 0x32 
  fstp dword ptr [esp+0x000000B4]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL23CB6F

  fadd dword ptr [0x871554] 
  LABEL23CB6F:
  fmul qword ptr [0x867840] 
  push 0x03 
  lea ecx,[esp+0x000000B0]
  push ecx
  fstp dword ptr [esp+0x1C]
  push ebp
  fld dword ptr [esp+0x20]
  mov ecx,esi
  fadd qword ptr [0x8579B0] 
  fstp dword ptr [esp+0x000000BC]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000367
  call eax
  sub edi,ebp
  jne LABEL23CB30

  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 

  TABLE01:
  cmp word ptr [esi+0x140],0x00 
  fld qword ptr [0x867840] 
  jne LABEL238721

  fld1 
  fcom dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x41 
  jne LABEL23CC46

  fld dword ptr [esi+0x11C]
  fld qword ptr [0x857F78] 
  fadd st1,st0
  fxch st1
  fstp dword ptr [esi+0x11C]
  fadd dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  fcom dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x41 
  jp LABEL23CC46

  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x36E],bp
  jmp LABEL23CC48

  LABEL23CC46:
  fstp st0
  LABEL23CC48:
  cmp [esi+0x36E],bp
  jne LABEL23CC90

  mov ecx,[esi+0x144]
  and ecx,0x80000001 
  jns LABEL23CC64

  dec ecx
  or ecx,0xFFFFFFFE
  inc ecx
  LABEL23CC64:
  mov [esp+0x14],ecx
  fimul dword ptr [esp+0x14]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  jmp LABEL23CC92

  LABEL23CC90:
  fstp st0
  LABEL23CC92:
  push 0x00 
  mov ecx,esi
  call 0x48CDE0
  push 0x03 
  mov ecx,esi
  call 0x48CE30
  cmp dword ptr [esi+0x144],0x78 
  jnl LABEL239888

  jmp LABEL23871B

  TABLE02:
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx+0x04]
  fsub qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [ecx+0x04]
  fld dword ptr [0x8677A8] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jne LABEL23CCE6

  fstp dword ptr [ecx+0x04]
  jmp LABEL23CCE8

  LABEL23CCE6:
  fstp st0
  LABEL23CCE8:
  fld dword ptr [ecx+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx]
  lea ecx,[esi+0x04]
  fstp dword ptr [esp]
  call 0x438C00
  cmp dword ptr [esi+0x144],0x0F 
  jl LABEL23CD3E

  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL2365F7

  sub al,0x0A 
  mov [esi+0x113],al
  LABEL23CD3E:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x14],ecx
  fild dword ptr [esp+0x14]
  jmp LABEL238800

  TABLE03:
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx+0x04]
  fsub qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [ecx+0x04]
  fld1 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jne LABEL23CD7E

  fstp dword ptr [ecx+0x04]
  jmp LABEL23CD80

  LABEL23CD7E:
  fstp st0
  LABEL23CD80:
  fld dword ptr [ecx+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx]
  lea ecx,[esi+0x04]
  fstp dword ptr [esp]
  call 0x438C00
  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esi+0x11C]
  fld dword ptr [esi+0x120]
  fstp dword ptr [esi+0x11C]
  mov al,[esi+0x113]
  cmp al,0x14 
  jbe LABEL2365F7

  sub al,0x14 
  mov [esi+0x113],al
  mov al,0xEC
  add [esi+0x110],al
  add [esi+0x111],al
  jmp LABEL238828

  TABLE04:
  fld dword ptr [esi+0x00012C]
  fadd qword ptr [0x871520]
  fstp dword ptr [esi+0x00012C]
  fld dword ptr [esi+0x00011C]
  fadd qword ptr [0x858EA0]
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x00011C]
  fstp dword ptr [esi+0x000120]
  mov al,[esi+0x000113]
  cmp al,0x0A
  jbe LABEL2365F7
  sub al,0x0A
  mov bl,0xF6
  mov [esi+0x000113],al
  add [esi+0x000110],bl
  add [esi+0x000111],bl
  jmp LABEL238828
  fld dword ptr [esi+0x00011C]
  fmul qword ptr [0x8677A0]
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x00011C]
  fstp dword ptr [esi+0x000120]
  cmp dword ptr [esi+0x000144],0x04
  jl LABEL238828
  jmp LABEL23CE3E

  TABLE05:
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  cmp dword ptr [esi+0x144],0x02 
  jl LABEL238828

  LABEL23CE3E:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL240F87:
  BOOP:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 

  LABEL238262:
  fstp st0
  LABEL2365F7:
  jmp LABEL23CE3E

  LABEL2370E1:
  jne LABEL240F87
  cmp [esi+0x13E],bp
  jne LABEL240F87
  add [esi+0x34C],ebx
  jmp BOOP

  LABEL239888:
  mov edx,[esi]
  mov eax,[edx+0x20]
  mov ecx,esi
  call eax
  jmp BOOP

  LABEL23871B:
  fld qword ptr [0x867840]
  LABEL238721:
  cmp [esi+0x140],bp
  jne LABEL238826
  fld dword ptr [esi+0x11C]
  fsub st0,st1
  fstp dword ptr [esi+0x11C]
  fsubr dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  fldz 
  fcomp dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x01
  jne LABEL238828
  add dword ptr [esi+0x34C],0xFFFFFFFF
  jmp BOOP

  LABEL238800:
  fmul dword ptr [esi+0xF4]
  fadd dword ptr [esi+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [esi+0xF8]
  fadd dword ptr [esi+0xF0]
  fstp dword ptr [esi+0xF0]
  jmp LABEL238828

  LABEL238826:
  fstp st0

  LABEL238828:
  fld dword ptr [0x85BAB8]
  fcomp dword ptr [esi+0xEC]
  fnstsw ax
  test ah,0x05
  jnp LABEL23CE3E
  fld dword ptr [esi+0xEC]
  fld qword ptr [0x85BAC0]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41
  je LABEL238262
  fld dword ptr [0x85C458]
  fcomp dword ptr [esi+0xF0]
  fnstsw ax
  test ah,0x05
  jnp LABEL238262
  fld dword ptr [esi+0xF0]
  fcompp 
  fnstsw ax
  test ah,0x05
  jnp LABEL23CE3E
  mov ecx,esi
  call 0x438C60
  or ebx,0xFFFFFFFF
  test al,al
  je LABEL238898
  add [esi+0x34C],ebx
  LABEL238898:
  cmp dword ptr [esi+0x144],0x00
  jne LABEL240F87
  cmp word ptr [esi+0x142],0x00
  jne LABEL240F87
  cmp word ptr [esi+0x140],0x00
  jmp LABEL2370E1
end

func satoriS_APOLLO_BULLET_0F
  mov ecx,[esi+0x35C]
  fstp st1
  fstp st0
  fld dword ptr [ecx+0x08]
  mov ebx,[esi]
  call 0x820230
  mov edx,[ebx+0x0C]
  mov ecx,esi
  push eax
  call edx
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0000
  mov ebx,0x00000001
  jne LABEL242847

  mov ecx,[esi+0x35C]
  mov [esi+0x194],bl
  fld dword ptr [ecx]
  fstp dword ptr [esi+0x12C]
  LABEL242847:
  cmp ax,0x0001
  jne LABEL24285E

  fld dword ptr [0x85BAE8]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL24285E:
  cmp ax,0x0002
  jne LABEL2428A8

  push 0x64
  call 0x4099F0
  add esp,0x04
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL242880

  fadd dword ptr [0x871554]
  LABEL242880:
  fmul qword ptr [0x858C08]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fadd qword ptr [0x8677C8]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL2428A8:
  cmp word ptr [esi+0x13E],0x03
  jne LABEL242910
  push 0x28
  call 0x4099F0
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2428CB

  fadd dword ptr [0x871554]
  LABEL2428CB:
  fmul qword ptr [0x858C08]
  push 0x00000168
  fadd qword ptr [0x8579D8]
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  call 0x4099F0
  add esp,0x08
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL24290A

  fadd dword ptr [0x871554]
  LABEL24290A:
  fstp dword ptr [esi+0x12C]
  LABEL242910:
  cmp word ptr [esi+0x13E],0x04
  jne LABEL2429AC
  push 0x28
  call 0x4099F0
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL242937

  fadd dword ptr [0x871554]
  LABEL242937:
  fmul qword ptr [0x858C08]
  mov edx,[esi+0x35C]
  push 0x1E
  fadd qword ptr [0x8579D8]
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [edx]
  fstp dword ptr [esi+0x124]
  call 0x4099F0
  add eax,0x2D
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL242981

  fadd dword ptr [0x871554]
  LABEL242981:
  push 0x00000168
  fstp dword ptr [esi+0x128]
  call 0x4099F0
  add esp,0x0C
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL2429A6

  fadd dword ptr [0x871554]
  LABEL2429A6:
  fstp dword ptr [esi+0x12C]
  LABEL2429AC:
  cmp word ptr [esi+0x13E],0x05
  jne LABEL244278

  push 0x00000168
  call 0x4099F0
  add esp,0x04
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL241E76

  fadd dword ptr [0x871554]

  LABEL241E76:
  fstp dword ptr [esi+0x12C]
  LABEL244278:
  pop edi
  pop esi
  pop ebx
  add esp,0x14
  ret 
end

005C1747 = satoriS_APOLLO
005C174D = satoriS_APOLLO_AIR
005C1753 = satoriS_APOLLO_BULLET
005C1759 = satoriS_APOLLO_BULLET_0F

;# 609 -> 622
func satoriS_EVILZONE
  mov eax,0x58
  mov ebx,0x00
  mov edx,0x22
  mov edi,0x01
  mov ebp,0x03
  
  push 0x02 
  push 0x02 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x487CA0
  cmp [esi+0x13E],di
  jne LABEL2975EC

  cmp dword ptr [esi+0x144],0x14 
  jnl LABEL28E6F9

  LABEL2975EC:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL297601

  mov edx,[esi]
  mov eax,[edx+0x08]
  push ebx
  mov ecx,esi
  call eax
  LABEL297601:
  cmp [esi+0x144],ebx
  jne LABEL2976E9
  cmp [esi+0x142],bx
  jne LABEL2976E9
  cmp [esi+0x140],bx
  jne LABEL2976E9
  cmp [esi+0x13E],di
  jne LABEL2976E9

  fldz 
  push ebp
  fst dword ptr [esp+0x00000280]
  lea ecx,[esp+0x00000280]
  fstp dword ptr [esp+0x00000284]
  push ecx
  fld1 
  push 0xFFFFFFFF
  fstp dword ptr [esp+0x00000290]
  mov ecx,esi
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x857B20] 
  movzx edx,byte ptr [esi+0x104]
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call 0x46EB30
  fld dword ptr [0x8589F0] 
  fstp dword ptr [esp+0x00000284]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x857B20] 
  lea eax,[esp+0x00000280]
  push eax
  push 0xFFFFFFFF
  fstp dword ptr [esp+0x1C]
  push ecx
  fld dword ptr [esp+0x20]
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call 0x46EB30
  ;# SOUND EVILZONE 1
  push 0x3F
  mov ecx,esi
  call 0x464980
  LABEL2976E9:
  cmp [esi+0x13E],bx
  jne LABEL299E45
  cmp [esi+0x142],bx
  jne LABEL299E45
  cmp [esi+0x140],bp
  jne LABEL299E45

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x871510] 
  push edi
  push eax
  fstp dword ptr [esp+0x18]
  movsx eax,al
  fld dword ptr [esp+0x18]
  lea edx,[eax+eax*0x4]
  sub esp,0x08 
  add edx,edx
  add edx,edx
  fstp dword ptr [esp+0x04]
  mov [esp+0x20],edx
  fld dword ptr [esi+0x0EC]
  mov ecx,esi
  fisub dword ptr [esp+0x20]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push ebx
  push ebx
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0

  LABEL299E45:
  LABEL29778B:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL28E6F9:
  mov edx,[esi]
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  jmp LABEL29778B
end

;# 859 -> 872
func satoriS_EVILZONE_BULLET
  mov ecx,esi
  mov ecx,[esi+0x398]
  xor ebp,ebp
  cmp [ecx+0x00000184],bp
  jg LABEL2A4C98

  cmp [esi+0x36C],bp
  jne LABEL2A4C98

  mov edi,0x00000001 
  mov [esi+0x36C],di
  jmp LABEL2A4C9D

  LABEL2A4C98:
  mov edi,0x00000001 
  LABEL2A4C9D:
  movsx eax,word ptr [esi+0x13E]
  add eax,0xFFFFFFFF
  cmp eax,0x08 
  ja LABEL2A4D54

  cmp eax,0xFFFFFFFF
  je LABEL2A4D54
  cmp eax,0x00
  je TABLE01
  cmp eax,0x01
  je TABLE02
  cmp eax,0x02
  je TABLE03
  cmp eax,0x03
  je TABLE04
  cmp eax,0x04
  je TABLE05
  cmp eax,0x05
  je TABLE06
  cmp eax,0x06
  je TABLE07
  cmp eax,0x07
  je TABLE08
  cmp eax,0x08
  je TABLE09
  jmp TABLEDEF

  TABLE01:
  mov edx,[esi+0x398]
  cmp word ptr [edx+0x0000013C],0x026E
  je LABEL2A4CD8

  cmp [esi+0x36C],bp
  jne LABEL2A4CD8

  mov [esi+0x36C],di
  LABEL2A4CD8:
  cmp [esi+0x36C],di
  jne LABEL2A4D27

  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL29EBDB

  sub al,0x0A 
  mov [esi+0x113],al
  mov al,0xF6
  add [esi+0x112],al
  add [esi+0x111],al
  jmp LABEL2A4D54

  LABEL2A4D27:
  push 0x00000113 
  push ebp
  mov ecx,esi
  call 0x48CF60
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  LABEL2A4D48:
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  TABLEDEF:
  LABEL2A4D54:
  mov ecx,esi
  call 0x438C60
  or ebx,0xFFFFFFFF
  test al,al
  je LABEL2A4D68

  add [esi+0x34C],ebx
  LABEL2A4D68:
  cmp [esi+0x144],ebp
  jne LABEL2A869B
  cmp [esi+0x142],bp
  jne LABEL2A4D95
  cmp [esi+0x140],bp
  jne LABEL2A4D95
  cmp [esi+0x13E],di
  jne LABEL2A4D95

  add [esi+0x34C],ebx
  LABEL2A4D95:
  cmp [esi+0x144],ebp
  jne LABEL2A869B
  cmp [esi+0x142],bp
  jne LABEL2A4DC3
  cmp [esi+0x140],bp
  jne LABEL2A4DC3
  cmp word ptr [esi+0x13E],0x02 
  jne LABEL2A4DC3
  add [esi+0x34C],ebx
  LABEL2A4DC3:
  cmp [esi+0x144],ebp
  jne LABEL2A869B
  cmp [esi+0x142],bp
  jne LABEL2A869B
  cmp [esi+0x140],bp
  jne LABEL2A869B
  cmp word ptr [esi+0x13E],0x09 
  jne LABEL2A869B

  add [esi+0x34C],ebx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 

  TABLE02:
  push 0x64 
  push ebp
  mov ecx,esi
  call 0x48CF60
  add [esi+0x370],di
  movzx eax,word ptr [esi+0x370]
  mov ebx,0x00000002 
  cmp [esi+0x36C],bx
  jnl LABEL2A4E82
  cmp ax,0x012C 
  jnl LABEL2A4E74
  mov eax,[esi+0x398]
  cmp [eax+0x00000184],bp
  jle LABEL2A4E74
  mov ecx,[esi+0x170]
  cmp [ecx+0x00000184],bp
  jle LABEL2A4E74
  movzx ecx,word ptr [eax+0x0000013C]
  cmp cx,0x0258 
  jl LABEL2A4E82
  cmp cx,0x02B1 
  jg LABEL2A4E82
  cmp cx,0x026E 
  jne LABEL2A4E74
  cmp [eax+0x0000013E],di
  jnl LABEL2A4E82

  LABEL2A4E74:
  mov [esi+0x36C],bx
  mov byte ptr [esi+0x194],0x00 
  LABEL2A4E82:
  cmp [esi+0x36C],bp
  jne LABEL2A5001

  mov edx,[esi+0x144]
  and edx,0x80000003 
  jns LABEL2A4EA2

  dec edx
  or edx,0xFFFFFFFC
  inc edx
  LABEL2A4EA2:
  mov edi,0x0000000F 
  jne LABEL2A4FA0

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL2A4EC9

  fadd dword ptr [0x871554] 
  LABEL2A4EC9:
  push 0x4B 
  fstp dword ptr [esi+0x12C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL2A4EE8

  fadd dword ptr [0x871554] 
  LABEL2A4EE8:
  fmul qword ptr [0x858C08] 
  push 0x00000168 
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fadd qword ptr [0x858820] 
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  call 0x4099F0
  test eax,eax
  mov [esp+0x24],eax
  fild dword ptr [esp+0x24]
  jnl LABEL2A4F2C

  fadd dword ptr [0x871554] 
  LABEL2A4F2C:
  push edi
  fstp dword ptr [esp+0x000001E4]
  call 0x4099F0
  add esp,0x10 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2A4F4E

  fadd dword ptr [0x871554] 
  LABEL2A4F4E:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea ecx,[esp+0x000001D8]
  push ecx
  fstp dword ptr [esp+0x000001E0]
  push 0x01 
  fld dword ptr [0x867860] 
  mov ecx,esi
  fstp dword ptr [esp+0x000001E8]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call eax
  LABEL2A4FA0:
  cmp dword ptr [esi+0x190],0x06 
  jne LABEL2A4FBE
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],ebp
  add word ptr [esi+0x36E],0x01 
  LABEL2A4FBE:
  cmp [esi+0x190],ebp
  je LABEL2A4FCD

  add [esi+0x36E],di
  LABEL2A4FCD:
  cmp [esi+0x36E],di
  jl LABEL2A4FFC

  mov [esi+0x36E],bp
  mov byte ptr [esi+0x194],0x00 
  mov word ptr [esi+0x36C],0x0001 
  mov [esi+0x372],bp
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  LABEL2A4FFC:
  mov edi,0x00000001 
  LABEL2A5001:
  cmp [esi+0x36C],di
  jne LABEL2A5163

  fld dword ptr [esi+0x11C]
  fsub qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fcomp dword ptr [0x8677A8] 
  fnstsw ax
  test ah,0x05 
  jp LABEL2A503D

  fld1 
  fstp dword ptr [esi+0x11C]
  LABEL2A503D:
  fld dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov byte ptr [esi+0x194],0x00 
  add [esi+0x372],di
  movzx eax,word ptr [esi+0x372]
  cmp ax,0x0028 
  jl LABEL2A5163

  ;# SOUND EVILZONE 2 what
  mov ecx,[esi+0x398]
  push 0x40
  call 0x464980
  fldz 
  mov [esi+0x372],bp
  mov [esi+0x36C],bp
  mov [esi+0x36E],bp
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],ebp
  fst dword ptr [esp+0x60]
  fstp dword ptr [esp+0x64]
  push 0x03 
  fld dword ptr [0x85BCA4] 
  lea eax,[esp+0x64]
  fstp dword ptr [esp+0x6C]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x48]
  push eax
  push edi
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call edx
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x68]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x48]
  push 0x03 
  lea ecx,[esp+0x64]
  push ecx
  push edi
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call eax
  fld dword ptr [0x85BC44] 
  fstp dword ptr [esp+0x68]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x48]
  push 0x03 
  lea eax,[esp+0x64]
  push eax
  push 0xFFFFFFFF
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call edx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  LABEL2A5163:
  cmp [esi+0x36C],bx
  jne LABEL2A4D54

  mov byte ptr [esi+0x194],0x00 
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  jmp LABEL2A55E8

  TABLE03:
  cmp [esi+0x36C],di
  jg LABEL2A5293
  cmp [esi+0x39C],ebp
  je LABEL2A5293

  mov eax,[esi+0x39C]
  mov ebx,0x00000002 
  cmp [eax+0x0000036C],bx
  jne LABEL2A51CC

  mov [esi+0x36C],bx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  LABEL2A51CC:
  fld dword ptr [eax+0x000000EC]
  mov ecx,esi
  fstp dword ptr [esi+0x0EC]
  call 0x4397F0
  mov ecx,[esi+0x39C]
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [0x85BA6C] 
  fcomp dword ptr [ecx+0x000000F0]
  fnstsw ax
  test ah,0x41 
  jp LABEL2A525E

  fld1 
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [ecx+0x000000F0]
  fld qword ptr [0x85E558] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL2A5253

  fsub dword ptr [ecx+0x000000F0]
  fnstcw [esp+0x10]
  movzx eax,word ptr [esp+0x10]
  or eax,0x00000C00 
  mov [esp+0x14],eax
  fldcw [esp+0x14]
  fistp dword ptr [esp+0x14]
  mov al,[esp+0x14]
  mov [esi+0x113],al
  fldcw [esp+0x10]
  jmp LABEL2A5298

  LABEL2A5253:
  fstp st0
  mov byte ptr [esi+0x113],0x00 
  jmp LABEL2A5298

  LABEL2A525E:
  fld dword ptr [ecx+0x000000F0]
  fld qword ptr [0x85BA58] 
  fld st0
  fsubrp st2
  fdivp st1
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov byte ptr [esi+0x113],0xFF
  jmp LABEL2A5298

  LABEL2A5293:
  mov ebx,0x00000002 
  LABEL2A5298:
  cmp [esi+0x36C],bx
  jne LABEL2A4D54

  jmp LABEL2A55F4

  TABLE04:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fmul qword ptr [0x85B978] 
  fstp dword ptr [eax+0x04]
  fld dword ptr [0x85BAB8] 
  fcomp dword ptr [esi+0x0EC]
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBDB

  fld dword ptr [esi+0x0EC]
  fld qword ptr [0x85BAC0] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  je LABEL29EBD9

  fld dword ptr [0x85C458] 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBD9

  fld dword ptr [esi+0x0F0]
  fcompp 
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBDB

  cmp dword ptr [esi+0x144],0x0A 
  jl LABEL2A5362
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL29EBDB

  sub al,0x0A 
  mov [esi+0x113],al
  mov al,0xF6
  add [esi+0x111],al
  add [esi+0x112],al
  LABEL2A5362:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x14],ecx
  fild dword ptr [esp+0x14]
  LABEL2A5371:
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  jmp LABEL2A4D54

  TABLE05:
  cmp [esi+0x39C],ebp
  je LABEL29EBDB

  mov eax,[esi+0x39C]
  cmp [eax+0x0000036C],bp
  jne LABEL29EBDB

  fld dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x000000F0]
  fstp dword ptr [esi+0x0F0]
  cmp [esi+0x142],bp
  jne LABEL2A4D54

  cmp word ptr [esi+0x140],0x04 
  jne LABEL2A4D54

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2A540B

  fadd dword ptr [0x871554] 
  LABEL2A540B:
  fstp dword ptr [esi+0x12C]
  jmp LABEL2A4D54

  TABLE06:
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x85B938] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  cmp dword ptr [esi+0x144],0x0A 
  jl LABEL2A4D54

  jmp LABEL2A55F4

  TABLE07:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [0x85BAB8] 
  fcomp dword ptr [esi+0x0EC]
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBDB

  fld dword ptr [esi+0x0EC]
  fld qword ptr [0x85BAC0] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  je LABEL29EBD9

  fld dword ptr [0x85C458] 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBD9

  fld dword ptr [esi+0x0F0]
  fcompp 
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBDB

  cmp [esi+0x190],ebp
  jne LABEL2A54F5

  fldz 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x01 
  je LABEL2A54F5

  cmp [esi+0x36C],di
  je LABEL2A54F5

  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  jmp LABEL2A5371

  LABEL2A54F5:
  push 0x00000168 
  call 0x4099F0
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  add esp,0x04 
  test eax,eax
  jnl LABEL2A5514

  fadd dword ptr [0x871554] 
  LABEL2A5514:
  mov eax,[esi]
  fstp dword ptr [esi+0x12C]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  jmp LABEL29ECA0

  TABLE08:
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  jmp LABEL2A4D48

  TABLE09:
  cmp [esi+0x39C],ebp
  je LABEL2A5570

  mov eax,[esi+0x39C]
  fld dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x000000F0]
  fstp dword ptr [esi+0x0F0]
  cmp [eax+0x0000036C],bp
  je LABEL2A5577

  LABEL2A5570:
  mov [esi+0x36C],di
  LABEL2A5577:
  cmp [esi+0x36C],bp
  jne LABEL2A55D4

  mov al,[esi+0x113]
  cmp al,0xFA
  ja LABEL2A5594

  add al,0x05 
  mov [esi+0x113],al
  jmp LABEL2A559B

  LABEL2A5594:
  mov byte ptr [esi+0x113],0xFF
  LABEL2A559B:
  fild dword ptr [esi+0x144]
  push ecx
  fmul qword ptr [0x857F80] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x85A280] 
  add esp,0x04 
  fadd qword ptr [0x857F58] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  jmp LABEL2A4D48

  LABEL2A55D4:
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85BFF0] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  LABEL2A55E8:
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL2A55F4:
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL29EBDB

  sub al,0x0A 
  mov [esi+0x113],al
  mov al,0xF6
  add [esi+0x111],al
  add [esi+0x112],al
  jmp LABEL2A4D54

  LABEL29EBD9:
  fstp st0
  LABEL29EBDB:
  add dword ptr [esi+0x34C], 0xFFFFFFFF
  LABEL2A869B:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret

  LABEL29ECA0:
  fldz
  fst dword ptr [esi+0xF4]
  fstp dword ptr [esi+0xF8]
  jmp LABEL2A869B
end

func satoriS_EVILZONE_BULLET_0F
  mov eax,[esi+0x35C]
  fstp st1
  fstp st0
  fld dword ptr [eax+0x08]
  mov edi,[esi]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0001 
  jne LABEL2A9F01

  fld dword ptr [0x867860] 
  mov [esi+0x194],al
  fstp dword ptr [esi+0x120]
  LABEL2A9F01:
  cmp ax,0x0002 
  jne LABEL2AA021

  fldz 
  movzx ecx,byte ptr [esi+0x104]
  mov edi,[esi]
  fst dword ptr [esp+0x14]
  push 0x03 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [0x871538] 
  lea eax,[esp+0x18]
  push eax
  fstp dword ptr [esp+0x24]
  push 0xFFFFFFFF
  push ecx
  mov ecx,esi
  mov [esi+0x190],ebx
  mov byte ptr [esi+0x194],0x01 
  add edi,0x48 
  call 0x4397F0
  mov edx,[edi]
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call edx
  fld dword ptr [0x85B870] 
  movzx edx,byte ptr [esi+0x104]
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x48]
  push 0x03 
  lea ecx,[esp+0x18]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call eax
  fld dword ptr [0x85BCA4] 
  movzx ecx,byte ptr [esi+0x104]
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x48]
  push 0x03 
  lea eax,[esp+0x18]
  push eax
  push 0x01 
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call edx
  fld dword ptr [0x85BC44] 
  movzx edx,byte ptr [esi+0x104]
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x48]
  push 0x03 
  lea ecx,[esp+0x18]
  push ecx
  push 0xFFFFFFFF
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000368
  call eax
  LABEL2AA021:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0003 
  jne LABEL2AA034

  mov [esi+0x113],bl
  LABEL2AA034:
  cmp ax,0x0004 
  jne LABEL2AA07E

  push 0x32 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL2AA056

  fadd dword ptr [0x871554] 
  LABEL2AA056:
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x0C]
  fld dword ptr [esp+0x0C]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x0C]
  fld dword ptr [esp+0x0C]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL2AA07E:
  cmp word ptr [esi+0x13E],0x07 
  jne LABEL2AAA89

  push 0x32 
  call 0x4099F0
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL2AA0A5

  fadd dword ptr [0x871554] 
  LABEL2AA0A5:
  fmul qword ptr [0x858C08] 
  push 0x00000168 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL2AA0EC

  fadd dword ptr [0x871554] 
  LABEL2AA0EC:
  pop edi
  fstp dword ptr [esi+0x12C]
  mov byte ptr [esi+0x194],0x01 
  LABEL2AA0FA:
  pop esi
  pop ebx
  add esp,0x14
  ret 

  LABEL2AAA89:
  pop edi
  jmp LABEL2AA0FA
end

005C176B = satoriS_EVILZONE
005C175F = satoriS_EVILZONE_BULLET
005C1765 = satoriS_EVILZONE_BULLET_0F

;# 610 -> 619
func satoriS_9STABS
  
  mov eax,0x6D
  mov ebx,0x07
  mov ecx,0x2B
  ;mov edx
  mov edi,0x12C
  mov ebp,0x02

  mov ecx,esi
  ;fstp st0
  call 0x487CA0
  push ebp
  push 0x00 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL347B90

  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00 
  mov ecx,esi
  call eax
  LABEL347B90:
  cmp dword ptr [esi+0x144],0x00 
  jne LABEL347C4B
  cmp word ptr [esi+0x142],0x00 
  jne LABEL347C4B
  cmp word ptr [esi+0x140],0x00 
  jne LABEL347C4B
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL347C4B

  push 0x17 
  mov ecx,esi
  mov word ptr [esi+0x4A6],0x0028 
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  mov ecx,[esi+0x158]
  movsx edx,al
  fisub dword ptr [ecx+0x0000009C]
  push 0x01 
  imul edx,[ecx+0x00000098]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  push eax
  sub esp,0x08 
  mov [esp+0x20],edx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x20]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABEL347C4B:
  cmp [esi+0x13E],bp
  jne LABEL347E02
  cmp word ptr [esi+0x142],0x00 
  jne LABEL347E02

  cmp word ptr [esi+0x140],0x01 
  jne LABEL347D07

  ;# SOUND 9STAB 1
  ;push 0x72 
  push 0x41
  mov ecx,esi
  call 0x464980
  fldz 
  fst dword ptr [esp+0x00000248]
  push 0x03 
  fld dword ptr [0x871544] 
  lea ecx,[esp+0x0000024C]
  fstp dword ptr [esp+0x00000250]
  push ecx
  push 0x01 
  xor edx,edx
  fstp dword ptr [esp+0x0000025C]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x7DC]
  push eax
  fmul qword ptr [0x85B400] 
  sub esp,0x08 
  cmp al,0xFF
  sete dl
  fsubr qword ptr [0x85B828] 
  mov ecx,esi
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp+0x04]
  mov eax,edx
  lea eax,[eax+eax*0x4]
  shl eax,0x08 
  mov [esp+0x28],eax
  fild dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x00000365
  call 0x46EB30
  fld dword ptr [esi+0x7DC]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esi+0x7DC]
  LABEL347D07:
  cmp word ptr [esi+0x142],0x00 
  jne LABEL347E02

  cmp word ptr [esi+0x140],0x04 
  jne LABEL347D3A

  movzx eax,word ptr [esi+0x7D0]
  cmp ax,0x0004 
  jnl LABEL33E4B2

  add eax,0x01 
  mov [esi+0x7D0],ax
  LABEL347D3A:
  cmp word ptr [esi+0x142],0x00 
  jne LABEL347E02
  cmp word ptr [esi+0x140],0x08 
  jne LABEL347E02

  ;# SOUND 9STAB 1
  ;push 0x72 
  push 0x41
  mov ecx,esi
  call 0x464980
  fld dword ptr [0x85B984] 
  fstp dword ptr [esp+0x00000260]
  push 0x03 
  fld dword ptr [0x871544] 
  lea ecx,[esp+0x00000264]
  fstp dword ptr [esp+0x00000268]
  push ecx
  fldz 
  push 0x01 
  fstp dword ptr [esp+0x00000274]
  xor ecx,ecx
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [0x8581A8] 
  push eax
  sub esp,0x08 
  cmp al,0xFF
  sete cl
  fstp dword ptr [esp+0x04]
  movsx edx,al
  fld dword ptr [esi+0x7E0]
  fmul qword ptr [0x8581D0] 
  mov [esp+0x28],edx
  fadd qword ptr [0x857F98] 
  fild dword ptr [esp+0x28]
  mov eax,ecx
  fmulp st1
  lea edx,[eax+eax*0x4]
  shl edx,0x08 
  mov [esp+0x28],edx
  fiadd dword ptr [esp+0x28]
  mov ecx,esi
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x00000365
  call 0x46EB30
  fld dword ptr [esi+0x7E0]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esi+0x7E0]
  LABEL347E02:
  cmp word ptr [esi+0x13E],0x03 
  jne LABEL34717D
  cmp word ptr [esi+0x142],0x00 
  jne LABEL34717D
  cmp word ptr [esi+0x140],0x0A 
  jne LABEL34717D

  ;# SOUND 9STAB 2
  ;push 0x73 
  push 0x42
  mov ecx,esi
  call 0x464980
  fld dword ptr [0x85B870] 
  push ecx
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  LABEL347E46:
  LABEL34717D:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL33E4B2:
  mov edx, [esi]
  mov eax, [edx+0x14]
  mov ecx, esi
  call eax
  jmp LABEL347E46
end

func satoriS_9STABS_0F
  fldz 
  xor ebx,ebx
  fst dword ptr [esi+0x7DC]
  mov ecx,esi
  fstp dword ptr [esi+0x7E0]
  mov [esi+0x7D0],bx
  mov [esi+0x190],ebx
  call 0x4636B0
  mov [esi+0x188],ebx
  pop esi
  pop ebx
  ret 
end

;# 860 -> 869
func satoriS_9STABS_BULLET

  mov ecx,esi
  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x04 
  mov ebp,0x00000002 
  ja LABEL35DFB6

  cmp eax,0x00
  je TABLE00
  cmp eax,0x01
  je TABLE01
  cmp eax,0x02
  je TABLE02
  cmp eax,0x03
  je TABLE03
  cmp eax,0x04
  je TABLE04
  jmp LABEL35DFB6

  TABLE00:
  mov edx,[esi+0x35C]
  fld dword ptr [edx+0x04]
  fadd dword ptr [esi+0x378]
  fstp dword ptr [esi+0x378]
  mov eax,[esi+0x144]
  add eax,eax
  push eax
  call 0x48C750
  cmp word ptr [esi+0x36C],0x00 
  mov edi,0x00000001 
  mov ebx,0x0000026B
  jne LABEL35DA9A

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL35D975

  fadd dword ptr [0x871554] 
  LABEL35D975:
  push 0x0A 
  fstp dword ptr [esp+0x000001E8]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL35D998

  fadd dword ptr [0x871554] 
  LABEL35D998:
  fadd qword ptr [0x871520] 
  push 0x04 
  lea eax,[esp+0x000001E4]
  push eax
  fstp dword ptr [esp+0x000001EC]
  push edi
  fld1 
  fstp dword ptr [esp+0x000001F4]
  fild dword ptr [esi+0x144]
  fstp dword ptr [esp+0x000001F8]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000365
  call edx
  mov eax,[esi+0x398]
  cmp [eax+0x0000013C],bx
  je LABEL35DA08

  mov [esi+0x36C],bp
  LABEL35DA08:
  cmp byte ptr [esi+0x104],0x01 
  jne LABEL35DA3E

  fld dword ptr [0x85BAB8] 
  fcomp dword ptr [esi+0x0EC]
  fnstsw ax
  test ah,0x05 
  jp LABEL35DA6B

  fldz 
  mov ecx,[esi+0x35C]
  fst dword ptr [esi+0x0F4]
  fst dword ptr [ecx+0x04]
  mov [esi+0x36C],di
  jmp LABEL35DA6D

  LABEL35DA3E:
  fld dword ptr [esi+0x0EC]
  fcomp qword ptr [0x85BAC0] 
  fnstsw ax
  test ah,0x05 
  jp LABEL35DA6B

  fldz 
  mov edx,[esi+0x35C]
  fst dword ptr [esi+0x0F4]
  fst dword ptr [edx+0x04]
  mov [esi+0x36C],di
  jmp LABEL35DA6D

  LABEL35DA6B:
  fldz 
  LABEL35DA6D:
  fld dword ptr [0x857FC4] 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x41 
  jne LABEL35DA98

  mov eax,[esi+0x35C]
  fst dword ptr [esi+0x0F8]
  fstp dword ptr [eax+0x04]
  mov [esi+0x36C],di
  jmp LABEL35DA9A

  LABEL35DA98:
  fstp st0
  LABEL35DA9A:
  cmp [esi+0x36C],di
  jg LABEL35DAD3
  mov eax,[esi+0x398]
  cmp [eax+0x0000013C],bx
  je LABEL35DABB

  mov [esi+0x36C],bp
  jmp LABEL35DAD3
  LABEL35DABB:
  cmp word ptr [eax+0x00013E],0x03 
  jne LABEL35DAD3

  cmp word ptr [eax+0x000140],0x0A 
  jnl LABEL34F552

  LABEL35DAD3:
  cmp [esi+0x36C],bp
  jne LABEL35DFB6

  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85BA30] 
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL34F552

  sub al,0x05 
  jmp LABEL35DFB0

  TABLE01:
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx+0x0C]
  call 0x820230
  mov edx,[esi+0x144]
  lea eax,[eax+edx*0x2]
  push eax
  mov ecx,esi
  call 0x48C750
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85BFF0] 
  mov ecx,[esi+0x35C]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [ecx+0x04]
  fsub qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [ecx+0x04]
  fld1 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL35DB80

  fstp dword ptr [ecx+0x04]
  jmp LABEL35DB82

  LABEL35DB80:
  fstp st0
  LABEL35DB82:
  fld dword ptr [ecx+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx]
  lea ecx,[esi+0x04]
  fstp dword ptr [esp]
  call 0x438C00
  cmp dword ptr [esi+0x144],0x0A 
  jl LABEL35DFB6

  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85B978] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL34F552

  sub al,0x0A 
  jmp LABEL35DFB0

  TABLE02:
  mov ecx,[esi+0x144]
  add ecx,ecx
  push ecx
  mov ecx,esi
  call 0x48C750
  mov ecx,0x00000001 
  cmp [esi+0x36C],cx
  jg LABEL35DCB0
  mov eax,[esi+0x398]
  cmp word ptr [eax+0x00013C],0x026B
  jne LABEL35DCB0
  cmp word ptr [eax+0x00013E],0x03 
  jne LABEL35DCB0
  cmp word ptr [eax+0x000140],0x0A 
  jl LABEL35DCB0

  mov edx,[esi+0x35C]
  fld dword ptr [edx]
  push 0x04 
  fstp dword ptr [esp+0x00000104]
  fldz 
  fstp dword ptr [esp+0x00000108]
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x0000010C]
  mov eax,[esi+0x144]
  add eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  lea eax,[esp+0x00000104]
  push eax
  push ecx
  fstp dword ptr [esp+0x00000118]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000365
  call edx
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  
  LABEL35DCB0:
  cmp dword ptr [esi+0x39C],0x00 
  je LABEL35DCE6

  mov eax,[esi+0x39C]
  fld dword ptr [eax+0x000378]
  fstp dword ptr [esi+0x378]
  cmp [eax+0x0000036C],bp
  jne LABEL35DCF4
  cmp [esi+0x36C],cx
  jg LABEL35DCF4
  mov [esi+0x36C],bp
  jmp LABEL35DCF4

  LABEL35DCE6:
  mov [esi+0x36C],bp
  mov byte ptr [esi+0x194],0x00 
  LABEL35DCF4:
  cmp [esi+0x36C],bp
  jl LABEL35DFB6

  mov byte ptr [esi+0x194],0x00 
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esi+0x120]
  add [esi+0x36C],cx
  jmp LABEL35DFA0

  TABLE03:
  fld dword ptr [0x85BAB8] 
  xor ebx,ebx
  fstp dword ptr [esi+0x378]
  mov edi,0x00000001 
  fld dword ptr [esi+0x37C]
  fsub qword ptr [0x857930] 
  fstp dword ptr [esi+0x37C]
  cmp [esi+0x36C],bx
  jne LABEL35DD97

  fld dword ptr [esi+0x120]
  fadd qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x120]
  fld dword ptr [0x8677A8] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jp LABEL35DD95
  mov [esi+0x36C],di
  fstp dword ptr [esi+0x120]
  mov byte ptr [esi+0x194],0x0B 
  jmp LABEL35DD97

  LABEL35DD95:
  fstp st0
  LABEL35DD97:
  cmp [esi+0x36C],di
  jne LABEL35DE6E

  mov eax,[esi+0x35C]
  fld dword ptr [eax]
  push ebx
  push ebx
  call 0x820230
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x859B00] 
  push eax
  call 0x820230
  fld dword ptr [esi+0x378]
  push eax
  call 0x820230
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x85B868] 
  push eax
  call 0x820230
  push eax
  push ebx
  mov ecx,esi
  call 0x4B0E40
  push 0x03 
  mov ecx,esi
  call 0x48CDE0
  cmp [esi+0x190],ebx
  je LABEL35DE1E

  add [esi+0x36E],di
  movzx eax,word ptr [esi+0x36E]
  cmp ax,0x000A 
  jle LABEL35DE1E

  mov [esi+0x36E],bx
  mov [esi+0x190],ebx
  LABEL35DE1E:
  cmp [esi+0x194],bl
  jle LABEL35DE32

  cmp dword ptr [esi+0x144],0x000001E0 
  jl LABEL35DE39

  LABEL35DE32:
  mov [esi+0x36C],bp
  LABEL35DE39:
  fld dword ptr [esi+0x120]
  fadd qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x120]
  fld dword ptr [0x8589F0] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jp LABEL35DE6C

  fstp dword ptr [esi+0x120]
  jmp LABEL35DE6E

  LABEL35DE6C:
  fstp st0
  LABEL35DE6E:
  cmp [esi+0x36C],bp
  jl LABEL35DFB6

  mov [esi+0x194],bl
  jmp LABEL35DF8E

  TABLE04:
  movsx edx,word ptr [esi+0x370]
  mov ecx,[esi+0x35C]
  mov [esp+0x18],edx
  fld dword ptr [ecx+0x0C]
  fild dword ptr [esp+0x18]
  faddp 
  call 0x820230
  push eax
  mov ecx,esi
  call 0x48C750
  fld dword ptr [0x85BAB8] 
  add [esi+0x370],bp
  fstp dword ptr [esi+0x378]
  fld dword ptr [esi+0x37C]
  mov ecx,0x00000001 
  fsub qword ptr [0x857930] 
  fstp dword ptr [esi+0x37C]
  cmp dword ptr [esi+0x39C],0x00 
  je LABEL35DEFF
  cmp [esi+0x36C],cx
  jg LABEL35DEFF
  mov eax,[esi+0x39C]
  cmp [eax+0x0000036C],bp
  jne LABEL35DEFF

  mov [esi+0x36C],bp
  LABEL35DEFF:
  cmp word ptr [esi+0x36C],0x00 
  fld qword ptr [0x867840] 
  jne LABEL35DF4D

  fld dword ptr [esi+0x120]
  fadd st0,st1
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x120]
  fld dword ptr [0x8677A8] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jp LABEL35DF4B

  mov [esi+0x36C],cx
  fstp dword ptr [esi+0x120]
  mov [esi+0x194],cl
  jmp LABEL35DF4D

  LABEL35DF4B:
  fstp st0
  LABEL35DF4D:
  cmp [esi+0x36C],cx
  jne LABEL35DF83

  fadd dword ptr [esi+0x120]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x120]
  fld dword ptr [0x8589F0] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jp LABEL35DF83

  fstp dword ptr [esi+0x120]
  jmp LABEL35DF85

  LABEL35DF83:
  fstp st0
  LABEL35DF85:
  cmp [esi+0x36C],bp
  jl LABEL35DFB6

  LABEL35DF8E:
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esi+0x120]
  LABEL35DFA0:
  mov al,[esi+0x113]
  cmp al,0x0F 
  jb LABEL34F552

  sub al,0x0F 
  LABEL35DFB0:
  mov [esi+0x113],al

  TABLEDEF:
  TABLE05:
  LABEL35DFB6:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x18],ecx
  mov ecx,esi
  fild dword ptr [esp+0x18]
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  call 0x438C60
  test al,al
  je LABEL35DFFB

  add dword ptr [esi+0x34C],0xFFFFFFFF 
  LABEL35DFFB:
  cmp [esi+0x13E],bp
  jne LABEL35E031

  fld dword ptr [0x867888] 
  sub esp,0x10 
  fstp dword ptr [esp+0x0C]
  mov ecx,esi
  fld dword ptr [esi+0x378]
  fstp dword ptr [esp+0x08]
  fldz 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x37C]
  fstp dword ptr [esp]
  call 0x438FC0
  LABEL35E031:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0003 
  je LABEL35B2C5

  cmp ax,0x0004 
  jmp LABEL35B2BF

  LABEL34F552:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL35DCA8:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 

  LABEL35B2BF:
  jne LABEL35DCA8
  LABEL35B2C5:
  fld dword ptr [0x857F70]
  sub esp,0x10
  fstp dword ptr [esp+0x0C]
  mov ecx,esi
  fld dword ptr [esi+0x378]
  fstp dword ptr [esp+0x08]
  fldz 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x37C]
  fstp dword ptr [esp]
  call 0x438FC0
  jmp LABEL35DCA8
end

func satoriS_9STABS_BULLET_0F

  ;sub esp,0x08
  ;# watch this sick strat
  
  mov eax,[esi+0x13C]
  mov eax,[esi+0x13E]
  
  mov eax,[esi+0x35C]
  fstp st1
  mov edi,[esi]
  fstp st0
  fld dword ptr [eax+0x08]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  cmp word ptr [esi+0x13E],0x00
  mov ebx,0x00000001 
  jne LABEL3640F0
  
  mov eax,[esi+0x35C]
  fld dword ptr [eax]
  sub esp,0x08 
  fstp dword ptr [esi+0x12C]
  lea ecx,[esi+0x04]
  fld dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  mov eax,[esi+0x35C]
  fld dword ptr [eax]
  movzx edx,byte ptr [esi+0x104]
  ;#idk why it chose +18, but we are safe until +10
  ;fstp dword ptr [esp+0x18]
  fstp dword ptr [esp+0x10]
  
  ;jmp HHH

  push 0x04 
  fldz 
  
  ;lea ecx,[esp+0x1C]
  ;fstp dword ptr [esp+0x20]
  ;push ecx
  ;fld dword ptr [0x8589F0] 
  ;push ebx
  ;fstp dword ptr [esp+0x2C]
  ;push edx
  ;fld dword ptr [eax+0x0C]
  ;mov eax,[esi]
  ;mov eax,[eax+0x48]
  ;fstp dword ptr [esp+0x34]
  ;fld dword ptr [esi+0x0F0]
  
  
  lea ecx,[esp+0x14]
  fstp dword ptr [esp+0x18]
  push ecx
  fld dword ptr [0x8589F0] 
  push ebx
  fstp dword ptr [esp+0x24]
  push edx
  fld dword ptr [eax+0x04]
  mov eax,[esi]
  mov eax,[eax+0x48]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esi+0x0F0]
  
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000365
  call eax
  LABEL3640F0:
  
  fld dword ptr [esi+0xF4]
  fstp st0
  fld dword ptr [esi+0xF8]
  fstp st0
  
  cmp [esi+0x13E],bx
  jne LABEL364135
  
  HHH:

  push 0x0F 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL364115

  fadd dword ptr [0x871554] 
  LABEL364115:
  fmul qword ptr [0x867840] 
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL364135:
  cmp word ptr [esi+0x13E],0x02 
  jne LABEL36416E

  mov ecx,[esi+0x35C]
  fld dword ptr [ecx]
  sub esp,0x10 
  fstp dword ptr [esi+0x12C]
  mov ecx,esi
  fld dword ptr [0x867888] 
  fstp dword ptr [esp+0x0C]
  fldz 
  fst dword ptr [esp+0x08]
  fst dword ptr [esp+0x04]
  fstp dword ptr [esp]
  call 0x438FC0
  LABEL36416E:
  cmp word ptr [esi+0x13E],0x03 
  jne LABEL364214

  mov edx,[esi+0x35C]
  fld dword ptr [edx]
  sub esp,0x10 
  fstp dword ptr [esi+0x12C]
  mov ecx,esi
  fld dword ptr [0x85AD14] 
  fstp dword ptr [esi+0x120]
  fld dword ptr [0x857F70] 
  fstp dword ptr [esp+0x0C]
  fld dword ptr [0x85BAB8] 
  fstp dword ptr [esp+0x08]
  fldz 
  fst dword ptr [esp+0x04]
  fstp dword ptr [esp]
  call 0x438FC0
  mov eax,[esi+0x35C]
  fld dword ptr [eax]
  movzx edx,byte ptr [esi+0x104]
  
  ;fstp dword ptr [esp+0x18]
  ;push 0x04 
  ;fldz 
  ;lea ecx,[esp+0x1C]
  ;fstp dword ptr [esp+0x20]
  ;push ecx
  ;fld dword ptr [0x867860] 
  ;push ebx
  ;fstp dword ptr [esp+0x2C]
  ;push edx
  ;fld dword ptr [eax+0x0C]
  ;mov eax,[esi]
  ;mov eax,[eax+0x48]
  ;fstp dword ptr [esp+0x34]
  ;fld dword ptr [esi+0x0F0]
  
  fstp dword ptr [esp+0x10]
  push 0x04 
  fldz 
  lea ecx,[esp+0x14]
  fstp dword ptr [esp+0x18]
  push ecx
  fld dword ptr [0x867860] 
  push ebx
  fstp dword ptr [esp+0x24]
  push edx
  fld dword ptr [eax+0x0C]
  mov eax,[esi]
  mov eax,[eax+0x48]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esi+0x0F0]
  
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000365 
  call eax
  LABEL364214:
  cmp word ptr [esi+0x13E],0x04 
  jne LABEL364D34

  mov ecx,[esi+0x35C]
  fld dword ptr [ecx]
  sub esp,0x10 
  fstp dword ptr [esi+0x12C]
  mov ecx,esi
  fld dword ptr [0x85AD14] 
  fstp dword ptr [esi+0x120]
  fld dword ptr [0x857F70] 
  fstp dword ptr [esp+0x0C]
  fld dword ptr [0x85BAB8] 
  fstp dword ptr [esp+0x08]
  fldz 
  fst dword ptr [esp+0x04]
  fstp dword ptr [esp]
  call 0x438FC0
  LABEL364D34:
  ;add esp,0x08
  pop edi
  pop esi
  pop ebx
  add esp,0x14
  ret 
end

func satoriS_9STABS_FIX
  cmp word ptr [esi+0x13C],0x026B
  jne LABEL2
  cmp dword ptr [esi+0x188],0x000009C4
  jg LABEL2
  fldz
  fstp dword ptr [esi+0x538]

  LABEL2:
  cmp [esi+0x196],bx
end
;005A59A5 = satoriS_9STABS_FIX
;# the fix is in ID FIX

005B4B68 = satoriS_9STABS
005B8A00 = satoriS_9STABS_0F
005C49E3 = satoriS_9STABS_BULLET
005C9AF6 = satoriS_9STABS_BULLET_0F

;# 603 -> 608
func satoriS_ROYALFLARE
  mov eax,0x66
  mov ebx,0x168
  mov ecx,0x2C
  mov edi,0x00
  mov ebp,0x12C
  
  mov ecx,esi
  call 0x487CA0
  push 0x02 
  push 0x05 
  mov ecx,esi
  call 0x46B370
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0001 
  jne LABEL1510A0

  cmp dword ptr [esi+0x144],0x78 
  jg LABEL14BD73

  LABEL1510A0:
  cmp ax,0x0002 
  jne LABEL1510B3

  cmp dword ptr [esi+0x144],0x3C 
  jg LABEL14BD73

  LABEL1510B3:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1510C8

  mov eax,[esi]
  mov edx,[eax+0x08]
  push edi
  mov ecx,esi
  call edx
  LABEL1510C8:
  cmp [esi+0x144],edi
  jne LABEL1510F2
  cmp [esi+0x142],di
  jne LABEL1510F2
  cmp [esi+0x140],di
  jne LABEL1510F2
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL1510F2

  mov [esi+0x144],edi
  LABEL1510F2:
  cmp [esi+0x13E],di
  jne LABEL153C5C
  cmp word ptr [esi+0x140],0x08 
  jne LABEL153C5C
  cmp [esi+0x142],di
  jne LABEL153C5C

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85B8F8] 
  push 0x01 
  push eax
  movsx eax,al
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  lea eax,[eax+eax*0x4]
  add eax,eax
  sub esp,0x08 
  add eax,eax
  mov [esp+0x20],eax
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fild dword ptr [esp+0x20]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  fldz 
  fst dword ptr [esp+0x00000444]
  push 0x03 
  fst dword ptr [esp+0x0000044C]
  lea ecx,[esp+0x00000448]
  fstp dword ptr [esp+0x00000450]
  push ecx
  fld dword ptr [esi+0x0F0]
  movzx edx,byte ptr [esi+0x104]
  fadd qword ptr [0x85B8F8] 
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fadd qword ptr [0x8581F8] 
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000035A
  call 0x46EB30
  push 0x3C 
  push edi
  push edi
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  ;# SOUND ROYALFLARE 1
  push 0x43
  mov ecx,esi
  call 0x464980
  LABEL153C5C:
  LABEL151208:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL14BD73:
  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  jmp LABEL151208
end

;# 853 -> 858
func satoriS_ROYALFLARE_BULLET
  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x07 
  ja LABEL1595E3

  cmp eax,0x00
  je LABEL1619D8
  cmp eax,0x01
  je LABEL161D41
  cmp eax,0x02
  je LABEL162042
  cmp eax,0x03
  je LABEL1620C4
  cmp eax,0x04
  je LABEL16210D
  cmp eax,0x05
  je LABEL1621EB
  cmp eax,0x06
  je LABEL162249
  cmp eax,0x07
  je LABEL162353
  jmp LABEL1595E3

  LABEL1619D8:
  mov eax,[esi+0x398]
  movsx ecx,byte ptr [eax+0x00000104]
  lea edx,[ecx+ecx*0x4]
  add edx,edx
  add edx,edx
  mov [esp+0x10],edx
  mov ecx,0x00000005 
  fild dword ptr [esp+0x10]
  fadd dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  mov eax,[esi+0x144]
  cdq 
  idiv ecx
  test edx,edx
  jne LABEL161A8E
  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161A35

  fadd dword ptr [0x871554] 
  LABEL161A35:
  fstp dword ptr [esp+0x000001AC]
  push 0x03 
  fld dword ptr [0x858830] 
  lea eax,[esp+0x000001B0]
  fstp dword ptr [esp+0x000001B4]
  push eax
  fld dword ptr [0x85B870] 
  push 0x01 
  fstp dword ptr [esp+0x000001C0]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035A
  call edx
  LABEL161A8E:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000003 
  idiv ecx
  test edx,edx
  jne LABEL161B89

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x24],eax
  fild dword ptr [esp+0x24]
  jnl LABEL161AC0

  fadd dword ptr [0x871554] 
  LABEL161AC0:
  push 0x000000C8 
  fstp dword ptr [esp+0x000000C0]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161AE6

  fadd dword ptr [0x871554] 
  LABEL161AE6:
  fadd qword ptr [0x858EF0] 
  push 0x03 
  lea edx,[esp+0x000000BC]
  push edx
  fstp dword ptr [esp+0x000000C4]
  push 0x01 
  fld dword ptr [0x85BCA4] 
  fstp dword ptr [esp+0x000000CC]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esp+0x000000C4]
  mov edi,[esi]
  push eax
  fchs 
  push ecx
  add edi,0x48 
  fstp dword ptr [esp]
  call 0x409580
  fmul dword ptr [esp+0x000000D0]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x000000D0]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  movsx ecx,byte ptr [esi+0x104]
  fmul dword ptr [esp+0x000000D4]
  mov edx,[edi]
  mov [esp+0x28],ecx
  mov ecx,esi
  fild dword ptr [esp+0x28]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000035A
  call edx
  LABEL161B89:
  fld dword ptr [esi+0x0F0]
  mov ecx,[esi+0x398]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esi+0x0F0]
  movzx eax,word ptr [ecx+0x0000013C]
  cmp ax,0x0260
  je LABEL161BB8

  cmp ax,0x026F
  jne LABEL15917A

  LABEL161BB8:
  cmp word ptr [ecx+0x0000013E],0x01 
  jne LABEL1595E3

  ;# SOUND ROYALFLARE 2
  push 0x44
  call 0x464980
  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  fldz 
  mov byte ptr [esi+0x194],0x63 
  fstp dword ptr [esp+0x18]
  mov dword ptr [esi+0x190],0x00000000 
  lea ecx,[ecx+0x00]
  LABEL161BF0:
  push 0x28 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161C0C

  fadd dword ptr [0x871554] 
  LABEL161C0C:
  fld dword ptr [esp+0x18]
  push 0x03 
  fmul qword ptr [0x85B900] 
  lea ecx,[esp+0x0000011C]
  push ecx
  push 0x01 
  faddp 
  mov ecx,esi
  fstp dword ptr [esp+0x00000124]
  fldz 
  fstp dword ptr [esp+0x00000128]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x0000012C]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x48]
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035A
  call eax
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x871538] 
  fcomp dword ptr [esp+0x18]
  fnstsw ax
  test ah,0x41 
  je LABEL161BF0

  fldz 
  fstp dword ptr [esp+0x18]
  LABEL161C96:
  push 0x2D 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161CB2

  fadd dword ptr [0x871554] 
  LABEL161CB2:
  fld dword ptr [esp+0x18]
  push 0x03 
  fmul qword ptr [0x858E98] 
  lea eax,[esp+0x0000011C]
  push eax
  push 0x01 
  faddp 
  fadd qword ptr [0x857F98] 
  fstp dword ptr [esp+0x00000124]
  fld1 
  fstp dword ptr [esp+0x00000128]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x0000012C]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x48]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035A
  call edx
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x867860] 
  fcomp dword ptr [esp+0x18]
  fnstsw ax
  test ah,0x41 
  je LABEL161C96

  jmp LABEL1595E3

  LABEL161D41:
  xor ebp,ebp
  cmp [esi+0x36C],bp
  mov ebx,0x00000001 
  jne LABEL162029

  fld dword ptr [esi+0x378]
  fld1 
  fld st0
  fsubrp st2
  fxch st1
  fmul qword ptr [0x859B00] 
  faddp 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x378]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esi+0x378]
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85CDF8] 
  call 0x820230
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85BC28] 
  mov edi,eax
  call 0x820230
  push ebp
  push ebp
  push ebp
  push edi
  push eax
  push eax
  push edi
  mov ecx,esi
  call 0x4B0E40
  push ebp
  mov ecx,esi
  call 0x48CDE0
  mov eax,[esi+0x144]
  and eax,0x80000001 
  jns LABEL161DDD

  dec eax
  or eax,0xFFFFFFFE
  inc eax
  LABEL161DDD:
  jne LABEL161E73

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x24],eax
  fild dword ptr [esp+0x24]
  jnl LABEL161DFF

  fadd dword ptr [0x871554] 
  LABEL161DFF:
  push 0x28 
  fstp dword ptr [esp+0x000001CC]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161E22

  fadd dword ptr [0x871554] 
  LABEL161E22:
  fadd qword ptr [0x8581F8] 
  push 0x03 
  lea eax,[esp+0x000001C8]
  push eax
  fstp dword ptr [esp+0x000001D0]
  push ebx
  fld dword ptr [0x8589F0] 
  fstp dword ptr [esp+0x000001D8]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035A
  call edx
  LABEL161E73:
  mov eax,[esi+0x144]
  and eax,0x80000001 
  jns LABEL161E85

  dec eax
  or eax,0xFFFFFFFE
  inc eax
  LABEL161E85:
  jne LABEL161F1B

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x24],eax
  fild dword ptr [esp+0x24]
  jnl LABEL161EA7

  fadd dword ptr [0x871554] 
  LABEL161EA7:
  push 0x0F 
  fstp dword ptr [esp+0x000001E4]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161ECA

  fadd dword ptr [0x871554] 
  LABEL161ECA:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x000001E0]
  push eax
  fstp dword ptr [esp+0x000001E8]
  push ebx
  fld dword ptr [0x85882C] 
  fstp dword ptr [esp+0x000001F0]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035A
  call edx
  LABEL161F1B:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x0000000F 
  idiv ecx
  test edx,edx
  jne LABEL161F85

  fldz 
  push 0x03 
  fst dword ptr [esp+0x000001F8]
  lea eax,[esp+0x000001F8]
  fstp dword ptr [esp+0x000001FC]
  push eax
  fld dword ptr [0x871538] 
  push ebx
  fstp dword ptr [esp+0x00000208]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035A
  call edx
  LABEL161F85:
  cmp [esi+0x190],ebp
  je LABEL161FAE

  add [esi+0x36E],bx
  movzx eax,word ptr [esi+0x36E]
  cmp ax,0x0003 
  jl LABEL161FAE

  mov [esi+0x36E],bp
  mov [esi+0x190],ebp
  LABEL161FAE:
  mov al,[esi+0x113]
  mov cl,0xC4
  cmp al,cl
  jb LABEL161FD2

  sub al,0x08 
  mov [esi+0x113],al
  mov al,0xF8
  add [esi+0x111],al
  add [esi+0x110],al
  jmp LABEL161FE4

  LABEL161FD2:
  mov [esi+0x113],cl
  mov [esi+0x111],cl
  mov [esi+0x110],cl
  LABEL161FE4:
  mov eax,[esi+0x398]
  cmp word ptr [eax+0x0000013C],0x0260
  jne LABEL162022

  cmp [eax+0x0000013E],bx
  jne LABEL162022

  movsx ecx,byte ptr [eax+0x00000104]
  lea ecx,[ecx+ecx*0x4]
  add ecx,ecx
  add ecx,ecx
  mov [esp+0x10],ecx
  fild dword ptr [esp+0x10]
  fadd dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  jmp LABEL162029

  LABEL162022:
  mov [esi+0x36C],bx
  LABEL162029:
  cmp [esi+0x36C],bx
  jne LABEL1595E3

  mov byte ptr [esi+0x194],0x00 
  jmp LABEL1620E4

  LABEL162042:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x867840] 
  fstp dword ptr [esi+0x11C]
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x85BA10] 
  fstp dword ptr [esi+0x120]
  cmp dword ptr [esi+0x144],0x0F 
  jl LABEL1620B0

  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x111],bl
  add [esi+0x110],bl
  LABEL1620B0:
  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x10],edx
  fild dword ptr [esp+0x10]
  jmp LABEL1595BF

  LABEL1620C4:
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL1620E4:
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x110],bl
  add [esi+0x111],bl
  jmp LABEL1595E3

  LABEL16210D:
  fld dword ptr [esi+0x380]
  mov ecx,0x00000001 
  fadd dword ptr [esi+0x12C]
  fstp dword ptr [esi+0x12C]
  cmp word ptr [esi+0x36C],0x00 
  jne LABEL162191

  fld dword ptr [esi+0x37C]
  fld1 
  fsubrp st1
  fmul dword ptr [esi+0x378]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x37C]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [esi+0x37C]
  cmp dword ptr [esi+0x39C],0x00 
  je LABEL16218A

  mov eax,[esi+0x39C]
  fld dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x000000F0]
  fstp dword ptr [esi+0x0F0]
  cmp [eax+0x0000036C],cx
  jne LABEL162191

  LABEL16218A:
  mov [esi+0x36C],cx
  LABEL162191:
  cmp [esi+0x36C],cx
  jne LABEL1595E3

  fld dword ptr [esi+0x380]
  fmul qword ptr [0x85B978] 
  fstp dword ptr [esi+0x380]
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x85A298] 
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x111],bl
  add [esi+0x110],bl
  jmp LABEL1595E3

  LABEL1621EB:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  cmp dword ptr [esi+0x144],0x0F 
  jl LABEL162235

  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x111],bl
  add [esi+0x110],bl
  LABEL162235:
  movsx eax,byte ptr [esi+0x104]
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jmp LABEL1595BF

  LABEL162249:
  cmp dword ptr [esi+0x39C],0x00 
  je LABEL15917A

  mov ebx,[esi+0x35C]
  mov ecx,ebx
  fld dword ptr [ecx]
  push ecx
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  fmul dword ptr [ebx+04]
  movsx edx,byte ptr [esi+0x104]
  mov eax,[esi+0x39C]
  mov edi,[esi+0x35C]
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  fmulp st1
  fadd dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [ebx]
  fchs 
  fstp dword ptr [esp]
  call 0x409580
  fmul dword ptr [edi+0x04]
  mov ecx,[esi+0x39C]
  add esp,0x04 
  fadd dword ptr [ecx+0x000000F0]
  mov ecx,0x00000001 
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [edi+0x04]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [edi+0x04]
  cmp word ptr [esi+0x36C],0x00 
  jne LABEL16231D

  mov al,[esi+0x113]
  cmp al,0xEB
  ja LABEL1622F8

  add al,0x14 
  mov [esi+0x113],al
  add byte ptr [esi+0x111],0x14 
  add byte ptr [esi+0x110],0x14 
  jmp LABEL16230D

  LABEL1622F8:
  mov byte ptr [esi+0x113],0xFF
  mov byte ptr [esi+0x111],0xFF
  mov byte ptr [esi+0x110],0xFF
  LABEL16230D:
  cmp dword ptr [esi+0x144],0x1E 
  jl LABEL16231D

  mov [esi+0x36C],cx
  LABEL16231D:
  cmp [esi+0x36C],cx
  jne LABEL1595E3

  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL15917A

  sub al,0x05 
  mov [esi+0x113],al
  add byte ptr [esi+0x111],0xFB
  add byte ptr [esi+0x110],0xFB
  jmp LABEL1595E3

  LABEL162353:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [eax+0x04]
  cmp dword ptr [esi+0x144],0x0F 
  jl LABEL1623AF

  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x111],bl
  add [esi+0x110],bl
  LABEL1623AF:
  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x10],edx
  fild dword ptr [esp+0x10]
  jmp LABEL1595BF

  LABEL1595E3:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1685B4
  LABEL15917A:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL1685B4:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 

  LABEL1595BF:
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  jmp LABEL1595E3
end

func satoriS_ROYALFLARE_BULLET_0F
  mov eax,[esi+0x35C]
  fstp st1
  fstp st0
  fld dword ptr [eax]
  mov edi,[esi]
  fstp dword ptr [esi+0x12C]
  mov word ptr [esi+0x360],0x0001 
  fld dword ptr [eax+0x08]
  call 0x820230
  mov ecx,esi
  push eax
  mov eax,[edi+0x0C]
  call eax
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x00
  jne LABEL16AD3D

  fld1 
  fstp dword ptr [esi+0x378]
  LABEL16AD3D:
  cmp ax,0x0004 
  jne LABEL16AE05

  fldz 
  mov ecx,[esi+0x35C]
  fst dword ptr [esi+0x120]
  fcomp dword ptr [ecx+0x04]
  fnstsw ax
  test ah,0x44 
  jp LABEL16ADA9

  fld dword ptr [0x8589F0] 
  push 0x05 
  fstp dword ptr [esi+0x380]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL16AD87

  fadd dword ptr [0x871554] 
  LABEL16AD87:
  fmul qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esi+0x378]
  fld1 
  fstp dword ptr [esi+0x37C]
  LABEL16ADA9:
  fld1 
  mov edx,[esi+0x35C]
  fcomp dword ptr [edx+0x04]
  fnstsw ax
  test ah,0x44 
  jp LABEL16AE05

  fld dword ptr [0x85BC70] 
  push 0x02 
  fstp dword ptr [esi+0x380]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL16ADE3

  fadd dword ptr [0x871554] 
  LABEL16ADE3:
  fmul qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fadd qword ptr [0x857F78] 
  fstp dword ptr [esi+0x378]
  fld1 
  fstp dword ptr [esi+0x37C]
  LABEL16AE05:
  cmp word ptr [esi+0x13E],0x06 
  jne LABEL16AE53

  push 0x0A 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL16AE2B

  fadd dword ptr [0x871554] 
  LABEL16AE2B:
  fmul qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL16AE53:
  cmp word ptr [esi+0x13E],0x07 
  jne LABEL16BEFA

  push 0x7D 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL16AE7D

  fadd dword ptr [0x871554] 
  LABEL16AE7D:
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fadd qword ptr [0x858820] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL16BEFA:
  pop edi
  pop esi
  ;pop ebp
  pop ebx
  add esp,0x14
  ret 
end

005B46FD = satoriS_ROYALFLARE
005C427C = satoriS_ROYALFLARE_BULLET
005C9848 = satoriS_ROYALFLARE_BULLET_0F

;# 613 -> 623
func satoriS_VISOR
  mov eax,0x70
  mov ebx,0x12C
  mov edx,0x33
  mov edi,0x258
  mov ebp,0x1770
  mov ecx,esi
  ;fstp st0
  call 0x487CA0
  push 0x02 
  push 0x00 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL3B142A

  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x00 
  mov ecx,esi
  call edx
  LABEL3B142A:
  cmp dword ptr [esi+0x144],0x00 
  jne LABEL3B14DB
  cmp word ptr [esi+0x142],0x00 
  jne LABEL3B14DB
  cmp word ptr [esi+0x140],0x00 
  jne LABEL3B14DB
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL3B14DB

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  movzx eax,byte ptr [esi+0x104]
  push 0x01 
  push eax
  fstp dword ptr [esp+0x18]
  movsx eax,al
  fld dword ptr [esp+0x18]
  sub esp,0x08 
  lea eax,[eax+eax*0x2]
  mov [esp+0x20],eax
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fild dword ptr [esp+0x20]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABEL3B14DB:
  cmp word ptr [esi+0x13E],0x02 
  jne LABEL3AF340
  cmp word ptr [esi+0x142],0x00 
  jne LABEL3AF340
  cmp word ptr [esi+0x140],0x00 
  jne LABEL3AF340

  fldz 
  push 0x03 
  fst dword ptr [esp+0x0000010C]
  lea ecx,[esp+0x0000010C]
  fld dword ptr [0x86782C] 
  push ecx
  fstp dword ptr [esp+0x00000114]
  push 0x01 
  mov ecx,esi
  fstp dword ptr [esp+0x0000011C]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push eax
  fadd qword ptr [0x85C5B0] 
  movsx eax,al
  fstp dword ptr [esp+0x20]
  lea edx,[eax+eax*0x04]
  fld dword ptr [esp+0x20]
  add edx,edx
  sub esp,0x08 
  add edx,edx
  mov [esp+0x28],edx
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x00000369
  call 0x46EB30
  jmp LABEL3ADCA2

  LABEL3ADCA2:
  fld dword ptr [0x85B870] 
  push ecx
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  LABEL3AF340:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

func satoriS_VISOR_0F
  mov dword ptr [esi+0x190],0x00000000 
  mov byte ptr [esi+0x7F4],0x01 
  pop esi
  pop ebx
  pop ecx
  ret 
end

;# 863 -> 873
func satoriS_VISOR_BULLET
  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x03 
  ja LABEL3BA984

  cmp eax,0x00
  je LABEL3C9822
  cmp eax,0x01
  je LABEL3C9822
  cmp eax,0x02
  je LABEL3C9A48
  cmp eax,0x03
  je LABEL3C9A79
  jmp LABEL3BA984

  LABEL3C9822:
  mov ebx,0x00000001 
  cmp [esi+0x36C],bx
  jg LABEL3C99C8

  mov ecx,[esi+0x398]
  movzx eax,word ptr [ecx+0x0000013C]
  xor edi,edi
  cmp ax,0x0258 
  jl LABEL3C9866
  cmp ax,0x02B1 
  jg LABEL3C9866

  cmp ax,0x026F
  jne LABEL3C99B7
  cmp [ecx+0x0000013E],di
  je LABEL3C99B7

  LABEL3C9866:
  mov eax,[esi+0x144]
  cdq 
  mov ebp,0x0000003C 
  idiv ebp
  test edx,edx
  jne LABEL3C987F

  ;# SOUND VISOR 1
  push 0x45
  ;push 0x0A
  call 0x464980
  LABEL3C987F:
  mov eax,[esi+0x398]
  mov al,[eax+0x00000104]
  mov [esi+0x104],al
  mov ecx,[esi+0x398]
  movsx edx,al
  mov [esp+0x18],edx
  fild dword ptr [esp+0x18]
  fmul dword ptr [esi+0x378]
  fadd dword ptr [ecx+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [ecx+0x000000F0]
  mov ecx,[esi+0x35C]
  fadd qword ptr [0x85BBF0] 
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [ecx+0x04]
  fadd dword ptr [esi+0x378]
  fstp dword ptr [esi+0x378]
  fld dword ptr [ecx+0x04]
  fsub qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [ecx+0x04]
  fldz 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jne LABEL3C98FF

  fst dword ptr [ecx+0x04]
  LABEL3C98FF:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000014 
  idiv ecx
  test edx,edx
  jne LABEL3C996B

  fstp dword ptr [esp+0x00000194]
  push 0x03 
  fld dword ptr [0x85BAE8] 
  lea eax,[esp+0x00000198]
  fstp dword ptr [esp+0x0000019C]
  push eax
  fld dword ptr [0x871538] 
  push ebx
  fstp dword ptr [esp+0x000001A8]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000369
  call edx
  jmp LABEL3C996D

  LABEL3C996B:
  fstp st0
  LABEL3C996D:
  push edi
  mov ecx,esi
  call 0x48CDE0
  cmp [esi+0x190],edi
  je LABEL3C999E

  add [esi+0x36E],bx
  movzx eax,word ptr [esi+0x36E]
  cmp ax,0x0007 
  jl LABEL3C999E

  mov [esi+0x36E],di
  mov [esi+0x190],edi
  LABEL3C999E:
  cmp byte ptr [esi+0x194],0x00 
  jle LABEL3C99B7

  cmp dword ptr [esi+0x144],0x000000B4 
  jl LABEL3BA984

  LABEL3C99B7:
  mov word ptr [esi+0x36C],0x0002 
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  LABEL3C99C8:
  fld dword ptr [esi+0x0F4]
  fld qword ptr [0x8581D8] 
  fmul st1,st0
  fxch st1
  fstp dword ptr [esi+0x0F4]
  fld dword ptr [esi+0x0F8]
  fmul st0,st1
  fstp dword ptr [esi+0x0F8]
  fmul dword ptr [esi+0x37C]
  fstp dword ptr [esi+0x37C]
  mov byte ptr [esi+0x194],0x00 
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85B978] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL3C9A1F:
  mov al,[esi+0x113]
  cmp al,0x06 
  jb LABEL3BA47F

  sub al,0x06 
  mov [esi+0x113],al
  mov al,0xFA
  add [esi+0x111],al
  add [esi+0x112],al
  jmp LABEL3BA984

  LABEL3C9A48:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [eax+0x04]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [eax+0x04]
  jmp LABEL3C9A1F

  LABEL3C9A79:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [eax+0x04]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [eax+0x04]
  mov al,[esi+0x113]
  cmp al,0x0F 
  jb LABEL3BA47F

  sub al,0x0F 
  mov [esi+0x113],al
  mov al,0xF1
  add [esi+0x111],al
  add [esi+0x112],al
  jmp LABEL3BA984


  LABEL3BA984:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL3CE949
  LABEL3BA47F:
  add dword ptr [esi+0x34C],0xFFFFFFFF 
  LABEL3CE949:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
end

func satoriS_VISOR_BULLET_0F

  mov eax,[esi+0x35C]
  fstp st1
  fstp st0
  fld dword ptr [eax+0x08]
  mov edi,[esi]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  cmp word ptr [esi+0x13E],0x00
  jne LABEL3CF86D

  ;fldz 
  ;movzx edx,byte ptr [esi+0x104]
  ;mov eax,[esi]
  ;fstp dword ptr [esp+0x38]
  ;fld dword ptr [0x85BC6C] 
  ;mov eax,[eax+0x44]
  ;push 0x03 
  ;fstp dword ptr [esp+0x40]
  ;fld dword ptr [0x8589F0] 
  ;lea ecx,[esp+0x3C]
  ;push ecx
  ;fstp dword ptr [esp+0x48]
  ;fld dword ptr [esi+0x0F0]
  ;push 0x01 
  ;push edx
  ;sub esp,0x08 
  ;mov ecx,esi
  ;mov byte ptr [esi+0x194],0x07 
  ;fstp dword ptr [esp+0x04]
  ;fld dword ptr [esi+0x0EC]
  ;fstp dword ptr [esp]
  ;push 0x00000369
  
  
  fldz 
  movzx edx,byte ptr [esi+0x104]
  mov eax,[esi]
  fstp dword ptr [esp+0x10]
  fld dword ptr [0x85BC6C] 
  mov eax,[eax+0x44]
  push 0x03 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x8589F0] 
  lea ecx,[esp+0x14]
  push ecx
  fstp dword ptr [esp+0x20]
  fld dword ptr [esi+0x0F0]
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  mov byte ptr [esi+0x194],0x07 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x00000369
  
  call eax
  LABEL3CF86D:
  pop edi
  pop esi
  ;pop ebp
  pop ebx
  add esp,0x14
  ret
end

005C1779 = satoriS_VISOR
005C177F = satoriS_VISOR_BULLET
005C1785 = satoriS_VISOR_BULLET_0F

;# 600 -> 602
func satoriS_MSPARK
  mov eax,0x5F
  mov ebx,0x0B
  mov ecx,0x23
  mov edx,0x32
  mov edi,0x12C
  mov ebp,0x08
  ;fstp st1
  mov ecx,esi
  ;fstp st0
  call 0x487CA0
  push 0x02 
  push 0x05 
  mov ecx,esi
  call 0x46B370
  mov edi,0x00000001 
  cmp [esi+0x13E],di
  jne LABELCA1F4

  mov eax,[esi+0x144]
  cmp eax,0x3C 
  jg LABELC3417

  cdq 
  mov ecx,0x0000000A 
  idiv ecx
  test edx,edx
  jne LABELCA1F4

  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  movsx edx,al
  imul edx,edx,0x64
  push 0xFFFFFFFF
  push eax
  sub esp,0x08 
  mov [esp+0x24],edx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fisub dword ptr [esp+0x24]
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push 0x7F 
  call 0x438CE0
  LABELCA1F4:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABELCA20A

  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x00 
  mov ecx,esi
  call edx
  LABELCA20A:
  cmp word ptr [esi+0x13E],0x00 
  jne LABELCA2A9
  cmp word ptr [esi+0x140],0x02 
  jne LABELCA2A9
  cmp word ptr [esi+0x142],0x00 
  jne LABELCA2A9

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85BC98] 
  push edi
  push eax
  movsx eax,al
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  imul eax,eax,0x17
  sub esp,0x08 
  mov [esp+0x24],eax
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fisub dword ptr [esp+0x24]
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABELCA2A9:
  cmp dword ptr [esi+0x144],0x00 
  jne LABELD0219
  cmp word ptr [esi+0x142],0x00 
  jne LABELD0219
  cmp word ptr [esi+0x140],0x00 
  jne LABELD0219
  cmp [esi+0x13E],di
  jne LABELD0219

  jmp HM
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C208] 
  push 0x00 
  push 0x00 
  push edi
  fstp dword ptr [esp+0x20]
  push eax
  fld dword ptr [esp+0x24]
  movsx eax,al
  sub esp,0x08 
  lea ecx,[eax+eax*0x04]
  shl ecx,0x04 
  fstp dword ptr [esp+0x04]
  mov [esp+0x2C],ecx
  fld dword ptr [esi+0x0EC]
  mov ecx,esi
  fisub dword ptr [esp+0x2C]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x00000350
  call 0x46EB30
  
  HM:
  ;# SOUND MASTERSPARK 1
  push 0x46
  mov ecx,esi
  call 0x464980
  fldz 
  fst dword ptr [esp+0x00000104]
  push 0x03 
  fst dword ptr [esp+0x0000010C]
  lea edx,[esp+0x00000108]
  fstp dword ptr [esp+0x00000110]
  push edx
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C1E8] 
  push edi
  push eax
  movsx eax,al
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  imul eax,eax,0x19
  sub esp,0x08 
  mov [esp+0x2C],eax
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x2C]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x00000354
  call 0x46EB30
  fld dword ptr [0x8589F0] 
  fstp dword ptr [esp+0x0000010C]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  movsx edx,al
  fadd qword ptr [0x85C1E8] 
  push 0x03 
  imul edx,edx,0x19
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  lea ecx,[esp+0x00000108]
  push ecx
  push edi
  push eax
  sub esp,0x08 
  mov [esp+0x2C],edx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x2C]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x00000354
  call 0x46EB30
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x0000010C]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  movsx edx,al
  fadd qword ptr [0x85C1E8] 
  push 0x03 
  imul edx,edx,0x19
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  lea ecx,[esp+0x00000108]
  push ecx
  push edi
  push eax
  sub esp,0x08 
  mov [esp+0x2C],edx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x2C]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x00000354
  call 0x46EB30
  LABELCA47A:
  LABELD0219:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABELC3417:
  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  jmp LABELCA47A
end

;# 850 -> 852
func satoriS_MSPARK_BULLET
  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x04 
  ja LABELD66C7

  cmp eax,0x00
  je LABELDC3B9
  cmp eax,0x01
  je LABELDC45C
  cmp eax,0x02
  je LABELDC4B6
  cmp eax,0x03
  je LABELDC523
  cmp eax,0x04
  je LABELDC560
  jmp LABELD66C7
    
  LABELDC3B9:
  push 0x00 
  call 0x48CDE0
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000003 
  idiv ecx
  test edx,edx
  jne LABELDC3DF

  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],edx
  LABELDC3DF:
  movsx edx,byte ptr [esi+0x104]
  mov eax,[esi+0x398]
  imul edx,edx,0x19
  mov [esp+0x10],edx
  fild dword ptr [esp+0x10]
  fadd dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x000000F0]
  fadd qword ptr [0x85C1E8] 
  fstp dword ptr [esi+0x0F0]
  cmp word ptr [eax+0x0000013C],0x025A
  jne LABELDC42A

  cmp word ptr [eax+0x0000013E],0x01 
  je LABELDC433

  LABELDC42A:
  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  LABELDC433:
  cmp dword ptr [esi+0x144],0x3C 
  jle LABELDC445

  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  LABELDC445:
  fld dword ptr [esi+0x120]
  fsub qword ptr [0x858C08] 
  fstp dword ptr [esi+0x120]
  jmp LABELD66C7

  LABELDC45C:
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x8579D8] 
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x857F78] 
  fstp dword ptr [esi+0x11C]
  cmp dword ptr [esi+0x144],0x28 
  je LABELD55A0

  movsx eax,byte ptr [esi+0x104]
  mov ecx,eax
  shl ecx,0x04 
  sub ecx,eax
  add ecx,ecx
  mov [esp+0x10],ecx
  fild dword ptr [esp+0x10]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  jmp LABELD66C7

  LABELDC4B6:
  movsx edx,byte ptr [esi+0x104]
  mov eax,[esi+0x398]
  imul edx,edx,0x19
  mov [esp+0x24],edx
  fild dword ptr [esp+0x24]
  fadd dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x000000F0]
  fadd qword ptr [0x85C1E8] 
  fstp dword ptr [esi+0x0F0]
  cmp word ptr [eax+0x0000013C],0x025A
  jne LABELDC501

  cmp word ptr [eax+0x0000013E],0x01 
  je LABELDC508

  LABELDC501:
  mov eax,[esi]
  mov edx,[eax+0x14]
  call edx
  LABELDC508:
  cmp dword ptr [esi+0x144],0x28 
  jng LABELD66C7

  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  jmp LABELD66C7

  LABELDC523:
  fld dword ptr [esi+0x120]
  fld qword ptr [0x858C08] 
  fsub st1,st0
  fxch st1
  fstp dword ptr [esi+0x120]
  fsubr dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x11C]
  mov al,[esi+0x113]
  cmp al,0x0A 
  jbe LABELD55A0

  sub al,0x0A 
  mov [esi+0x113],al
  jmp LABELD66C7

  LABELDC560:
  movsx ecx,byte ptr [esi+0x104]
  mov eax,[esi+0x398]
  imul ecx,ecx,0x19
  mov [esp+0x24],ecx
  fild dword ptr [esp+0x24]
  fadd dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x000000F0]
  fadd qword ptr [0x85C1E8] 
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x120]
  fadd qword ptr [0x867840] 
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esi+0x11C]
  mov al,[esi+0x113]
  cmp al,0x0F 
  jbe LABELD55A0

  sub al,0x0F 
  mov [esi+0x113],al
  jmp LABELD66C7

  LABELD66C7:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABELE3AE0
  LABELD55A0:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABELE3AE0:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
end

func satoriS_MSPARK_BULLET_0F
  fstp st1
  fstp st0
  mov byte ptr [esi+0x194],0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esi+0x11C]
  fld dword ptr [0x85B954] 
  mov eax,[esi+0x35C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [eax+0x08]
  mov edi,[esi]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  cmp word ptr [esi+0x13E],0x02 
  jne LABELE464D
  fld dword ptr [0x8589F0] 
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABELE464D:
  pop edi
  pop esi
  ;pop ebp
  pop ebx
  add esp,0x14
  ret 
end

005B329C = satoriS_MSPARK
005C1BD9 = satoriS_MSPARK_BULLET
005C88FE = satoriS_MSPARK_BULLET_0F

;# 603 -> 609
func satoriS_CEILING
  mov eax,0x66
  mov ebx,0x168
  mov ecx,0x2C
  mov edi,0x00
  mov ebp,0x12C
  
  mov ecx,esi
  call 0x487CA0
  push 0x02 
  push 0x05 
  mov ecx,esi
  call 0x46B370
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0001 
  jne LABEL1510A0

  cmp dword ptr [esi+0x144],0x78 
  jg LABEL14BD73

  LABEL1510A0:
  cmp ax,0x0002 
  jne LABEL1510B3

  cmp dword ptr [esi+0x144],0x3C 
  jg LABEL14BD73

  LABEL1510B3:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1510C8

  mov eax,[esi]
  mov edx,[eax+0x08]
  push edi
  mov ecx,esi
  call edx
  LABEL1510C8:
  cmp [esi+0x144],edi
  jne LABEL1510F2
  cmp [esi+0x142],di
  jne LABEL1510F2
  cmp [esi+0x140],di
  jne LABEL1510F2
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL1510F2

  mov [esi+0x144],edi
  LABEL1510F2:
  cmp [esi+0x13E],di
  jne LABEL153C5C
  cmp word ptr [esi+0x140],0x08 
  jne LABEL153C5C
  cmp [esi+0x142],di
  jne LABEL153C5C

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85B8F8] 
  push 0x01 
  push eax
  movsx eax,al
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  lea eax,[eax+eax*0x4]
  add eax,eax
  sub esp,0x08 
  add eax,eax
  mov [esp+0x20],eax
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fild dword ptr [esp+0x20]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  fldz 
  fst dword ptr [esp+0x00000444]
  push 0x03 
  fst dword ptr [esp+0x0000044C]
  lea ecx,[esp+0x00000448]
  fstp dword ptr [esp+0x00000450]
  push ecx
  fld dword ptr [esi+0x0F0]
  movzx edx,byte ptr [esi+0x104]
  fadd qword ptr [0x85B8F8] 
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fadd qword ptr [0x8581F8] 
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000035B
  call 0x46EB30
  push 0x3C 
  push edi
  push edi
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  ;# SOUND CEILING 1
  push 0x43
  mov ecx,esi
  call 0x464980
  LABEL153C5C:
  LABEL151208:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL14BD73:
  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  jmp LABEL151208
end

;# 853 -> 859
func satoriS_CEILING_BULLET
  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x07 
  ja LABEL1595E3

  cmp eax,0x00
  je LABEL1619D8
  cmp eax,0x01
  je LABEL161D41
  cmp eax,0x02
  je LABEL162042
  cmp eax,0x03
  je LABEL1620C4
  cmp eax,0x04
  je LABEL16210D
  cmp eax,0x05
  je LABEL1621EB
  cmp eax,0x06
  je LABEL162249
  cmp eax,0x07
  je LABEL162353
  jmp LABEL1595E3

  LABEL1619D8:
  mov eax,[esi+0x398]
  movsx ecx,byte ptr [eax+0x00000104]
  lea edx,[ecx+ecx*0x4]
  add edx,edx
  add edx,edx
  mov [esp+0x10],edx
  mov ecx,0x00000005 
  fild dword ptr [esp+0x10]
  fadd dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  mov eax,[esi+0x144]
  cdq 
  idiv ecx
  test edx,edx
  jne LABEL161A8E
  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161A35

  fadd dword ptr [0x871554] 
  LABEL161A35:
  fstp dword ptr [esp+0x000001AC]
  push 0x03 
  fld dword ptr [0x858830] 
  lea eax,[esp+0x000001B0]
  fstp dword ptr [esp+0x000001B4]
  push eax
  fld dword ptr [0x85B870] 
  push 0x01 
  fstp dword ptr [esp+0x000001C0]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035B
  call edx
  LABEL161A8E:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000003 
  idiv ecx
  test edx,edx
  jne LABEL161B89

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x24],eax
  fild dword ptr [esp+0x24]
  jnl LABEL161AC0

  fadd dword ptr [0x871554] 
  LABEL161AC0:
  push 0x000000C8 
  fstp dword ptr [esp+0x000000C0]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161AE6

  fadd dword ptr [0x871554] 
  LABEL161AE6:
  fadd qword ptr [0x858EF0] 
  push 0x03 
  lea edx,[esp+0x000000BC]
  push edx
  fstp dword ptr [esp+0x000000C4]
  push 0x01 
  fld dword ptr [0x85BCA4] 
  fstp dword ptr [esp+0x000000CC]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esp+0x000000C4]
  mov edi,[esi]
  push eax
  fchs 
  push ecx
  add edi,0x48 
  fstp dword ptr [esp]
  call 0x409580
  fmul dword ptr [esp+0x000000D0]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esp+0x24]
  fld dword ptr [esp+0x24]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x000000D0]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  movsx ecx,byte ptr [esi+0x104]
  fmul dword ptr [esp+0x000000D4]
  mov edx,[edi]
  mov [esp+0x28],ecx
  mov ecx,esi
  fild dword ptr [esp+0x28]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000035B
  call edx
  LABEL161B89:
  fld dword ptr [esi+0x0F0]
  mov ecx,[esi+0x398]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esi+0x0F0]
  movzx eax,word ptr [ecx+0x0000013C]
  cmp ax,0x0261
  je LABEL161BB8

  cmp ax,0x026F
  jne LABEL15917A

  LABEL161BB8:
  cmp word ptr [ecx+0x0000013E],0x01 
  jne LABEL1595E3

  ;# SOUND CEILING 2
  push 0x44
  call 0x464980
  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  fldz 
  mov byte ptr [esi+0x194],0x63 
  fstp dword ptr [esp+0x18]
  mov dword ptr [esi+0x190],0x00000000 
  lea ecx,[ecx+0x00]
  LABEL161BF0:
  push 0x28 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161C0C

  fadd dword ptr [0x871554] 
  LABEL161C0C:
  fld dword ptr [esp+0x18]
  push 0x03 
  fmul qword ptr [0x85B900] 
  lea ecx,[esp+0x0000011C]
  push ecx
  push 0x01 
  faddp 
  mov ecx,esi
  fstp dword ptr [esp+0x00000124]
  fldz 
  fstp dword ptr [esp+0x00000128]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x0000012C]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x48]
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035B
  call eax
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x871538] 
  fcomp dword ptr [esp+0x18]
  fnstsw ax
  test ah,0x41 
  je LABEL161BF0

  fldz 
  fstp dword ptr [esp+0x18]
  LABEL161C96:
  push 0x2D 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161CB2

  fadd dword ptr [0x871554] 
  LABEL161CB2:
  fld dword ptr [esp+0x18]
  push 0x03 
  fmul qword ptr [0x858E98] 
  lea eax,[esp+0x0000011C]
  push eax
  push 0x01 
  faddp 
  fadd qword ptr [0x857F98] 
  fstp dword ptr [esp+0x00000124]
  fld1 
  fstp dword ptr [esp+0x00000128]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x0000012C]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x48]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035B
  call edx
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x867860] 
  fcomp dword ptr [esp+0x18]
  fnstsw ax
  test ah,0x41 
  je LABEL161C96

  jmp LABEL1595E3

  LABEL161D41:
  xor ebp,ebp
  cmp [esi+0x36C],bp
  mov ebx,0x00000001 
  jne LABEL162029

  fld dword ptr [esi+0x378]
  fld1 
  fld st0
  fsubrp st2
  fxch st1
  fmul qword ptr [0x859B00] 
  faddp 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x378]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esi+0x378]
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85CDF8] 
  call 0x820230
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85BC28] 
  mov edi,eax
  call 0x820230
  push ebp
  push ebp
  push ebp
  push edi
  push eax
  push eax
  push edi
  mov ecx,esi
  call 0x4B0E40
  push ebp
  mov ecx,esi
  call 0x48CDE0
  mov eax,[esi+0x144]
  and eax,0x80000001 
  jns LABEL161DDD

  dec eax
  or eax,0xFFFFFFFE
  inc eax
  LABEL161DDD:
  jne LABEL161E73

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x24],eax
  fild dword ptr [esp+0x24]
  jnl LABEL161DFF

  fadd dword ptr [0x871554] 
  LABEL161DFF:
  push 0x28 
  fstp dword ptr [esp+0x000001CC]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161E22

  fadd dword ptr [0x871554] 
  LABEL161E22:
  fadd qword ptr [0x8581F8] 
  push 0x03 
  lea eax,[esp+0x000001C8]
  push eax
  fstp dword ptr [esp+0x000001D0]
  push ebx
  fld dword ptr [0x8589F0] 
  fstp dword ptr [esp+0x000001D8]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035B
  call edx
  LABEL161E73:
  mov eax,[esi+0x144]
  and eax,0x80000001 
  jns LABEL161E85

  dec eax
  or eax,0xFFFFFFFE
  inc eax
  LABEL161E85:
  jne LABEL161F1B

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x24],eax
  fild dword ptr [esp+0x24]
  jnl LABEL161EA7

  fadd dword ptr [0x871554] 
  LABEL161EA7:
  push 0x0F 
  fstp dword ptr [esp+0x000001E4]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL161ECA

  fadd dword ptr [0x871554] 
  LABEL161ECA:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x000001E0]
  push eax
  fstp dword ptr [esp+0x000001E8]
  push ebx
  fld dword ptr [0x85882C] 
  fstp dword ptr [esp+0x000001F0]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035B
  call edx
  LABEL161F1B:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x0000000F 
  idiv ecx
  test edx,edx
  jne LABEL161F85

  fldz 
  push 0x03 
  fst dword ptr [esp+0x000001F8]
  lea eax,[esp+0x000001F8]
  fstp dword ptr [esp+0x000001FC]
  push eax
  fld dword ptr [0x871538] 
  push ebx
  fstp dword ptr [esp+0x00000208]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035B
  call edx
  LABEL161F85:
  cmp [esi+0x190],ebp
  je LABEL161FAE

  add [esi+0x36E],bx
  movzx eax,word ptr [esi+0x36E]
  cmp ax,0x0003 
  jl LABEL161FAE

  mov [esi+0x36E],bp
  mov [esi+0x190],ebp
  LABEL161FAE:
  mov al,[esi+0x113]
  mov cl,0xC4
  cmp al,cl
  jb LABEL161FD2

  sub al,0x08 
  mov [esi+0x113],al
  mov al,0xF8
  add [esi+0x111],al
  add [esi+0x110],al
  jmp LABEL161FE4

  LABEL161FD2:
  mov [esi+0x113],cl
  mov [esi+0x111],cl
  mov [esi+0x110],cl
  LABEL161FE4:
  mov eax,[esi+0x398]
  cmp word ptr [eax+0x0000013C],0x0261
  jne LABEL162022

  cmp [eax+0x0000013E],bx
  jne LABEL162022

  movsx ecx,byte ptr [eax+0x00000104]
  lea ecx,[ecx+ecx*0x4]
  add ecx,ecx
  add ecx,ecx
  mov [esp+0x10],ecx
  fild dword ptr [esp+0x10]
  fadd dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  jmp LABEL162029

  LABEL162022:
  mov [esi+0x36C],bx
  LABEL162029:
  cmp [esi+0x36C],bx
  jne LABEL1595E3

  mov byte ptr [esi+0x194],0x00 
  jmp LABEL1620E4

  LABEL162042:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x867840] 
  fstp dword ptr [esi+0x11C]
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x85BA10] 
  fstp dword ptr [esi+0x120]
  cmp dword ptr [esi+0x144],0x0F 
  jl LABEL1620B0

  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x111],bl
  add [esi+0x110],bl
  LABEL1620B0:
  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x10],edx
  fild dword ptr [esp+0x10]
  jmp LABEL1595BF

  LABEL1620C4:
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL1620E4:
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x110],bl
  add [esi+0x111],bl
  jmp LABEL1595E3

  LABEL16210D:
  fld dword ptr [esi+0x380]
  mov ecx,0x00000001 
  fadd dword ptr [esi+0x12C]
  fstp dword ptr [esi+0x12C]
  cmp word ptr [esi+0x36C],0x00 
  jne LABEL162191

  fld dword ptr [esi+0x37C]
  fld1 
  fsubrp st1
  fmul dword ptr [esi+0x378]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x37C]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [esi+0x37C]
  cmp dword ptr [esi+0x39C],0x00 
  je LABEL16218A

  mov eax,[esi+0x39C]
  fld dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x000000F0]
  fstp dword ptr [esi+0x0F0]
  cmp [eax+0x0000036C],cx
  jne LABEL162191

  LABEL16218A:
  mov [esi+0x36C],cx
  LABEL162191:
  cmp [esi+0x36C],cx
  jne LABEL1595E3

  fld dword ptr [esi+0x380]
  fmul qword ptr [0x85B978] 
  fstp dword ptr [esi+0x380]
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x85A298] 
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x111],bl
  add [esi+0x110],bl
  jmp LABEL1595E3

  LABEL1621EB:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  cmp dword ptr [esi+0x144],0x0F 
  jl LABEL162235

  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x111],bl
  add [esi+0x110],bl
  LABEL162235:
  movsx eax,byte ptr [esi+0x104]
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jmp LABEL1595BF

  LABEL162249:
  cmp dword ptr [esi+0x39C],0x00 
  je LABEL15917A

  mov ebx,[esi+0x35C]
  mov ecx,ebx
  fld dword ptr [ecx]
  push ecx
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  fmul dword ptr [ebx+04]
  movsx edx,byte ptr [esi+0x104]
  mov eax,[esi+0x39C]
  mov edi,[esi+0x35C]
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  fmulp st1
  fadd dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [ebx]
  fchs 
  fstp dword ptr [esp]
  call 0x409580
  fmul dword ptr [edi+0x04]
  mov ecx,[esi+0x39C]
  add esp,0x04 
  fadd dword ptr [ecx+0x000000F0]
  mov ecx,0x00000001 
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [edi+0x04]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [edi+0x04]
  cmp word ptr [esi+0x36C],0x00 
  jne LABEL16231D

  mov al,[esi+0x113]
  cmp al,0xEB
  ja LABEL1622F8

  add al,0x14 
  mov [esi+0x113],al
  add byte ptr [esi+0x111],0x14 
  add byte ptr [esi+0x110],0x14 
  jmp LABEL16230D

  LABEL1622F8:
  mov byte ptr [esi+0x113],0xFF
  mov byte ptr [esi+0x111],0xFF
  mov byte ptr [esi+0x110],0xFF
  LABEL16230D:
  cmp dword ptr [esi+0x144],0x1E 
  jl LABEL16231D

  mov [esi+0x36C],cx
  LABEL16231D:
  cmp [esi+0x36C],cx
  jne LABEL1595E3

  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL15917A

  sub al,0x05 
  mov [esi+0x113],al
  add byte ptr [esi+0x111],0xFB
  add byte ptr [esi+0x110],0xFB
  jmp LABEL1595E3

  LABEL162353:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [eax+0x04]
  cmp dword ptr [esi+0x144],0x0F 
  jl LABEL1623AF

  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL15917A

  sub al,0x0A 
  mov bl,0xF6
  mov [esi+0x113],al
  add [esi+0x111],bl
  add [esi+0x110],bl
  LABEL1623AF:
  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x10],edx
  fild dword ptr [esp+0x10]
  jmp LABEL1595BF

  LABEL1595E3:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1685B4
  LABEL15917A:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL1685B4:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 

  LABEL1595BF:
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  jmp LABEL1595E3
end

func satoriS_CEILING_BULLET_0F
  mov eax,[esi+0x35C]
  fstp st1
  fstp st0
  fld dword ptr [eax]
  mov edi,[esi]
  fstp dword ptr [esi+0x12C]
  mov word ptr [esi+0x360],0x0001 
  fld dword ptr [eax+0x08]
  call 0x820230
  mov ecx,esi
  push eax
  mov eax,[edi+0x0C]
  call eax
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x00
  jne LABEL16AD3D

  fld1 
  fstp dword ptr [esi+0x378]
  LABEL16AD3D:
  cmp ax,0x0004 
  jne LABEL16AE05

  fldz 
  mov ecx,[esi+0x35C]
  fst dword ptr [esi+0x120]
  fcomp dword ptr [ecx+0x04]
  fnstsw ax
  test ah,0x44 
  jp LABEL16ADA9

  fld dword ptr [0x8589F0] 
  push 0x05 
  fstp dword ptr [esi+0x380]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL16AD87

  fadd dword ptr [0x871554] 
  LABEL16AD87:
  fmul qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esi+0x378]
  fld1 
  fstp dword ptr [esi+0x37C]
  LABEL16ADA9:
  fld1 
  mov edx,[esi+0x35C]
  fcomp dword ptr [edx+0x04]
  fnstsw ax
  test ah,0x44 
  jp LABEL16AE05

  fld dword ptr [0x85BC70] 
  push 0x02 
  fstp dword ptr [esi+0x380]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL16ADE3

  fadd dword ptr [0x871554] 
  LABEL16ADE3:
  fmul qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fadd qword ptr [0x857F78] 
  fstp dword ptr [esi+0x378]
  fld1 
  fstp dword ptr [esi+0x37C]
  LABEL16AE05:
  cmp word ptr [esi+0x13E],0x06 
  jne LABEL16AE53

  push 0x0A 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL16AE2B

  fadd dword ptr [0x871554] 
  LABEL16AE2B:
  fmul qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL16AE53:
  cmp word ptr [esi+0x13E],0x07 
  jne LABEL16BEFA

  push 0x7D 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL16AE7D

  fadd dword ptr [0x871554] 
  LABEL16AE7D:
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fadd qword ptr [0x858820] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL16BEFA:
  pop edi
  pop esi
  ;pop ebp
  pop ebx
  add esp,0x14
  ret 
end

005B4897 = satoriS_CEILING
005C454F = satoriS_CEILING_BULLET
005C99A3 = satoriS_CEILING_BULLET_0F

;#609 -> 624
func satoriS_THORNS
  mov eax,0x58
  mov ebx,0x00
  mov edx,0x22
  mov edi,0x01
  mov ebp,0x03
  
  push 0x02 
  push 0x02 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x487CA0
  cmp [esi+0x13E],di
  jne LABEL2975EC

  cmp dword ptr [esi+0x144],0x14 
  jnl LABEL28E6F9

  LABEL2975EC:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL297601

  mov edx,[esi]
  mov eax,[edx+0x08]
  push ebx
  mov ecx,esi
  call eax
  LABEL297601:
  cmp [esi+0x144],ebx
  jne LABEL2976E9
  cmp [esi+0x142],bx
  jne LABEL2976E9
  cmp [esi+0x140],bx
  jne LABEL2976E9
  cmp [esi+0x13E],di
  jne LABEL2976E9

  fldz 
  push ebp
  fst dword ptr [esp+0x00000280]
  lea ecx,[esp+0x00000280]
  fstp dword ptr [esp+0x00000284]
  push ecx
  fld1 
  push 0xFFFFFFFF
  fstp dword ptr [esp+0x00000290]
  mov ecx,esi
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x857B20] 
  movzx edx,byte ptr [esi+0x104]
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call 0x46EB30
  fld dword ptr [0x8589F0] 
  fstp dword ptr [esp+0x00000284]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebp
  fadd qword ptr [0x857B20] 
  lea eax,[esp+0x00000280]
  push eax
  push 0xFFFFFFFF
  fstp dword ptr [esp+0x1C]
  push ecx
  fld dword ptr [esp+0x20]
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call 0x46EB30
  ;# SOUND EVILZONE 1
  push 0x3F
  mov ecx,esi
  call 0x464980
  LABEL2976E9:
  cmp [esi+0x13E],bx
  jne LABEL299E45
  cmp [esi+0x142],bx
  jne LABEL299E45
  cmp [esi+0x140],bp
  jne LABEL299E45

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x871510] 
  push edi
  push eax
  fstp dword ptr [esp+0x18]
  movsx eax,al
  fld dword ptr [esp+0x18]
  lea edx,[eax+eax*0x4]
  sub esp,0x08 
  add edx,edx
  add edx,edx
  fstp dword ptr [esp+0x04]
  mov [esp+0x20],edx
  fld dword ptr [esi+0x0EC]
  mov ecx,esi
  fisub dword ptr [esp+0x20]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push ebx
  push ebx
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0

  LABEL299E45:
  LABEL29778B:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL28E6F9:
  mov edx,[esi]
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  jmp LABEL29778B
end

;# 859 -> 874
func satoriS_THORNS_BULLET
  mov ecx,esi
  mov ecx,[esi+0x398]
  xor ebp,ebp
  cmp [ecx+0x00000184],bp
  jg LABEL2A4C98

  cmp [esi+0x36C],bp
  jne LABEL2A4C98

  mov edi,0x00000001 
  mov [esi+0x36C],di
  jmp LABEL2A4C9D

  LABEL2A4C98:
  mov edi,0x00000001 
  LABEL2A4C9D:
  movsx eax,word ptr [esi+0x13E]
  add eax,0xFFFFFFFF
  cmp eax,0x08 
  ja LABEL2A4D54

  cmp eax,0xFFFFFFFF
  je LABEL2A4D54
  cmp eax,0x00
  je TABLE01
  cmp eax,0x01
  je TABLE02
  cmp eax,0x02
  je TABLE03
  cmp eax,0x03
  je TABLE04
  cmp eax,0x04
  je TABLE05
  cmp eax,0x05
  je TABLE06
  cmp eax,0x06
  je TABLE07
  cmp eax,0x07
  je TABLE08
  cmp eax,0x08
  je TABLE09
  jmp TABLEDEF

  TABLE01:
  mov edx,[esi+0x398]
  cmp word ptr [edx+0x0000013C],0x0270
  je LABEL2A4CD8

  cmp [esi+0x36C],bp
  jne LABEL2A4CD8

  mov [esi+0x36C],di
  LABEL2A4CD8:
  cmp [esi+0x36C],di
  jne LABEL2A4D27

  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL29EBDB

  sub al,0x0A 
  mov [esi+0x113],al
  mov al,0xF6
  add [esi+0x112],al
  add [esi+0x111],al
  jmp LABEL2A4D54

  LABEL2A4D27:
  push 0x00000113 
  push ebp
  mov ecx,esi
  call 0x48CF60
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  LABEL2A4D48:
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  TABLEDEF:
  LABEL2A4D54:
  mov ecx,esi
  call 0x438C60
  or ebx,0xFFFFFFFF
  test al,al
  je LABEL2A4D68

  add [esi+0x34C],ebx
  LABEL2A4D68:
  cmp [esi+0x144],ebp
  jne LABEL2A869B
  cmp [esi+0x142],bp
  jne LABEL2A4D95
  cmp [esi+0x140],bp
  jne LABEL2A4D95
  cmp [esi+0x13E],di
  jne LABEL2A4D95

  add [esi+0x34C],ebx
  LABEL2A4D95:
  cmp [esi+0x144],ebp
  jne LABEL2A869B
  cmp [esi+0x142],bp
  jne LABEL2A4DC3
  cmp [esi+0x140],bp
  jne LABEL2A4DC3
  cmp word ptr [esi+0x13E],0x02 
  jne LABEL2A4DC3
  add [esi+0x34C],ebx
  LABEL2A4DC3:
  cmp [esi+0x144],ebp
  jne LABEL2A869B
  cmp [esi+0x142],bp
  jne LABEL2A869B
  cmp [esi+0x140],bp
  jne LABEL2A869B
  cmp word ptr [esi+0x13E],0x09 
  jne LABEL2A869B

  add [esi+0x34C],ebx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 

  TABLE02:
  push 0x64 
  push ebp
  mov ecx,esi
  call 0x48CF60
  add [esi+0x370],di
  movzx eax,word ptr [esi+0x370]
  mov ebx,0x00000002 
  cmp [esi+0x36C],bx
  jnl LABEL2A4E82
  cmp ax,0x012C 
  jnl LABEL2A4E74
  mov eax,[esi+0x398]
  cmp [eax+0x00000184],bp
  jle LABEL2A4E74
  mov ecx,[esi+0x170]
  cmp [ecx+0x00000184],bp
  jle LABEL2A4E74
  movzx ecx,word ptr [eax+0x0000013C]
  cmp cx,0x0258 
  jl LABEL2A4E82
  cmp cx,0x02B1 
  jg LABEL2A4E82
  cmp cx,0x0270
  jne LABEL2A4E74
  cmp [eax+0x0000013E],di
  jnl LABEL2A4E82

  LABEL2A4E74:
  mov [esi+0x36C],bx
  mov byte ptr [esi+0x194],0x00 
  LABEL2A4E82:
  cmp [esi+0x36C],bp
  jne LABEL2A5001

  mov edx,[esi+0x144]
  and edx,0x80000003 
  jns LABEL2A4EA2

  dec edx
  or edx,0xFFFFFFFC
  inc edx
  LABEL2A4EA2:
  mov edi,0x0000000F 
  jne LABEL2A4FA0

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL2A4EC9

  fadd dword ptr [0x871554] 
  LABEL2A4EC9:
  push 0x4B 
  fstp dword ptr [esi+0x12C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x20],eax
  fild dword ptr [esp+0x20]
  jnl LABEL2A4EE8

  fadd dword ptr [0x871554] 
  LABEL2A4EE8:
  fmul qword ptr [0x858C08] 
  push 0x00000168 
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fadd qword ptr [0x858820] 
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  call 0x4099F0
  test eax,eax
  mov [esp+0x24],eax
  fild dword ptr [esp+0x24]
  jnl LABEL2A4F2C

  fadd dword ptr [0x871554] 
  LABEL2A4F2C:
  push edi
  fstp dword ptr [esp+0x000001E4]
  call 0x4099F0
  add esp,0x10 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2A4F4E

  fadd dword ptr [0x871554] 
  LABEL2A4F4E:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea ecx,[esp+0x000001D8]
  push ecx
  fstp dword ptr [esp+0x000001E0]
  push 0x01 
  fld dword ptr [0x867860] 
  mov ecx,esi
  fstp dword ptr [esp+0x000001E8]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call eax
  LABEL2A4FA0:
  cmp dword ptr [esi+0x190],0x06 
  jne LABEL2A4FBE
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],ebp
  add word ptr [esi+0x36E],0x01 
  LABEL2A4FBE:
  cmp [esi+0x190],ebp
  je LABEL2A4FCD

  add [esi+0x36E],di
  LABEL2A4FCD:
  cmp [esi+0x36E],di
  jl LABEL2A4FFC

  mov [esi+0x36E],bp
  mov byte ptr [esi+0x194],0x00 
  mov word ptr [esi+0x36C],0x0001 
  mov [esi+0x372],bp
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  LABEL2A4FFC:
  mov edi,0x00000001 
  LABEL2A5001:
  cmp [esi+0x36C],di
  jne LABEL2A5163

  fld dword ptr [esi+0x11C]
  fsub qword ptr [0x867840] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fcomp dword ptr [0x8677A8] 
  fnstsw ax
  test ah,0x05 
  jp LABEL2A503D

  fld1 
  fstp dword ptr [esi+0x11C]
  LABEL2A503D:
  fld dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov byte ptr [esi+0x194],0x00 
  add [esi+0x372],di
  movzx eax,word ptr [esi+0x372]
  cmp ax,0x0028 
  jl LABEL2A5163

  ;# SOUND EVILZONE 2 what
  mov ecx,[esi+0x398]
  push 0x40
  call 0x464980
  fldz 
  mov [esi+0x372],bp
  mov [esi+0x36C],bp
  mov [esi+0x36E],bp
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],ebp
  fst dword ptr [esp+0x60]
  fstp dword ptr [esp+0x64]
  push 0x03 
  fld dword ptr [0x85BCA4] 
  lea eax,[esp+0x64]
  fstp dword ptr [esp+0x6C]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x48]
  push eax
  push edi
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call edx
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x68]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x48]
  push 0x03 
  lea ecx,[esp+0x64]
  push ecx
  push edi
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call eax
  fld dword ptr [0x85BC44] 
  fstp dword ptr [esp+0x68]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x48]
  push 0x03 
  lea eax,[esp+0x64]
  push eax
  push 0xFFFFFFFF
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call edx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  LABEL2A5163:
  cmp [esi+0x36C],bx
  jne LABEL2A4D54

  mov byte ptr [esi+0x194],0x00 
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  jmp LABEL2A55E8

  TABLE03:
  cmp [esi+0x36C],di
  jg LABEL2A5293
  cmp [esi+0x39C],ebp
  je LABEL2A5293

  mov eax,[esi+0x39C]
  mov ebx,0x00000002 
  cmp [eax+0x0000036C],bx
  jne LABEL2A51CC

  mov [esi+0x36C],bx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  LABEL2A51CC:
  fld dword ptr [eax+0x000000EC]
  mov ecx,esi
  fstp dword ptr [esi+0x0EC]
  call 0x4397F0
  mov ecx,[esi+0x39C]
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [0x85BA6C] 
  fcomp dword ptr [ecx+0x000000F0]
  fnstsw ax
  test ah,0x41 
  jp LABEL2A525E

  fld1 
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [ecx+0x000000F0]
  fld qword ptr [0x85E558] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL2A5253

  fsub dword ptr [ecx+0x000000F0]
  fnstcw [esp+0x10]
  movzx eax,word ptr [esp+0x10]
  or eax,0x00000C00 
  mov [esp+0x14],eax
  fldcw [esp+0x14]
  fistp dword ptr [esp+0x14]
  mov al,[esp+0x14]
  mov [esi+0x113],al
  fldcw [esp+0x10]
  jmp LABEL2A5298

  LABEL2A5253:
  fstp st0
  mov byte ptr [esi+0x113],0x00 
  jmp LABEL2A5298

  LABEL2A525E:
  fld dword ptr [ecx+0x000000F0]
  fld qword ptr [0x85BA58] 
  fld st0
  fsubrp st2
  fdivp st1
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov byte ptr [esi+0x113],0xFF
  jmp LABEL2A5298

  LABEL2A5293:
  mov ebx,0x00000002 
  LABEL2A5298:
  cmp [esi+0x36C],bx
  jne LABEL2A4D54

  jmp LABEL2A55F4

  TABLE04:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fmul qword ptr [0x85B978] 
  fstp dword ptr [eax+0x04]
  fld dword ptr [0x85BAB8] 
  fcomp dword ptr [esi+0x0EC]
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBDB

  fld dword ptr [esi+0x0EC]
  fld qword ptr [0x85BAC0] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  je LABEL29EBD9

  fld dword ptr [0x85C458] 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBD9

  fld dword ptr [esi+0x0F0]
  fcompp 
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBDB

  cmp dword ptr [esi+0x144],0x0A 
  jl LABEL2A5362
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL29EBDB

  sub al,0x0A 
  mov [esi+0x113],al
  mov al,0xF6
  add [esi+0x111],al
  add [esi+0x112],al
  LABEL2A5362:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x14],ecx
  fild dword ptr [esp+0x14]
  LABEL2A5371:
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  jmp LABEL2A4D54

  TABLE05:
  cmp [esi+0x39C],ebp
  je LABEL29EBDB

  mov eax,[esi+0x39C]
  cmp [eax+0x0000036C],bp
  jne LABEL29EBDB

  fld dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x000000F0]
  fstp dword ptr [esi+0x0F0]
  cmp [esi+0x142],bp
  jne LABEL2A4D54

  cmp word ptr [esi+0x140],0x04 
  jne LABEL2A4D54

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2A540B

  fadd dword ptr [0x871554] 
  LABEL2A540B:
  fstp dword ptr [esi+0x12C]
  jmp LABEL2A4D54

  TABLE06:
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x85B938] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  cmp dword ptr [esi+0x144],0x0A 
  jl LABEL2A4D54

  jmp LABEL2A55F4

  TABLE07:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [0x85BAB8] 
  fcomp dword ptr [esi+0x0EC]
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBDB

  fld dword ptr [esi+0x0EC]
  fld qword ptr [0x85BAC0] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  je LABEL29EBD9

  fld dword ptr [0x85C458] 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBD9

  fld dword ptr [esi+0x0F0]
  fcompp 
  fnstsw ax
  test ah,0x05 
  jnp LABEL29EBDB

  cmp [esi+0x190],ebp
  jne LABEL2A54F5

  fldz 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x01 
  je LABEL2A54F5

  cmp [esi+0x36C],di
  je LABEL2A54F5

  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  jmp LABEL2A5371

  LABEL2A54F5:
  push 0x00000168 
  call 0x4099F0
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  add esp,0x04 
  test eax,eax
  jnl LABEL2A5514

  fadd dword ptr [0x871554] 
  LABEL2A5514:
  mov eax,[esi]
  fstp dword ptr [esi+0x12C]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  jmp LABEL29ECA0

  TABLE08:
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  jmp LABEL2A4D48

  TABLE09:
  cmp [esi+0x39C],ebp
  je LABEL2A5570

  mov eax,[esi+0x39C]
  fld dword ptr [eax+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x000000F0]
  fstp dword ptr [esi+0x0F0]
  cmp [eax+0x0000036C],bp
  je LABEL2A5577

  LABEL2A5570:
  mov [esi+0x36C],di
  LABEL2A5577:
  cmp [esi+0x36C],bp
  jne LABEL2A55D4

  mov al,[esi+0x113]
  cmp al,0xFA
  ja LABEL2A5594

  add al,0x05 
  mov [esi+0x113],al
  jmp LABEL2A559B

  LABEL2A5594:
  mov byte ptr [esi+0x113],0xFF
  LABEL2A559B:
  fild dword ptr [esi+0x144]
  push ecx
  fmul qword ptr [0x857F80] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x85A280] 
  add esp,0x04 
  fadd qword ptr [0x857F58] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  jmp LABEL2A4D48

  LABEL2A55D4:
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85BFF0] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  LABEL2A55E8:
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL2A55F4:
  mov al,[esi+0x113]
  cmp al,0x0A 
  jb LABEL29EBDB

  sub al,0x0A 
  mov [esi+0x113],al
  mov al,0xF6
  add [esi+0x111],al
  add [esi+0x112],al
  jmp LABEL2A4D54

  LABEL29EBD9:
  fstp st0
  LABEL29EBDB:
  add dword ptr [esi+0x34C], 0xFFFFFFFF
  LABEL2A869B:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret

  LABEL29ECA0:
  fldz
  fst dword ptr [esi+0xF4]
  fstp dword ptr [esi+0xF8]
  jmp LABEL2A869B
end

func satoriS_THORNS_BULLET_0F
  mov eax,[esi+0x35C]
  fstp st1
  fstp st0
  fld dword ptr [eax+0x08]
  mov edi,[esi]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0001 
  jne LABEL2A9F01

  fld dword ptr [0x867860] 
  mov [esi+0x194],al
  fstp dword ptr [esi+0x120]
  LABEL2A9F01:
  cmp ax,0x0002 
  jne LABEL2AA021

  fldz 
  movzx ecx,byte ptr [esi+0x104]
  mov edi,[esi]
  fst dword ptr [esp+0x14]
  push 0x03 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [0x871538] 
  lea eax,[esp+0x18]
  push eax
  fstp dword ptr [esp+0x24]
  push 0xFFFFFFFF
  push ecx
  mov ecx,esi
  mov [esi+0x190],ebx
  mov byte ptr [esi+0x194],0x01 
  add edi,0x48 
  call 0x4397F0
  mov edx,[edi]
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call edx
  fld dword ptr [0x85B870] 
  movzx edx,byte ptr [esi+0x104]
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x48]
  push 0x03 
  lea ecx,[esp+0x18]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call eax
  fld dword ptr [0x85BCA4] 
  movzx ecx,byte ptr [esi+0x104]
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x48]
  push 0x03 
  lea eax,[esp+0x18]
  push eax
  push 0x01 
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call edx
  fld dword ptr [0x85BC44] 
  movzx edx,byte ptr [esi+0x104]
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x48]
  push 0x03 
  lea ecx,[esp+0x18]
  push ecx
  push 0xFFFFFFFF
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036A
  call eax
  LABEL2AA021:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0003 
  jne LABEL2AA034

  mov [esi+0x113],bl
  LABEL2AA034:
  cmp ax,0x0004 
  jne LABEL2AA07E

  push 0x32 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL2AA056

  fadd dword ptr [0x871554] 
  LABEL2AA056:
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x0C]
  fld dword ptr [esp+0x0C]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x0C]
  fld dword ptr [esp+0x0C]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL2AA07E:
  cmp word ptr [esi+0x13E],0x07 
  jne LABEL2AAA89

  push 0x32 
  call 0x4099F0
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL2AA0A5

  fadd dword ptr [0x871554] 
  LABEL2AA0A5:
  fmul qword ptr [0x858C08] 
  push 0x00000168 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL2AA0EC

  fadd dword ptr [0x871554] 
  LABEL2AA0EC:
  pop edi
  fstp dword ptr [esi+0x12C]
  mov byte ptr [esi+0x194],0x01 
  LABEL2AA0FA:
  pop esi
  pop ebx
  add esp,0x14
  ret 

  LABEL2AAA89:
  pop edi
  jmp LABEL2AA0FA
end

005C17C4 = satoriS_THORNS
005C17CA = satoriS_THORNS_BULLET
005C17D7 = satoriS_THORNS_BULLET_0F

;#605 -> 625
func satoriS_BORDERS
  mov eax,0x2E
  mov ebx,0x00
  mov edi,0x00
  mov ebp,0x01
  mov ecx,esi
  call 0x487CA0
  push 0x02 
  push 0x02 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1D88B0

  mov edx,[esi]
  mov eax,[edx+0x08]
  push ebx
  mov ecx,esi
  call eax
  LABEL1D88B0:
  cmp [esi+0x144],ebx
  jne LABEL1D88D7
  cmp [esi+0x142],bx
  jne LABEL1D88D7
  cmp [esi+0x140],bx
  jne LABEL1D88D7

  cmp [esi+0x13E],bp
  je LABEL1CAF1E

  LABEL1D88D7:
  cmp [esi+0x13E],bx
  jne LABEL1D1781
  cmp [esi+0x142],bx
  jne LABEL1D1781

  cmp word ptr [esi+0x140],0x02 
  jne LABEL1D8978

  push 0x17 
  mov ecx,esi
  mov word ptr [esi+0x4A6],0x0028 
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85D658] 
  push ebp
  push eax
  movsx eax,al
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  mov ecx,eax
  shl ecx,0x04 
  add ecx,eax
  sub esp,0x08 
  add ecx,ecx
  mov [esp+0x20],ecx
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fild dword ptr [esp+0x20]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push ebx
  push ebx
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABEL1D8978:
  cmp [esi+0x142],bx
  jne LABEL1D1781
  cmp word ptr [esi+0x140],0x06 
  jne LABEL1D1781

  fldz 
  push 0x03 
  fst dword ptr [esp+0x000000B0]
  lea edx,[esp+0x000000B0]
  fld dword ptr [0x85AE94] 
  push edx
  fstp dword ptr [esp+0x000000B8]
  push ebp
  push ebp
  sub esp,0x08 
  fstp dword ptr [esp+0x000000CC]
  movsx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  imul eax,eax,0x64
  fadd qword ptr [0x85C1F0] 
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp+0x04]
  mov [esp+0x28],eax
  mov ecx,esi
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000036B
  call 0x46EB30
  fld dword ptr [0x85B984] 
  fstp dword ptr [esp+0x000000AC]
  movsx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push 0x03 
  imul edx,edx,0x64
  fadd qword ptr [0x85C1F0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  lea ecx,[esp+0x000000B0]
  push ecx
  push ebp
  push ebp
  sub esp,0x08 
  mov [esp+0x28],edx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000036B
  call 0x46EB30
  fld dword ptr [0x85B990] 
  fstp dword ptr [esp+0x000000AC]
  movsx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push 0x03 
  imul ecx,ecx,0x64
  fadd qword ptr [0x85C1F0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  lea eax,[esp+0x000000B0]
  push eax
  push ebp
  push ebp
  sub esp,0x08 
  mov [esp+0x28],ecx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000036B
  call 0x46EB30
  fld dword ptr [0x87153C] 
  push 0x03 
  fstp dword ptr [esp+0x000000B0]
  lea edx,[esp+0x000000B0]
  push edx
  push ebp
  movsx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85C1F0] 
  imul eax,eax,0x64
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push ebp
  sub esp,0x08 
  mov [esp+0x28],eax
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000036B
  call 0x46EB30
  push 0x47
  mov ecx,esi
  call 0x464980
  LABEL1D8B38:
  LABEL1D1781:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL1CAF1E:
  mov edx,[esi]
  mov eax,[edx+0x08]
  push ebx
  mov ecx,esi
  call eax
  jmp LABEL1D8B38
end

;#855 -> 875
func satoriS_BORDERS_BULLET
  mov eax,[esi+0x398]
  xor edi,edi
  cmp [eax+0x00000184],di
  jg LABEL1E7287

  movzx eax,word ptr [esi+0x13E]
  cmp ax,di
  je LABEL1E177A
  cmp ax,0x0003 
  je LABEL1E177A

  LABEL1E7287:
  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x04 
  ja LABEL1E1F63

  cmp eax,0x00
  je LABEL1E729E
  cmp eax,0x01
  je LABEL1E76FB
  cmp eax,0x02
  je LABEL1E1F63
  cmp eax,0x03
  je LABEL1E7773
  cmp eax,0x04
  je LABEL1E7C3B
  jmp LABEL1E1F63
  
  LABEL1E729E:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  mov ecx,[esi+0x144]
  and ecx,0x80000001 
  jns LABEL1E72CE

  dec ecx
  or ecx,0xFFFFFFFE
  inc ecx
  LABEL1E72CE:
  jne LABEL1E7367

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL1E72F0

  fadd dword ptr [0x871554] 
  LABEL1E72F0:
  push 0x1E 
  fstp dword ptr [esp+0x000001C0]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL1E7313

  fadd dword ptr [0x871554] 
  LABEL1E7313:
  fmul qword ptr [0x867840] 
  push 0x03 
  lea eax,[esp+0x000001BC]
  push eax
  fadd qword ptr [0x859910] 
  push 0x01 
  fstp dword ptr [esp+0x000001C8]
  fld1 
  fstp dword ptr [esp+0x000001CC]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036B
  call edx
  LABEL1E7367:
  fld dword ptr [esi+0x0EC]
  fld dword ptr [0x898664] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  fldz 
  jp LABEL1E7446
  mov eax,[esi+0x35C]
  fcom dword ptr [eax]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7446

  fstp st0
  push 0x04 
  fld dword ptr [0x85B984] 
  lea eax,[esp+0x00000120]
  fstp dword ptr [esp+0x00000120]
  push eax
  fld dword ptr [0x85BCA4] 
  push 0x01 
  fstp dword ptr [esp+0x0000012C]
  push 0x01 
  fld dword ptr [0x871538] 
  sub esp,0x08 
  fstp dword ptr [esp+0x0000013C]
  mov ecx,esi
  fld1 
  fstp dword ptr [esp+0x00000140]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  fstp dword ptr [esp+0x04]
  fstp dword ptr [esp]
  push 0x0000036B
  call edx
  fld dword ptr [0x85B990] 
  push 0x04 
  fstp dword ptr [esp+0x00000120]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov edx,[eax+0x44]
  lea ecx,[esp+0x00000120]
  push ecx
  push 0x01 
  push 0x01 
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [0x898664] 
  fstp dword ptr [esp]
  push 0x0000036B
  call edx
  jmp LABEL1E177A

  LABEL1E7446:
  fstp st1
  fld dword ptr [esi+0x0EC]
  fld dword ptr [0x89865C] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL1E752F
  mov eax,[esi+0x35C]
  fld dword ptr [0x87153C] 
  fcomp dword ptr [eax]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E752F

  fstp st1
  push 0x04 
  fld dword ptr [0x85B984] 
  lea eax,[esp+0x00000130]
  fstp dword ptr [esp+0x00000130]
  push eax
  fld dword ptr [0x85BCA4] 
  push 0x01 
  fstp dword ptr [esp+0x0000013C]
  push 0x01 
  fld dword ptr [0x871538] 
  sub esp,0x08 
  fstp dword ptr [esp+0x0000014C]
  mov ecx,esi
  fld dword ptr [0x87150C] 
  fstp dword ptr [esp+0x00000150]
  mov edx,[esi]
  fld dword ptr [esi+0x0F0]
  mov edx,[edx+0x44]
  fstp dword ptr [esp+0x04]
  fstp dword ptr [esp]
  push 0x0000036B
  call edx
  fld dword ptr [0x85B990] 
  push 0x04 
  fstp dword ptr [esp+0x00000130]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov edx,[eax+0x44]
  lea ecx,[esp+0x00000130]
  push ecx
  push 0x01 
  push 0x01 
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [0x89865C] 
  fstp dword ptr [esp]
  push 0x0000036B
  call edx
  jmp LABEL1E177A

  LABEL1E752F:
  fstp st0
  fld dword ptr [esi+0x0F0]
  fld dword ptr [0x898660] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jp LABEL1E7612
  mov eax,[esi+0x35C]
  fld dword ptr [0x85B990] 
  fcomp dword ptr [eax]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7612

  push 0x04 
  fxch st1
  fstp dword ptr [esp+0x00000150]
  lea eax,[esp+0x00000150]
  fld dword ptr [0x85BCA4] 
  push eax
  fstp dword ptr [esp+0x00000158]
  push 0x01 
  fld dword ptr [0x871538] 
  push 0x01 
  fstp dword ptr [esp+0x00000164]
  sub esp,0x08 
  fld dword ptr [0x8589F0] 
  mov ecx,esi
  fstp dword ptr [esp+0x00000170]
  mov edx,[esi]
  mov edx,[edx+0x44]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036B 
  call edx
  fld dword ptr [0x87153C] 
  push 0x04 
  fstp dword ptr [esp+0x00000150]
  fld dword ptr [0x898660] 
  mov eax,[esi]
  mov edx,[eax+0x44]
  lea ecx,[esp+0x00000150]
  push ecx
  push 0x01 
  push 0x01 
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036B
  call edx
  jmp LABEL1E177A

  LABEL1E7612:
  fstp st0
  fcom dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x01 
  jne LABEL1E76E5
  mov eax,[esi+0x35C]
  fld dword ptr [0x85B984] 
  fcomp dword ptr [eax]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E76E5

  fst dword ptr [esp+0x0000013C]
  push 0x04 
  fld dword ptr [0x85BCA4] 
  lea eax,[esp+0x00000140]
  fstp dword ptr [esp+0x00000144]
  push eax
  fld dword ptr [0x871538] 
  push 0x01 
  fstp dword ptr [esp+0x00000150]
  push 0x01 
  fld dword ptr [0x85AD10] 
  sub esp,0x08 
  fstp dword ptr [esp+0x00000160]
  mov edx,[esi]
  mov edx,[edx+0x44]
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036B
  call edx
  fld dword ptr [0x87153C] 
  push 0x04 
  fstp dword ptr [esp+0x00000140]
  fldz 
  mov eax,[esi]
  mov edx,[eax+0x44]
  lea ecx,[esp+0x00000140]
  push ecx
  push 0x01 
  push 0x01 
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036B
  call edx
  jmp LABEL1E177A

  LABEL1E76E5:
  movsx eax,byte ptr [esi+0x104]
  fstp st0
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jmp LABEL1E1F3F

  LABEL1E76FB:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fmul qword ptr [0x85B978] 
  lea ecx,[esi+0x04]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fst dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85BA10] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x08 
  jb LABEL1E177A

  sub al,0x08 
  mov [esi+0x113],al
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x10],ecx
  fild dword ptr [esp+0x10]
  jmp LABEL1E1F3F

  LABEL1E7773:
  mov eax,[esi+0x144]
  cmp eax,0x000000F0 
  jnl LABEL1E177A

  cdq 
  mov ecx,0x00000005 
  idiv ecx
  test edx,edx
  jne LABEL1E7827

  push 0x00000168 
  call 0x4099F0
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL1E77B0

  fadd dword ptr [0x871554] 
  LABEL1E77B0:
  push 0x32 
  fstp dword ptr [esp+0x00000218]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL1E77D3

  fadd dword ptr [0x871554] 
  LABEL1E77D3:
  fmul qword ptr [0x867840] 
  push 0x03 
  lea eax,[esp+0x00000214]
  push eax
  fadd qword ptr [0x857F80] 
  push 0x01 
  fstp dword ptr [esp+0x00000220]
  fld1 
  fstp dword ptr [esp+0x00000224]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036B
  call edx
  LABEL1E7827:
  movsx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F4]
  mov [esp+0x10],eax
  mov ecx,0x00000005 
  fild dword ptr [esp+0x10]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  mov eax,[esi+0x144]
  cdq 
  fldz 
  idiv ecx
  test edx,edx
  jne LABEL1E7944

  mov edx,[esi+0x35C]
  fld dword ptr [0x85AD10] 
  fcomp dword ptr [edx+0x0C]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7891

  fst dword ptr [esp+0x00000080]
  LABEL1E7891:
  mov eax,[esi+0x35C]
  fld dword ptr [0x8589F0] 
  fcomp dword ptr [eax+0x0C]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E78B4

  fld dword ptr [0x87153C] 
  fstp dword ptr [esp+0x00000080]
  LABEL1E78B4:
  mov ecx,[esi+0x35C]
  fld dword ptr [0x87150C] 
  fcomp dword ptr [ecx+0x0C]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E78D7

  fld dword ptr [0x85B984] 
  fstp dword ptr [esp+0x00000080]
  LABEL1E78D7:
  fld1 
  mov edx,[esi+0x35C]
  fcomp dword ptr [edx+0x0C]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E78F6

  fld dword ptr [0x85B990] 
  fstp dword ptr [esp+0x00000080]
  LABEL1E78F6:
  fstp dword ptr [esp+0x00000084]
  push 0x03 
  fld dword ptr [0x867860] 
  lea ecx,[esp+0x00000084]
  fstp dword ptr [esp+0x0000008C]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036B 
  call eax
  fldz 
  LABEL1E7944:
  mov ecx,[esi+0x35C]
  fld dword ptr [0x85AD10] 
  fcomp dword ptr [ecx+0x0C]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7A06

  fst dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x0EC]
  fld dword ptr [0x898664] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jp LABEL1E79AF

  fxch st1
  fcom dword ptr [esi+0x0F4]
  fnstsw ax
  test ah,0x05 
  jp LABEL1E79B3

  fxch st1
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F4]
  fchs 
  fstp dword ptr [esi+0x0F4]
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],edi
  jmp LABEL1E79B5

  LABEL1E79AF:
  fstp st0
  jmp LABEL1E79B5

  LABEL1E79B3:
  fstp st1
  LABEL1E79B5:
  fld dword ptr [esi+0x0EC]
  fld dword ptr [0x89865C] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL1E7A00

  fxch st1
  fcom dword ptr [esi+0x0F4]
  fnstsw ax
  test ah,0x41 
  jne LABEL1E7A04

  fxch st1
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F4]
  fchs 
  fstp dword ptr [esi+0x0F4]
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],edi
  jmp LABEL1E7A06

  LABEL1E7A00:
  fstp st0
  jmp LABEL1E7A06

  LABEL1E7A04:
  fstp st1
  LABEL1E7A06:
  mov edx,[esi+0x35C]
  fld dword ptr [0x8589F0] 
  fcomp dword ptr [edx+0x0C]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7ACE

  fld dword ptr [0x898660] 
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x0EC]
  fld dword ptr [0x898664] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jp LABEL1E7A77

  fxch st1
  fcom dword ptr [esi+0x0F4]
  fnstsw ax
  test ah,0x05 
  jp LABEL1E7A7B

  fxch st1
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F4]
  fchs 
  fstp dword ptr [esi+0x0F4]
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],edi
  jmp LABEL1E7A7D

  LABEL1E7A77:
  fstp st0
  jmp LABEL1E7A7D

  LABEL1E7A7B:
  fstp st1
  LABEL1E7A7D:
  fld dword ptr [esi+0x0EC]
  fld dword ptr [0x89865C] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL1E7AC8

  fxch st1
  fcom dword ptr [esi+0x0F4]
  fnstsw ax
  test ah,0x41 
  jne LABEL1E7ACC

  fxch st1
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F4]
  fchs 
  fstp dword ptr [esi+0x0F4]
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],edi
  jmp LABEL1E7ACE

  LABEL1E7AC8:
  fstp st0
  jmp LABEL1E7ACE

  LABEL1E7ACC:
  fstp st1
  LABEL1E7ACE:
  mov eax,[esi+0x35C]
  fld1 
  fcomp dword ptr [eax+0x0C]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7B7C

  fld dword ptr [0x898664] 
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F0]
  fld dword ptr [0x898660] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jp LABEL1E7B3B

  fxch st1
  fcom dword ptr [esi+0x0F8]
  fnstsw ax
  test ah,0x05 
  jp LABEL1E7B3F

  fxch st1
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x0F8]
  fchs 
  fstp dword ptr [esi+0x0F8]
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],edi
  jmp LABEL1E7B41

  LABEL1E7B3B:
  fstp st0
  jmp LABEL1E7B41

  LABEL1E7B3F:
  fstp st1
  LABEL1E7B41:
  fcom dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x01 
  jne LABEL1E7B7C

  fcom dword ptr [esi+0x0F8]
  fnstsw ax
  test ah,0x41 
  jne LABEL1E7B7C

  fst dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x0F8]
  fchs 
  fstp dword ptr [esi+0x0F8]
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],edi
  LABEL1E7B7C:
  mov ecx,[esi+0x35C]
  fld dword ptr [0x87150C] 
  fcomp dword ptr [ecx+0x0C]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7CEA

  fld dword ptr [0x89865C] 
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F0]
  fld dword ptr [0x898660] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jp LABEL1E7BED

  fxch st1
  fcom dword ptr [esi+0x0F8]
  fnstsw ax
  test ah,0x05 
  jp LABEL1E7BF1
  
  fxch st1
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x0F8]
  fchs 
  fstp dword ptr [esi+0x0F8]
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],edi
  jmp LABEL1E7BF3

  LABEL1E7BED:
  fstp st0
  jmp LABEL1E7BF3

  LABEL1E7BF1:
  fstp st1
  LABEL1E7BF3:
  fcom dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x01 
  jne LABEL1E7CEA

  fcom dword ptr [esi+0x0F8]
  fnstsw ax
  test ah,0x41 
  jne LABEL1E7CEA

  fstp dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x0F8]
  fchs 
  fstp dword ptr [esi+0x0F8]
  mov byte ptr [esi+0x194],0x01 
  mov [esi+0x190],edi
  jmp LABEL1E1F63

  LABEL1E7C3B:
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x85B968] 
  fstp dword ptr [esi+0x11C]
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esi+0x120]
  mov al,[esi+0x113]
  cmp al,0x0F 
  jb LABEL1E177A

  fldz 
  sub al,0x0F 
  mov [esi+0x113],al
  mov ecx,[esi+0x35C]
  fcom dword ptr [ecx]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7C8E

  fstp dword ptr [esi+0x0F0]
  jmp LABEL1E7C90

  LABEL1E7C8E:
  fstp st0
  LABEL1E7C90:
  fld dword ptr [0x87153C] 
  fcomp dword ptr [ecx]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7CAB

  fld dword ptr [0x898660] 
  fstp dword ptr [esi+0x0F0]
  LABEL1E7CAB:
  fld dword ptr [0x85B990] 
  fcomp dword ptr [ecx]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E7CC6

  fld dword ptr [0x898664] 
  fstp dword ptr [esi+0x0EC]
  LABEL1E7CC6:
  fld dword ptr [0x85B984] 
  fcomp dword ptr [ecx]
  fnstsw ax
  test ah,0x44 
  jp LABEL1E1F63

  fld dword ptr [0x89865C] 
  fstp dword ptr [esi+0x0EC]
  jmp LABEL1E1F63

  LABEL1E7CEA:
  fstp st0
  jmp LABEL1E1F63


  LABEL1E1F3F:
  fmul dword ptr [esi+0x000000F4]
  fadd dword ptr [esi+0x000000EC]
  fstp dword ptr [esi+0x000000EC]
  fld dword ptr [esi+0x000000F8]
  fadd dword ptr [esi+0x000000F0]
  fstp dword ptr [esi+0x000000F0]

  LABEL1E1F63:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1EB56B

  LABEL1E177A:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL1EB56B:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
end

func satoriS_BORDERS_BULLET_0F
  fstp st1
  fstp st0
  mov ecx,[esi+0x35C]
  fcomp dword ptr [ecx+0x08]
  fnstsw ax
  test ah,0x44 
  jnp LABEL1ECE59
  
  fld dword ptr [ecx+0x08]
  mov edi,[esi]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  LABEL1ECE59:
  mov ebx,0x00000001 
  cmp [esi+0x13E],bx
  jne LABEL1ECEA3

  push 0x0A 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL1ECE83

  fadd dword ptr [0x871554] 
  LABEL1ECE83:
  fmul qword ptr [0x867840] 
  fadd qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL1ECEA3:
  cmp word ptr [esi+0x13E],0x03 
  jne LABEL1ECED0

  mov eax,[esi+0x35C]
  mov [esi+0x194],bl
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  LABEL1ECED0:
  cmp word ptr [esi+0x13E],0x04 
  jne LABEL1EDED3

  push 0x0A 
  call 0x4099F0
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL1ECEF7

  fadd dword ptr [0x871554] 
  LABEL1ECEF7:
  fmul qword ptr [0x857F90] 
  push 0x0A 
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esi+0x11C]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL1ECF25

  fadd dword ptr [0x871554] 
  LABEL1ECF25:
  fmul qword ptr [0x867840] 
  mov eax,[esi+0x35C]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esi+0x120]
  fld dword ptr [eax]
  fstp dword ptr [esi+0x12C]
  LABEL1EDED3:
  pop edi
  pop esi
  pop ebx
  add esp,0x14 
  ret 
end

005C17E9 = satoriS_BORDERS
005C17F5 = satoriS_BORDERS_BULLET
005C17FB = satoriS_BORDERS_BULLET_0F

;# 604 -> 628
func satoriS_BROKENDOLL
  mov ebx,0x01
  mov ebp,0x00
  mov eax,0x18
  mov edi,0x258
  cmp [esi+0x144],ebp
  jne LABEL19479E
  cmp [esi+0x142],bp
  jne LABEL19479E
  cmp [esi+0x140],bp
  jne LABEL19479E
  cmp [esi+0x13E],bp
  jne LABEL19479E
  push 0x17 
  mov ecx,esi
  mov word ptr [esi+0x4A6],0x0028 
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85CBC8] 
  push ebx
  push eax
  fstp dword ptr [esp+0x18]
  movsx eax,al
  fld dword ptr [esp+0x18]
  lea edx,[eax*0x8]
  sub esp,0x08 
  sub edx,eax
  add edx,edx
  fstp dword ptr [esp+0x04]
  mov [esp+0x20],edx
  fld dword ptr [esi+0x0EC]
  mov ecx,esi
  fisub dword ptr [esp+0x20]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push ebp
  push ebp
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  ;#SOUND GUNGNIR 1
  push 0x3A
  ;push 0x34 
  mov ecx,esi
  call 0x464980
  fldz 
  fst dword ptr [esp+0x000002C4]
  push 0x03 
  fst dword ptr [esp+0x000002CC]
  lea eax,[esp+0x000002C8]
  fstp dword ptr [esp+0x000002D0]
  push eax
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push ebx
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036E
  call 0x46EB30
  LABEL19479E:
  mov ecx,esi
  call 0x487CA0
  push 0x02 
  push 0x06 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL1947C5
  mov edx,[esi]
  mov eax,[edx+0x08]
  push ebp
  mov ecx,esi
  call eax
  LABEL1947C5:
  cmp [esi+0x142],bp
  jne LABEL199FB0
  cmp word ptr [esi+0x140],0x0C 
  jne LABEL199FB0
  fldz 
  push 0x03 
  fstp dword ptr [esp+0x00000108]
  lea ecx,[esp+0x00000108]
  
  fld dword ptr [0x85AE94]
  
  push ecx
  fstp dword ptr [esp+0x00000110]
  push ebx
  fld dword ptr [0x8589F0] 
  mov ecx,esi
  fstp dword ptr [esp+0x00000118]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x857F98] 
  movsx edx,al
  imul edx,edx,0x64
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  push eax
  sub esp,0x08 
  mov [esp+0x28],edx
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000036E
  call 0x46EB30
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x0000010C]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  movsx edx,al
  fadd qword ptr [0x857F98] 
  push 0x03 
  imul edx,edx,0x64
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  lea ecx,[esp+0x00000108]
  push ecx
  push ebx
  push eax
  sub esp,0x08 
  mov [esp+0x28],edx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000036E
  call 0x46EB30
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x0000010C]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push 0x03 
  fadd qword ptr [0x857F98] 
  lea ecx,[esp+0x00000108]
  push ecx
  push ebx
  push eax
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  sub esp,0x08 
  movsx edx,al
  fstp dword ptr [esp+0x04]
  imul edx,edx,0x64
  mov [esp+0x28],edx
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000036E
  mov ecx,esi
  call 0x46EB30
  ;#SOUND GUNGNIR 2
  push 0x3B
  ;push 0x35 
  mov ecx,esi
  call 0x464980
  LABEL199FB0:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

;# FRAME 0
func satoriS_BROKENDOLL_0F
  mov dword ptr [esi+0x190],0x00000001 
  mov ecx,esi
  pop esi
  pop ebx
  jmp 0x4636B0
end

;# 854 -> 878
func satoriS_BROKENDOLL_BULLET
  
  movsx eax,word ptr [esi+0x13E]
  xor ebp,ebp
  cmp eax,0x07 
  ja LABEL1A1686
  cmp eax,0x00
  je TABLE01
  cmp eax,0x01
  je TABLE01
  cmp eax,0x02
  je TABLE2
  cmp eax,0x03
  je TABLE3
  cmp eax,0x04
  je TABLE4
  cmp eax,0x05
  je TABLE5
  cmp eax,0x06
  je TABLE6
  cmp eax,0x07
  je TABLE7
  jmp LABEL1A1686

  TABLE01:
  mov ecx,[esi+0x398]
  cmp word ptr [ecx+0x13C],0x0274
  jne LABEL19E2D8
  push ebp
  push ebp
  mov ecx,esi
  call 0x48CF60
  jmp LABEL1A1686
  
  TABLE2:
  ;cmp dword ptr [esi+0x144],0x00
  ;jne short LABEL1
  ;mov byte ptr [esi+0x194],0x05
  ;LABEL1:
  push ebp
  call 0x48CDE0
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  cmp [esi+0x190],ebp
  je LABEL1A1470
  cmp byte ptr [esi+0x194],0x00 
  jle LABEL1A1470
  add word ptr [esi+0x36C],0x01 
  movzx eax,word ptr [esi+0x36C]
  cmp ax,0x0001 
  jl LABEL1A1470
  mov [esi+0x36C],bp
  mov [esi+0x190],ebp
  LABEL1A1470:
  mov edx,[esi+0x35C]
  fld dword ptr [edx]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fst dword ptr [esi+0x12C]
  fld dword ptr [esi+0x0EC]
  fcomp qword ptr [0x85C038] 
  fnstsw ax
  test ah,0x41 
  je LABEL19E2D6
  fld dword ptr [esi+0x0EC]
  fcomp qword ptr [0x85C058] 
  fnstsw ax
  test ah,0x05 
  jnp LABEL19E2D6
  
  
  
  
  ;#creation method
  mov eax,[esi]
  mov eax,[eax+0x44]
  
  ;#angle
  fstp dword ptr [esp+0x34]
  
  ;#spd
  fld dword ptr [0x85B870] 
  fstp dword ptr [esp+0x38]
  
  push 0x03 
  
  ;#subseq
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x40]
  
  ;#facing
  movzx edx,byte ptr [esi+0x104]
  
  ;#addr
  lea ecx,[esp+0x38]
  ;#addr
  push ecx
  ;#?
  push 0x01 
  ;#facing
  push edx
  sub esp,0x08 
  mov ecx,esi
  
  ;#Y
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp+0x04]
  
  ;#X
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  
  push 0x0000036E
  call eax
  
  
  
  mov ecx,[esi+0x144]
  and ecx,0x80000001 
  jns LABEL1A1514
  dec ecx
  or ecx,0xFFFFFFFE 
  inc ecx
  LABEL1A1514:
  jne LABEL1A1686
  fld dword ptr [esi+0x0F0]
  mov ecx,esi
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fcomp qword ptr [esp+0x20]
  fnstsw ax
  test ah,0x41 
  jp LABEL1A1686
  fld dword ptr [esi+0x0F0]
  mov ecx,esi
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fsubr qword ptr [esp+0x20]
  fcomp qword ptr [0x8591F8] 
  fnstsw ax
  test ah,0x41 
  jp LABEL1A1686
  fldz 
  movzx eax,byte ptr [esi+0x104]
  mov edi,[esi]
  fst dword ptr [esp+0x20]
  push 0x03 
  fstp dword ptr [esp+0x28]
  fld dword ptr [0x85882C] 
  lea edx,[esp+0x24]
  push edx
  fstp dword ptr [esp+0x30]
  push 0x01 
  push eax
  mov ecx,esi
  add edi,0x44 
  call 0x4397F0
  mov edx,[edi]
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036E
  call edx
  jmp LABEL1A1686
  
  TABLE3:
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL19E2D8
  fld dword ptr [esi+0x120]
  sub al,0x05 
  fld qword ptr [0x8581D8] 
  mov [esi+0x113],al
  mov eax,[esi+0x35C]
  fmul st1,st0
  fxch st1
  mov bl,0xFB
  add [esi+0x111],bl
  add [esi+0x110],bl
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x11C]
  sub esp,0x08 
  fadd qword ptr [0x858C08] 
  lea ecx,[esi+0x04]
  fstp dword ptr [esi+0x11C]
  fld dword ptr [eax]
  fstp dword ptr [esi+0x12C]
  fmul dword ptr [eax+0x04]
  fstp dword ptr [eax+0x04]
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  jmp LABEL1A1686
  
  TABLE4:
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL19E2D8
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  LABEL1A1658:
  fstp dword ptr [esi+0x120]
  mov bl,0xFB
  fld dword ptr [esi+0x378]
  add [esi+0x111],bl
  fmul qword ptr [0x85B818] 
  sub al,0x05 
  add [esi+0x110],bl
  mov [esi+0x113],al
  LABEL1A1680:
  fstp dword ptr [esi+0x378]
  
  TABLEDEF:
  LABEL1A1686:
  movsx eax,byte ptr [esi+0x104]
  mov [esp+0x20],eax
  mov ecx,esi
  fild dword ptr [esp+0x20]
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  call 0x438C60
  test al,al
  je LABEL1A16CB
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL1A16CB:
  cmp [esi+0x144],ebp
  jne LABEL1A382A
  cmp [esi+0x142],bp
  jne LABEL1A382A
  cmp [esi+0x140],bp
  jne LABEL1A382A
  cmp word ptr [esi+0x13E],0x02 
  jne LABEL1A382A
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  
  TABLE5:
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL19E2D8
  fld dword ptr [esi+0x378]
  mov bl,0xFB
  fadd dword ptr [esi+0x11C]
  add [esi+0x111],bl
  sub al,0x05 
  add [esi+0x110],bl
  fstp dword ptr [esp+0x14]
  mov [esi+0x113],al
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x12C]
  fsub dword ptr [esi+0x37C]
  fstp dword ptr [esi+0x12C]
  fld dword ptr [esi+0x37C]
  fld qword ptr [0x85B818] 
  fmul st1,st0
  fxch st1
  fstp dword ptr [esi+0x37C]
  fmul dword ptr [esi+0x378]
  jmp LABEL1A1680
  
  TABLE6:
  mov eax,[esi+0x39C]
  cmp eax,ebp
  je LABEL19E2D8
  fld dword ptr [eax+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [eax+0x0F0]
  fstp dword ptr [esi+0x0F0]
  jmp LABEL1A1686
  
  TABLE7:
  mov al,[esi+0x113]
  cmp al,0x05 
  jb LABEL19E2D8
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x11C]
  fld dword ptr [esi+0x120]
  fmul qword ptr [0x8581D8] 
  jmp LABEL1A1658

  LABEL19E2D6:
  fstp st0
  LABEL19E2D8:
  add dword ptr [esi+0x0000034C],0xFFFFFFFF
  LABEL1A382A:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
end

;# 854 0F
func satoriS_BROKENDOLL_BULLET_0F

  ;# eax is jump index
  ;ecx
  ;eax
  
  mov ecx,[esi+0x35C]
  ;#ADD THIS
  fstp st0
  fcom dword ptr [ecx+0x08]
  fnstsw ax
  test ah,0x44 
  jnp LABEL1A477A
  mov ebx,[esi]
  fstp st0
  fld dword ptr [ecx+0x08]
  call 0x820230
  mov ecx,esi
  push eax
  mov eax,[ebx+0x0C]
  call eax
  fldz 
  LABEL1A477A:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x00
  mov ebx,0x00000001 
  je LABEL1A4790
  cmp ax,bx
  jne LABEL1A4797
  LABEL1A4790:
  mov [esi+0x360],bx
  LABEL1A4797:
  cmp ax,0x0002 
  jne LABEL1A47FC
  mov eax,[esi+0x35C]
  fld dword ptr [eax]
  movzx ecx,byte ptr [esi+0x104]
  mov edx,[esi]
  fstp dword ptr [esi+0x12C]
  mov edx,[edx+0x48]
  push 0x03 
  mov byte ptr [esi+0x194],0x05 
  fld dword ptr [eax]
  lea eax,[esp+0x18]
  fstp dword ptr [esp+0x18]
  push eax
  push ebx
  fstp dword ptr [esp+0x24]
  push ecx
  fld dword ptr [0x85BCA4] 
  sub esp,0x08 
  fstp dword ptr [esp+0x34]
  mov ecx,esi
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036E
  call edx
  jmp LABEL1A47FE
  LABEL1A47FC:
  fstp st0
  LABEL1A47FE:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0003 
  jne LABEL1A4819
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx]
  fstp dword ptr [esi+0x12C]
  LABEL1A4819:
  cmp ax,0x0004 
  jne LABEL1A482B
  fld dword ptr [0x85AD04] 
  fstp dword ptr [esi+0x378]
  LABEL1A482B:
  cmp ax,0x0005 
  fld dword ptr [0x85C110] 
  jne LABEL1A4855
  fld dword ptr [0x85C500] 
  fstp dword ptr [esi+0x128]
  fst dword ptr [esi+0x378]
  fld dword ptr [0x858830] 
  fstp dword ptr [esi+0x37C]
  LABEL1A4855:
  cmp ax,0x0006 
  jne LABEL1A4869
  mov edx,[esi+0x35C]
  fld dword ptr [edx]
  fstp dword ptr [esi+0x12C]
  LABEL1A4869:
  cmp ax,0x0007 
  jne LABEL1A518F
  fstp dword ptr [esi+0x378]
  pop edi
  pop esi
  pop ebx
  add esp,0x14 
  ret 

  LABEL1A518F:
  fstp st0
  pop edi
  pop esi
  pop ebx
  add esp,0x14
  ret 
end

005C1801 = satoriS_BROKENDOLL
005C1807 = satoriS_BROKENDOLL_BULLET
005C180D = satoriS_BROKENDOLL_BULLET_0F

;# 613 -> 629
func satoriS_FLOWERSPARK
  mov eax,0x70
  mov ebx,0x12C
  mov edx,0x33
  mov edi,0x258
  mov ebp,0x1770
  mov ecx,esi
  ;fstp st0
  call 0x487CA0
  push 0x02 
  push 0x00 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL3B142A

  mov eax,[esi]
  mov edx,[eax+0x08]
  push 0x00 
  mov ecx,esi
  call edx
  LABEL3B142A:
  cmp dword ptr [esi+0x144],0x00 
  jne LABEL3B14DB
  cmp word ptr [esi+0x142],0x00 
  jne LABEL3B14DB
  cmp word ptr [esi+0x140],0x00 
  jne LABEL3B14DB
  cmp word ptr [esi+0x13E],0x01 
  jne LABEL3B14DB

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  movzx eax,byte ptr [esi+0x104]
  push 0x01 
  push eax
  fstp dword ptr [esp+0x18]
  movsx eax,al
  fld dword ptr [esp+0x18]
  sub esp,0x08 
  lea eax,[eax+eax*0x2]
  mov [esp+0x20],eax
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fild dword ptr [esp+0x20]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABEL3B14DB:
  cmp word ptr [esi+0x13E],0x02 
  jne LABEL3AF340
  cmp word ptr [esi+0x142],0x00 
  jne LABEL3AF340
  cmp word ptr [esi+0x140],0x00 
  jne LABEL3AF340

  fldz 
  push 0x03 
  fst dword ptr [esp+0x0000010C]
  lea ecx,[esp+0x0000010C]
  fld dword ptr [0x86782C] 
  push ecx
  fstp dword ptr [esp+0x00000114]
  push 0x01 
  mov ecx,esi
  fstp dword ptr [esp+0x0000011C]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push eax
  fadd qword ptr [0x85C5B0] 
  movsx eax,al
  fstp dword ptr [esp+0x20]
  lea edx,[eax+eax*0x04]
  fld dword ptr [esp+0x20]
  add edx,edx
  sub esp,0x08 
  add edx,edx
  mov [esp+0x28],edx
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000036F
  call 0x46EB30
  jmp LABEL3ADCA2

  LABEL3ADCA2:
  fld dword ptr [0x85B870] 
  push ecx
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  LABEL3AF340:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

func satoriS_FLOWERSPARK_0F
  mov dword ptr [esi+0x190],0x00000000 
  mov byte ptr [esi+0x7F4],0x01 
  pop esi
  pop ebx
  pop ecx
  ret 
end

;# 863 -> 879
func satoriS_FLOWERSPARK_BULLET
  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x03 
  ja LABEL3BA984

  cmp eax,0x00
  je LABEL3C9822
  cmp eax,0x01
  je LABEL3C9822
  cmp eax,0x02
  je LABEL3C9A48
  cmp eax,0x03
  je LABEL3C9A79
  jmp LABEL3BA984

  LABEL3C9822:
  mov ebx,0x00000001 
  cmp [esi+0x36C],bx
  jg LABEL3C99C8

  mov ecx,[esi+0x398]
  movzx eax,word ptr [ecx+0x0000013C]
  xor edi,edi
  cmp ax,0x0258 
  jl LABEL3C9866
  cmp ax,0x02B1 
  jg LABEL3C9866

  cmp ax,0x0275
  jne LABEL3C99B7
  cmp [ecx+0x0000013E],di
  je LABEL3C99B7

  LABEL3C9866:
  mov eax,[esi+0x144]
  cdq 
  mov ebp,0x0000003C 
  idiv ebp
  test edx,edx
  jne LABEL3C987F

  ;# SOUND VISOR 1
  push 0x45
  ;push 0x0A
  call 0x464980
  LABEL3C987F:
  mov eax,[esi+0x398]
  mov al,[eax+0x00000104]
  mov [esi+0x104],al
  mov ecx,[esi+0x398]
  movsx edx,al
  mov [esp+0x18],edx
  fild dword ptr [esp+0x18]
  fmul dword ptr [esi+0x378]
  fadd dword ptr [ecx+0x000000EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [ecx+0x000000F0]
  mov ecx,[esi+0x35C]
  fadd qword ptr [0x85BBF0] 
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [ecx+0x04]
  fadd dword ptr [esi+0x378]
  fstp dword ptr [esi+0x378]
  fld dword ptr [ecx+0x04]
  fsub qword ptr [0x8677A0] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [ecx+0x04]
  fldz 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jne LABEL3C98FF

  fst dword ptr [ecx+0x04]
  LABEL3C98FF:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000014 
  idiv ecx
  test edx,edx
  jne LABEL3C996B

  fstp dword ptr [esp+0x00000194]
  push 0x03 
  fld dword ptr [0x85BAE8] 
  lea eax,[esp+0x00000198]
  fstp dword ptr [esp+0x0000019C]
  push eax
  fld dword ptr [0x871538] 
  push ebx
  fstp dword ptr [esp+0x000001A8]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036F
  call edx
  jmp LABEL3C996D

  LABEL3C996B:
  fstp st0
  LABEL3C996D:
  push edi
  mov ecx,esi
  call 0x48CDE0
  cmp [esi+0x190],edi
  je LABEL3C999E

  add [esi+0x36E],bx
  movzx eax,word ptr [esi+0x36E]
  cmp ax,0x0007 
  jl LABEL3C999E

  mov [esi+0x36E],di
  mov [esi+0x190],edi
  LABEL3C999E:
  cmp byte ptr [esi+0x194],0x00 
  jle LABEL3C99B7

  cmp dword ptr [esi+0x144],0x000000B4 
  jl LABEL3BA984

  LABEL3C99B7:
  mov word ptr [esi+0x36C],0x0002 
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
  LABEL3C99C8:
  fld dword ptr [esi+0x0F4]
  fld qword ptr [0x8581D8] 
  fmul st1,st0
  fxch st1
  fstp dword ptr [esi+0x0F4]
  fld dword ptr [esi+0x0F8]
  fmul st0,st1
  fstp dword ptr [esi+0x0F8]
  fmul dword ptr [esi+0x37C]
  fstp dword ptr [esi+0x37C]
  mov byte ptr [esi+0x194],0x00 
  fld dword ptr [esi+0x11C]
  fmul qword ptr [0x85B978] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  LABEL3C9A1F:
  mov al,[esi+0x113]
  cmp al,0x06 
  jb LABEL3BA47F

  sub al,0x06 
  mov [esi+0x113],al
  mov al,0xFA
  add [esi+0x111],al
  add [esi+0x112],al
  jmp LABEL3BA984

  LABEL3C9A48:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [eax+0x04]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [eax+0x04]
  jmp LABEL3C9A1F

  LABEL3C9A79:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [eax+0x04]
  fmul qword ptr [0x85B818] 
  fstp dword ptr [eax+0x04]
  mov al,[esi+0x113]
  cmp al,0x0F 
  jb LABEL3BA47F

  sub al,0x0F 
  mov [esi+0x113],al
  mov al,0xF1
  add [esi+0x111],al
  add [esi+0x112],al
  jmp LABEL3BA984


  LABEL3BA984:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL3CE949
  LABEL3BA47F:
  add dword ptr [esi+0x34C],0xFFFFFFFF 
  LABEL3CE949:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x000002B8
  ret 
end

func satoriS_FLOWERSPARK_BULLET_0F

  mov eax,[esi+0x35C]
  fstp st1
  fstp st0
  fld dword ptr [eax+0x08]
  mov edi,[esi]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  cmp word ptr [esi+0x13E],0x00
  jne LABEL3CF86D

  ;fldz 
  ;movzx edx,byte ptr [esi+0x104]
  ;mov eax,[esi]
  ;fstp dword ptr [esp+0x38]
  ;fld dword ptr [0x85BC6C] 
  ;mov eax,[eax+0x44]
  ;push 0x03 
  ;fstp dword ptr [esp+0x40]
  ;fld dword ptr [0x8589F0] 
  ;lea ecx,[esp+0x3C]
  ;push ecx
  ;fstp dword ptr [esp+0x48]
  ;fld dword ptr [esi+0x0F0]
  ;push 0x01 
  ;push edx
  ;sub esp,0x08 
  ;mov ecx,esi
  ;mov byte ptr [esi+0x194],0x07 
  ;fstp dword ptr [esp+0x04]
  ;fld dword ptr [esi+0x0EC]
  ;fstp dword ptr [esp]
  ;push 0x0000036F
  
  
  fldz 
  movzx edx,byte ptr [esi+0x104]
  mov eax,[esi]
  fstp dword ptr [esp+0x10]
  fld dword ptr [0x85BC6C] 
  mov eax,[eax+0x44]
  push 0x03 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x8589F0] 
  lea ecx,[esp+0x14]
  push ecx
  fstp dword ptr [esp+0x20]
  fld dword ptr [esi+0x0F0]
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  mov byte ptr [esi+0x194],0x07 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036F
  
  call eax
  LABEL3CF86D:
  pop edi
  pop esi
  ;pop ebp
  pop ebx
  add esp,0x14
  ret
end

005C1813 = satoriS_FLOWERSPARK
005C1819 = satoriS_FLOWERSPARK_BULLET
005C182A = satoriS_FLOWERSPARK_BULLET_0F

;# 600 -> 626
func satoriS_FANTASYORB
  mov eax,0x07
  mov ebx,0x12C
  mov ecx,0x06
  mov edx,0x01
  mov edi,0x55
  mov ebp,0xFFFFFFFF
  mov ecx,esi
  fstp st0
  call 0x487CA0
  push 0x02 
  push 0x06 
  mov ecx,esi
  call 0x46B370
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0001 
  mov ebx,0x0000001E 
  jne LABELA1E5C
  cmp [esi+0x144],ebx
  jg LABEL9D671
  cmp ax,ax
  jne LABELA1E5C
  cmp word ptr [esi+0x7D0],0x05 
  jnl LABELA1E5C
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000005 
  idiv ecx
  test edx,edx
  jne LABELA1E5C
  ;# SOUND FANTASY ORB 1
  push 0x48 
  mov ecx,esi
  call 0x464980
  movsx eax,word ptr [esi+0x7D0]
  mov edx,eax
  shl edx,0x04 
  sub edx,eax
  lea eax,[edx+edx-0x000000E1]
  mov [esp+0x20],eax
  mov ecx,0x00000003 
  push ecx
  fild dword ptr [esp+0x24]
  fstp dword ptr [esp+0x00000164]
  fld dword ptr [0x85B3B0] 
  fstp dword ptr [esp+0x00000168]
  movsx eax,word ptr [esi+0x7D0]
  cdq 
  idiv ecx
  mov [esp+0x24],edx
  fild dword ptr [esp+0x24]
  lea edx,[esp+0x00000164]
  push edx
  push 0x01 
  fadd qword ptr [0x857F80] 
  fstp dword ptr [esp+0x00000174]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esp+0x0000016C]
  push eax
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857958] 
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  faddp 
  fstp dword ptr [esp+0x34]
  fld dword ptr [esp+0x34]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x00000178]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  fmul qword ptr [0x857958] 
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x38],ecx
  mov ecx,esi
  fadd qword ptr [0x859630] 
  fild dword ptr [esp+0x38]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x38]
  fld dword ptr [esp+0x38]
  fstp dword ptr [esp]
  push 0x0000036C 
  call 0x46EB30
  movsx eax,word ptr [esi+0x7D0]
  mov edx,eax
  shl edx,0x04 
  sub edx,eax
  add edx,edx
  mov eax,0x000000E1 
  sub eax,edx
  mov [esp+0x20],eax
  mov ecx,0x00000003 
  push ecx
  fild dword ptr [esp+0x24]
  fstp dword ptr [esp+0x00000164]
  fld dword ptr [0x85B3B0] 
  fstp dword ptr [esp+0x00000168]
  movsx eax,word ptr [esi+0x7D0]
  cdq 
  idiv ecx
  mov [esp+0x24],edx
  fild dword ptr [esp+0x24]
  lea edx,[esp+0x00000164]
  push edx
  push 0x01 
  fadd qword ptr [0x857F80] 
  fstp dword ptr [esp+0x00000174]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esp+0x0000016C]
  push eax
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857958] 
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  faddp 
  fstp dword ptr [esp+0x34]
  fld dword ptr [esp+0x34]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x00000178]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  fmul qword ptr [0x857958] 
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x38],ecx
  mov ecx,esi
  fadd qword ptr [0x859630] 
  fild dword ptr [esp+0x38]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x38]
  fld dword ptr [esp+0x38]
  fstp dword ptr [esp]
  push 0x0000036C
  call 0x46EB30
  add word ptr [esi+0x7D0],0x01 
  LABELA1E5C:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABELA1E7C
  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00 
  mov ecx,esi
  call eax
  push ebx
  push 0x06 
  mov ecx,esi
  call 0x46B370
  LABELA1E7C:
  cmp word ptr [esi+0x13E],0x00 
  jne LABELA3DCC
  cmp word ptr [esi+0x140],0x02 
  jne LABELA3DCC
  cmp word ptr [esi+0x142],0x00 
  jne LABELA3DCC
  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  movzx eax,byte ptr [esi+0x104]
  push 0x01 
  push eax
  fstp dword ptr [esp+0x28]
  movsx ecx,al
  fld dword ptr [esp+0x28]
  sub esp,0x08 
  add ecx,ecx
  mov [esp+0x30],ecx
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fisub dword ptr [esp+0x30]
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABELA3DCC:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
  
  LABEL9D671:
  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  jmp LABELA3DCC
end

;# 650 -> 676
func satoriS_FANTASYORB_AIR
  mov eax,0x15
  mov ebx,0x12C
  mov ecx,0x06
  mov edx,0x01
  mov edi,0x55
  mov ebp,0xFFFFFFFF
  cmp word ptr [esi+0x13E],0x04 
  fstp st0
  jne LABELA1F3A
  mov ecx,esi
  call 0x487CA0
  LABELA1F3A:
  push 0x02 
  push 0x06 
  mov ecx,esi
  call 0x46B370
  movzx eax,word ptr [esi+0x13E]
  mov edi,0x00000001 
  cmp ax,di
  jne LABELA1F66
  cmp dword ptr [esi+0x144],0x3C 
  jg LABEL957C4
  cmp ax,di
  LABELA1F66:
  jle LABELA1FB2
  cmp ax,0x0004 
  jnl LABELA1FB2
  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0x0F8]
  call 0x487EA0
  test al,al
  je LABELA1FB2
  mov ecx,esi
  call 0x4397F0
  mov ecx,esi
  fstp dword ptr [esi+0x0F0]
  call 0x4636B0
  mov edx,[esi]
  mov eax,[edx+0x0C]
  push 0x04 
  mov ecx,esi
  call eax
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
  LABELA1FB2:
  cmp [esi+0x13E],di
  jne LABELA2153
  cmp word ptr [esi+0x7D0],0x05 
  jnl LABELA2153
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000005 
  idiv ecx
  test edx,edx
  jne LABELA2153
  ;# SOUND FANTASY ORB 1
  push 0x48 
  mov ecx,esi
  call 0x464980
  movsx eax,word ptr [esi+0x7D0]
  mov edx,eax
  shl edx,0x04 
  sub edx,eax
  lea eax,[edx+edx-0x000000E1]
  mov [esp+0x20],eax
  mov ecx,0x00000003 
  push ecx
  fild dword ptr [esp+0x24]
  fstp dword ptr [esp+0x00000208]
  fld dword ptr [0x85B3B0] 
  fstp dword ptr [esp+0x0000020C]
  movsx eax,word ptr [esi+0x7D0]
  cdq 
  idiv ecx
  mov ecx,esi
  mov [esp+0x24],edx
  fild dword ptr [esp+0x24]
  lea edx,[esp+0x00000208]
  push edx
  push edi
  fadd qword ptr [0x857F80] 
  fstp dword ptr [esp+0x00000218]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push eax
  fadd qword ptr [0x85B900] 
  movsx eax,al
  fstp dword ptr [esp+0x30]
  lea eax,[eax+eax*0x8]
  fld dword ptr [esp+0x30]
  sub esp,0x08 
  add eax,eax
  mov [esp+0x38],eax
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x38]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x38]
  fld dword ptr [esp+0x38]
  fstp dword ptr [esp]
  push 0x0000036C
  call 0x46EB30
  movsx eax,word ptr [esi+0x7D0]
  mov ecx,eax
  shl ecx,0x04 
  sub ecx,eax
  add ecx,ecx
  mov edx,0x000000E1 
  sub edx,ecx
  mov [esp+0x20],edx
  mov ecx,0x00000003 
  push ecx
  fild dword ptr [esp+0x24]
  fstp dword ptr [esp+0x00000208]
  fld dword ptr [0x85B3B0] 
  fstp dword ptr [esp+0x0000020C]
  movsx eax,word ptr [esi+0x7D0]
  cdq 
  idiv ecx
  mov [esp+0x24],edx
  fild dword ptr [esp+0x24]
  lea edx,[esp+0x00000208]
  push edx
  push edi
  fadd qword ptr [0x857F80] 
  fstp dword ptr [esp+0x00000218]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push eax
  fadd qword ptr [0x85B900] 
  movsx eax,al
  fstp dword ptr [esp+0x30]
  sub esp,0x08 
  fld dword ptr [esp+0x38]
  lea eax,[eax+eax*0x8]
  add eax,eax
  fstp dword ptr [esp+0x04]
  mov [esp+0x38],eax
  fild dword ptr [esp+0x38]
  mov ecx,esi
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x38]
  fld dword ptr [esp+0x38]
  fstp dword ptr [esp]
  push 0x0000036C
  call 0x46EB30
  add [esi+0x7D0],di
  LABELA2153:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABELA2169
  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00 
  mov ecx,esi
  call eax
  LABELA2169:
  cmp word ptr [esi+0x13E],0x00 
  jne LABELA2207
  cmp word ptr [esi+0x140],0x02 
  jne LABELA2207
  cmp word ptr [esi+0x142],0x00 
  jne LABELA2207
  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  movzx eax,byte ptr [esi+0x104]
  push edi
  push eax
  fstp dword ptr [esp+0x28]
  movsx ecx,al
  fld dword ptr [esp+0x28]
  sub esp,0x08 
  add ecx,ecx
  mov [esp+0x30],ecx
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fisub dword ptr [esp+0x30]
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABELA2207:
  cmp dword ptr [esi+0x144],0x00 
  jne LABELA3DCC
  cmp word ptr [esi+0x142],0x00 
  jne LABELA3DCC
  cmp word ptr [esi+0x140],0x00 
  jne LABELA3DCC
  cmp word ptr [esi+0x13E],0x04 
  jne LABELA3DCC
  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x09 
  mov ecx,esi
  call eax
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL957C4:
  mov edx,[esi]
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  LABELA3DCC:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

;# 850 -> 876
func satoriS_FANTASYORB_BULLET
  cmp word ptr [esi+0x13E],0x05
  jle START
  cmp word ptr [esi+0x13E],0x08
  jle START1
  
  mov eax,[esi+0x00035C]
  fld dword ptr [eax]
  sub esp,0x08
  fstp dword ptr [esi+0x00012C]
  lea ecx,[esi+0x04]
  fld dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [esi+0x00011C]
  fadd qword ptr [0x867840]
  fstp dword ptr [esi+0x00011C]
  fld dword ptr [esi+0x000120]
  fmul qword ptr [0x8579D8]
  fstp dword ptr [esi+0x000120]
  mov al,[esi+0x000113]
  cmp al,0x0A
  jb LABELB1321
  sub al,0x0A
  mov [esi+0x000113],al
  movsx edx,byte ptr [esi+0x000104]
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  fmul dword ptr [esi+0x0000F4]
  fadd dword ptr [esi+0x0000EC]
  fstp dword ptr [esi+0x0000EC]
  fld dword ptr [esi+0x0000F8]
  fadd dword ptr [esi+0x0000F0]
  fstp dword ptr [esi+0x0000F0]

  mov ecx,esi
  call 0x438C60
  or ecx,0xFFFFFFFF
  test al,al
  je LABELB8039X
  add [esi+0x00034C],ecx
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABELB8039X:
  cmp dword ptr [esi+0x000144],0x00
  jne LABELBAA4DX
  cmp word ptr [esi+0x000142],0x00
  jne LABELB5428X
  cmp word ptr [esi+0x000140],0x00
  jne LABELB5428X
  cmp word ptr [esi+0x00013E],0x0A
  jne LABELB5428X
  jmp LABELB5422X

  LABELB5422X:
  add [esi+0x00034C],ecx
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABELB5428X:
  cmp dword ptr [esi+0x000144],0x00
  jne LABELBAA4DX
  cmp word ptr [esi+0x000142],0x00
  jne LABELBAA4DX
  cmp word ptr [esi+0x000140],0x00
  jne LABELBAA4DX
  cmp word ptr [esi+0x00013E],0x0B
  jmp LABELB13C0X

  LABELB13C0X:
  jne LABELBAA4DX
  LABELB13C6X:
  add [esi+0x00034C],ecx
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABELBAA4DX:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 



  START1:
  mov eax,[esi+0x000144]
  lea ecx,[eax+eax*0x2]
  add ecx,ecx
  mov [esp+0x20],ecx
  fild dword ptr [esp+0x20]
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fadd st0,st0
  add esp,0x04
  fadd qword ptr [0x8677C8]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x00011C]
  fstp dword ptr [esi+0x000120]
  mov al,[esi+0x000113]
  cmp al,0x19
  jb LABELB1321
  sub al,0x19
  mov [esi+0x000113],al
  mov ecx,esi
  call 0x438C60
  or ecx,0xFFFFFFFF
  test al,al
  je LABELB8039
  add [esi+0x00034C],ecx
  LABELB8039:
  cmp dword ptr [esi+0x000144],0x00
  jne LABELBAA4D
  cmp word ptr [esi+0x000142],0x00
  jne LABELB5428
  cmp word ptr [esi+0x000140],0x00
  jne LABELB5428
  cmp word ptr [esi+0x00013E],0x07
  jne LABELB5428
  jmp LABELB5422

  LABELB5422:
  add [esi+0x00034C],ecx
  LABELB5428:
  cmp dword ptr [esi+0x000144],0x00
  jne LABELBAA4D
  cmp word ptr [esi+0x000142],0x00
  jne LABELBAA4D
  cmp word ptr [esi+0x000140],0x00
  jne LABELBAA4D
  cmp word ptr [esi+0x00013E],0x08
  jmp LABELB13C0

  LABELB13C0:
  jne LABELBAA4D
  LABELB13C6:
  add [esi+0x00034C],ecx
  LABELBAA4D:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  
  START:
  cmp dword ptr [esi+0x190],0x05 
  je LABELB1321
  mov edi,0x00000002 
  xor ebp,ebp
  cmp [esi+0x13E],di
  mov bl,0xF6
  jg LABELB5CBC
  push ebp
  call 0x48CDE0
  cmp [esi+0x190],ebp
  je LABELB5AAC
  cmp [esi+0x140],di
  jnl LABELB5AAC
  fld dword ptr [0x8589F0] 
  push ecx
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  fldz 
  mov [esi+0x142],bp
  mov [esi+0x140],di
  fst dword ptr [esi+0x124]
  fst dword ptr [esi+0x128]
  push 0x03 
  fst dword ptr [esi+0x12C]
  lea ecx,[esp+0x000000E0]
  fld dword ptr [0x867860] 
  push ecx
  fst dword ptr [esi+0x11C]
  push 0x01 
  fstp dword ptr [esi+0x120]
  mov ecx,esi
  fst dword ptr [esp+0x000000E8]
  fstp dword ptr [esp+0x000000EC]
  ;# weird seq 890 stuff
  movsx edx,word ptr [esi+0x13E]
  add edx,0x06
  mov [esp+0x20],edx
  fild dword ptr [esp+0x20]
  fstp dword ptr [esp+0x000000F0]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036C 
  call eax
  
  lea edi,[ebp+0x04]
  lea esp,[esp+0x00]
  ;# custom
  fld dword ptr [esp+0x000000E4]
  fadd dword ptr [0x871538]
  fstp dword ptr [esp+0x000000E4]
  
  LABELB5A40:
  call 0x4098D0
  xor edx,edx
  mov ecx,0x00000168 
  div ecx
  test edx,edx
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  jnl LABELB5A60
  fadd dword ptr [0x871554] 
  LABELB5A60:
  fstp dword ptr [esp+0x000000DC]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push 0x03 
  lea eax,[esp+0x000000E0]
  
  push eax
  push 0x01 
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  ;# 37B
  push 0x0000036C
  call edx
  sub edi,0x01 
  jne LABELB5A40
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABELB5AAC:
  cmp [esi+0x140],bp
  jne LABELB5BC2
  fld dword ptr [0x871544] 
  sub esp,0x0C 
  fstp dword ptr [esp+0x08]
  mov ecx,esi
  fld dword ptr [esi+0x378]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp+0x04]
  fldz 
  fstp dword ptr [esp]
  call 0x48CCA0
  fld dword ptr [esi+0x378]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x378]
  fld dword ptr [0x85ABE4] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jp LABELB5B1D
  fstp dword ptr [esi+0x378]
  jmp LABELB5B1F
  LABELB5B1D:
  fstp st0
  LABELB5B1F:
  add word ptr [esi+0x36E],0x0F 
  fld dword ptr [esi+0x11C]
  fld qword ptr [0x867840] 
  fadd st1,st0
  fxch st1
  fstp dword ptr [esi+0x11C]
  fadd dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  fld1 
  fcom dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x05 
  jp LABELB5B89
  fst dword ptr [esi+0x11C]
  push edi
  fstp dword ptr [esi+0x120]
  mov eax,0x000003E3 
  sub ax,[esi+0x13E]
  fld dword ptr [0x8596B8] 
  push 0x01 
  push 0x05 
  push ecx
  fstp dword ptr [esp]
  mov ecx,esi
  push eax
  call 0x4B0F50
  jmp LABELB5B8B
  LABELB5B89:
  fstp st0
  LABELB5B8B:
  movsx ecx,word ptr [esi+0x36E]
  mov edx,[esi+0x35C]
  mov [esp+0x14],ecx
  sub esp,0x08 
  lea ecx,[esi+0x04]
  fild dword ptr [esp+0x1C]
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  fstp dword ptr [esp+0x04]
  fld dword ptr [edx]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5BC2:
  cmp word ptr [esi+0x140],0x01 
  jne LABELB5C2E
  fld dword ptr [0x871544] 
  add word ptr [esi+0x36E],0x4B 
  sub esp,0x0C 
  fstp dword ptr [esp+0x08]
  mov ecx,esi
  fld dword ptr [0x8589F0] 
  fstp dword ptr [esp+0x04]
  fldz 
  fstp dword ptr [esp]
  call 0x48CCA0
  movsx eax,word ptr [esi+0x36E]
  mov ecx,[esi+0x35C]
  mov [esp+0x14],eax
  sub esp,0x08 
  fild dword ptr [esp+0x1C]
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx]
  lea ecx,[esi+0x04]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5C2E:
  cmp [esi+0x140],di
  jne LABELB5C85
  fldz 
  fst dword ptr [esi+0x0F4]
  fst dword ptr [esi+0x0F8]
  mov [esi+0x36E],bp
  fld dword ptr [esi+0x11C]
  fld qword ptr [0x857F78] 
  fsub st1,st0
  fxch st1
  fstp dword ptr [esi+0x11C]
  fsubr dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  add [esi+0x113],bl
  fcomp dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x41 
  je LABELB1321
  LABELB5C85:
  movsx edx,word ptr [esi+0x36E]
  mov eax,[esi+0x35C]
  mov [esp+0x14],edx
  sub esp,0x08 
  lea ecx,[esi+0x04]
  fild dword ptr [esp+0x1C]
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5CBC:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0003 
  jl LABELB600A
  cmp ax,0x0005 
  jg LABELB600A
  push ebp
  mov ecx,esi
  call 0x48CDE0
  push edi
  mov ecx,esi
  call 0x48CE30
  cmp [esi+0x190],ebp
  je LABELB5E1C
  cmp [esi+0x140],di
  jnl LABELB5E1C
  fld dword ptr [0x8589F0] 
  push ecx
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  fldz 
  mov [esi+0x142],bp
  mov [esi+0x140],di
  fst dword ptr [esi+0x124]
  fst dword ptr [esi+0x128]
  push 0x03 
  fst dword ptr [esi+0x12C]
  lea eax,[esp+0x000000BC]
  fld dword ptr [0x867860] 
  push eax
  fst dword ptr [esi+0x11C]
  push 0x01 
  fstp dword ptr [esi+0x120]
  fst dword ptr [esp+0x000000C4]
  fstp dword ptr [esp+0x000000C8]
  movsx ecx,word ptr [esi+0x13E]
  add ecx,0x06
  mov [esp+0x20],ecx
  fild dword ptr [esp+0x20]
  fsub qword ptr [0x857F80] 
  fstp dword ptr [esp+0x000000CC]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036C 
  call edx
  
  
  mov edi,0x00000004 
  lea esp,[esp+0x00]
  
  ;#custom
  fld dword ptr [esp+0x000000C0]
  fadd dword ptr [0x871538]
  fstp dword ptr [esp+0x000000C0]
  
  LABELB5DB0:
  call 0x4098D0
  xor edx,edx
  mov ecx,0x00000168 
  div ecx
  test edx,edx
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  jnl LABELB5DD0
  fadd dword ptr [0x871554] 
  LABELB5DD0:
  fstp dword ptr [esp+0x000000B8]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push 0x03 
  lea eax,[esp+0x000000BC]
  
  push eax
  push 0x01 
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  ;# 37B
  push 0x0000036C
  call edx
  sub edi,0x01 
  jne LABELB5DB0
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABELB5E1C:
  cmp [esi+0x140],bp
  jne LABELB5F16
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx+0x04]
  fsub qword ptr [0x85B848] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [ecx+0x04]
  fldz 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABELB5E93
  fst dword ptr [ecx+0x04]
  sub esp,0x0C 
  fld dword ptr [0x871544] 
  mov ecx,esi
  fstp dword ptr [esp+0x08]
  fld dword ptr [0x87153C] 
  fstp dword ptr [esp+0x04]
  fstp dword ptr [esp]
  call 0x48CCA0
  fld1 
  mov eax,[esi]
  mov edx,[eax+0x20]
  fst dword ptr [esi+0x11C]
  mov ecx,esi
  fstp dword ptr [esi+0x120]
  call edx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABELB5E93:
  fstp st0
  fld dword ptr [esi+0x11C]
  fld qword ptr [0x867840] 
  fadd st1,st0
  fxch st1
  fstp dword ptr [esi+0x11C]
  fadd dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  fld1 
  fcom dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x05 
  jp LABELB5EF7
  fst dword ptr [esi+0x11C]
  push edi
  fstp dword ptr [esi+0x120]
  mov eax,0x000003E6 
  sub ax,[esi+0x13E]
  fld dword ptr [0x8596B8] 
  push 0x01 
  push 0x0F 
  push ecx
  fstp dword ptr [esp]
  mov ecx,esi
  push eax
  call 0x4B0F50
  jmp LABELB5EF9
  LABELB5EF7:
  fstp st0
  LABELB5EF9:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5F16:
  cmp word ptr [esi+0x140],0x01 
  jne LABELB5FB3
  fld dword ptr [esi+0x378]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x378]
  fld dword ptr [0x8589F0] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jp LABELB5F57
  fstp dword ptr [esi+0x378]
  jmp LABELB5F59
  LABELB5F57:
  fstp st0
  LABELB5F59:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x0C 
  fadd qword ptr [0x8581B8] 
  mov ecx,esi
  fstp dword ptr [eax+0x04]
  add word ptr [esi+0x36E],0x4B 
  fld dword ptr [0x871544] 
  fstp dword ptr [esp+0x08]
  fld dword ptr [esi+0x378]
  fstp dword ptr [esp+0x04]
  fldz 
  fstp dword ptr [esp]
  call 0x48CCA0
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5FB3:
  cmp [esi+0x140],di
  jne LABELB600A
  fldz 
  fst dword ptr [esi+0x0F4]
  fst dword ptr [esi+0x0F8]
  mov [esi+0x36E],bp
  fld dword ptr [esi+0x11C]
  fld qword ptr [0x857F78] 
  fsub st1,st0
  fxch st1
  fstp dword ptr [esi+0x11C]
  fsubr dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  add [esi+0x113],bl
  fcomp dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x41 
  je LABELB1321
  LABELB600A:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x14],ecx
  fild dword ptr [esp+0x14]
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x12C]
  fadd qword ptr [0x871520] 
  fstp dword ptr [esi+0x12C]
  fld dword ptr [0x85C040] 
  fcomp dword ptr [esi+0x0EC]
  fnstsw ax
  test ah,0x05 
  jnp LABELB1321
  fld dword ptr [esi+0x0EC]
  fcomp qword ptr [0x85B970] 
  fnstsw ax
  test ah,0x05 
  jnp LABELB1321
  fld dword ptr [0x85B834] 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x05 
  jnp LABELB1321
  fld dword ptr [0x8579A8] 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x41 
  je LABELB1321
  jmp LABELB1C7A

  LABELB1321:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABELB5E8B:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 

  LABELB1C7A:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABELB5E8B
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
end

func satoriS_FANTASYORB_BULLET_0F
  ;#004BB6B8
  fstp st0
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x08]
  fcom dword ptr [0x85C590]
  fnstsw ax
  test ah,0x41
  jne START
  fcom dword ptr [0x85BDB8]
  fnstsw ax
  test ah,0x41
  jne START1
  jmp START2
  
  START2:
  fstp st0
  ;# fstp st2??
  fstp st0
  mov eax,0x11
  mov ebx,0x00000001 
  call 0x4098D0
  xor edx,edx
  mov ecx,0x000014
  div ecx
  test edx,edx
  mov [esp+0x0C],edx
  fild dword ptr [esp+0x0C]
  jnl LABELBBC06
  fadd dword ptr [0x871554]
  LABELBBC06:
  fadd qword ptr [0x858990]
  mov edx,[esi+0x00035C]
  fstp dword ptr [esp+0x0C]
  fld dword ptr [esp+0x0C]
  fstp dword ptr [edx+0x04]
  mov ecx,[esi+0x00035C]
  fldz 
  fcomp dword ptr [ecx+0x08]
  fnstsw ax
  test ah,0x44
  jnp LABELBCA18
  jmp LABELBAED2


  
  START1:
  fstp st0
  mov ecx,[esi+0x00035C]
  mov eax,0x11
  mov ebx,0x00000001 
  fcomp dword ptr [ecx+0x08]
  fnstsw ax
  test ah,0x44
  jnp LABELBCA18
  jmp LABELBAED2

  LABELBAED2:
  fld dword ptr [ecx+0x08]
  mov edi,[esi]
  call 0x820230
  mov ecx,esi
  push eax
  mov eax,[edi+0x0C]
  call eax
  jmp LABELBCA18

  START:
  fstp st0
  mov eax,0x11
  mov ebx,0x00000001 
  fld dword ptr [0x85AD14] 
  mov [esi+0x36C],bx
  mov [esi+0x194],bl
  mov ecx,[esi+0x35C]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fcomp dword ptr [ecx+0x08]
  fnstsw ax
  test ah,0x44 
  jnp LABELBCA18
  jmp LABELBADF7

  LABELBADF7:
  fld dword ptr [ecx+0x08]
  mov edi,[esi]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  jmp LABELBCA18

  LABELBCA18:
  pop edi
  pop esi
  pop ebx
  add esp,0x14 
  ret 
end

005C182F = satoriS_FANTASYORB
005C1838 = satoriS_FANTASYORB_AIR
005C1846 = satoriS_FANTASYORB_BULLET
005C184C = satoriS_FANTASYORB_BULLET_0F

;# 600 -> 626
func satoriS_AUTUMNFALL
  mov eax,0x07
  mov ebx,0x12C
  mov ecx,0x06
  mov edx,0x01
  mov edi,0x55
  mov ebp,0xFFFFFFFF
  mov ecx,esi
  fstp st0
  call 0x487CA0
  push 0x02 
  push 0x06 
  mov ecx,esi
  call 0x46B370
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0001 
  mov ebx,0x0000001E 
  jne LABELA1E5C
  cmp [esi+0x144],ebx
  jg LABEL9D671
  cmp ax,ax
  jne LABELA1E5C
  cmp word ptr [esi+0x7D0],0x05 
  jnl LABELA1E5C
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000005 
  idiv ecx
  test edx,edx
  jne LABELA1E5C
  ;# SOUND FANTASY ORB 1
  push 0x48 
  mov ecx,esi
  call 0x464980
  movsx eax,word ptr [esi+0x7D0]
  mov edx,eax
  shl edx,0x04 
  sub edx,eax
  lea eax,[edx+edx-0x000000E1]
  mov [esp+0x20],eax
  mov ecx,0x00000003 
  push ecx
  fild dword ptr [esp+0x24]
  fstp dword ptr [esp+0x00000164]
  fld dword ptr [0x85B3B0] 
  fstp dword ptr [esp+0x00000168]
  movsx eax,word ptr [esi+0x7D0]
  cdq 
  idiv ecx
  mov [esp+0x24],edx
  fild dword ptr [esp+0x24]
  lea edx,[esp+0x00000164]
  push edx
  push 0x01 
  fadd qword ptr [0x857F80] 
  fstp dword ptr [esp+0x00000174]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esp+0x0000016C]
  push eax
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857958] 
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  faddp 
  fstp dword ptr [esp+0x34]
  fld dword ptr [esp+0x34]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x00000178]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  fmul qword ptr [0x857958] 
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x38],ecx
  mov ecx,esi
  fadd qword ptr [0x859630] 
  fild dword ptr [esp+0x38]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x38]
  fld dword ptr [esp+0x38]
  fstp dword ptr [esp]
  push 0x0000036D
  call 0x46EB30
  movsx eax,word ptr [esi+0x7D0]
  mov edx,eax
  shl edx,0x04 
  sub edx,eax
  add edx,edx
  mov eax,0x000000E1 
  sub eax,edx
  mov [esp+0x20],eax
  mov ecx,0x00000003 
  push ecx
  fild dword ptr [esp+0x24]
  fstp dword ptr [esp+0x00000164]
  fld dword ptr [0x85B3B0] 
  fstp dword ptr [esp+0x00000168]
  movsx eax,word ptr [esi+0x7D0]
  cdq 
  idiv ecx
  mov [esp+0x24],edx
  fild dword ptr [esp+0x24]
  lea edx,[esp+0x00000164]
  push edx
  push 0x01 
  fadd qword ptr [0x857F80] 
  fstp dword ptr [esp+0x00000174]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esp+0x0000016C]
  push eax
  fchs 
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fmul qword ptr [0x857958] 
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  faddp 
  fstp dword ptr [esp+0x34]
  fld dword ptr [esp+0x34]
  fstp dword ptr [esp]
  push ecx
  fld dword ptr [esp+0x00000178]
  fchs 
  fstp dword ptr [esp]
  call 0x4095F0
  fmul qword ptr [0x857958] 
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x38],ecx
  mov ecx,esi
  fadd qword ptr [0x859630] 
  fild dword ptr [esp+0x38]
  fmulp st1
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x38]
  fld dword ptr [esp+0x38]
  fstp dword ptr [esp]
  push 0x0000036D
  call 0x46EB30
  add word ptr [esi+0x7D0],0x01 
  LABELA1E5C:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABELA1E7C
  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00 
  mov ecx,esi
  call eax
  push ebx
  push 0x06 
  mov ecx,esi
  call 0x46B370
  LABELA1E7C:
  cmp word ptr [esi+0x13E],0x00 
  jne LABELA3DCC
  cmp word ptr [esi+0x140],0x02 
  jne LABELA3DCC
  cmp word ptr [esi+0x142],0x00 
  jne LABELA3DCC
  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  movzx eax,byte ptr [esi+0x104]
  push 0x01 
  push eax
  fstp dword ptr [esp+0x28]
  movsx ecx,al
  fld dword ptr [esp+0x28]
  sub esp,0x08 
  add ecx,ecx
  mov [esp+0x30],ecx
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fisub dword ptr [esp+0x30]
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABELA3DCC:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
  
  LABEL9D671:
  mov eax,[esi]
  mov edx,[eax+0x14]
  mov ecx,esi
  call edx
  jmp LABELA3DCC
end

;# 650 -> 676
func satoriS_AUTUMNFALL_AIR
  mov eax,0x15
  mov ebx,0x12C
  mov ecx,0x06
  mov edx,0x01
  mov edi,0x55
  mov ebp,0xFFFFFFFF
  cmp word ptr [esi+0x13E],0x04 
  fstp st0
  jne LABELA1F3A
  mov ecx,esi
  call 0x487CA0
  LABELA1F3A:
  push 0x02 
  push 0x06 
  mov ecx,esi
  call 0x46B370
  movzx eax,word ptr [esi+0x13E]
  mov edi,0x00000001 
  cmp ax,di
  jne LABELA1F66
  cmp dword ptr [esi+0x144],0x3C 
  jg LABEL957C4
  cmp ax,di
  LABELA1F66:
  jle LABELA1FB2
  cmp ax,0x0004 
  jnl LABELA1FB2
  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub dword ptr [esi+0x100]
  fstp dword ptr [esi+0x0F8]
  call 0x487EA0
  test al,al
  je LABELA1FB2
  mov ecx,esi
  call 0x4397F0
  mov ecx,esi
  fstp dword ptr [esi+0x0F0]
  call 0x4636B0
  mov edx,[esi]
  mov eax,[edx+0x0C]
  push 0x04 
  mov ecx,esi
  call eax
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
  LABELA1FB2:
  cmp [esi+0x13E],di
  jne LABELA2153
  cmp word ptr [esi+0x7D0],0x05 
  jnl LABELA2153
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000005 
  idiv ecx
  test edx,edx
  jne LABELA2153
  ;# SOUND FANTASY ORB 1
  push 0x48 
  mov ecx,esi
  call 0x464980
  movsx eax,word ptr [esi+0x7D0]
  mov edx,eax
  shl edx,0x04 
  sub edx,eax
  lea eax,[edx+edx-0x000000E1]
  mov [esp+0x20],eax
  mov ecx,0x00000003 
  push ecx
  fild dword ptr [esp+0x24]
  fstp dword ptr [esp+0x00000208]
  fld dword ptr [0x85B3B0] 
  fstp dword ptr [esp+0x0000020C]
  movsx eax,word ptr [esi+0x7D0]
  cdq 
  idiv ecx
  mov ecx,esi
  mov [esp+0x24],edx
  fild dword ptr [esp+0x24]
  lea edx,[esp+0x00000208]
  push edx
  push edi
  fadd qword ptr [0x857F80] 
  fstp dword ptr [esp+0x00000218]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push eax
  fadd qword ptr [0x85B900] 
  movsx eax,al
  fstp dword ptr [esp+0x30]
  lea eax,[eax+eax*0x8]
  fld dword ptr [esp+0x30]
  sub esp,0x08 
  add eax,eax
  mov [esp+0x38],eax
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x38]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x38]
  fld dword ptr [esp+0x38]
  fstp dword ptr [esp]
  push 0x0000036D
  call 0x46EB30
  movsx eax,word ptr [esi+0x7D0]
  mov ecx,eax
  shl ecx,0x04 
  sub ecx,eax
  add ecx,ecx
  mov edx,0x000000E1 
  sub edx,ecx
  mov [esp+0x20],edx
  mov ecx,0x00000003 
  push ecx
  fild dword ptr [esp+0x24]
  fstp dword ptr [esp+0x00000208]
  fld dword ptr [0x85B3B0] 
  fstp dword ptr [esp+0x0000020C]
  movsx eax,word ptr [esi+0x7D0]
  cdq 
  idiv ecx
  mov [esp+0x24],edx
  fild dword ptr [esp+0x24]
  lea edx,[esp+0x00000208]
  push edx
  push edi
  fadd qword ptr [0x857F80] 
  fstp dword ptr [esp+0x00000218]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push eax
  fadd qword ptr [0x85B900] 
  movsx eax,al
  fstp dword ptr [esp+0x30]
  sub esp,0x08 
  fld dword ptr [esp+0x38]
  lea eax,[eax+eax*0x8]
  add eax,eax
  fstp dword ptr [esp+0x04]
  mov [esp+0x38],eax
  fild dword ptr [esp+0x38]
  mov ecx,esi
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x38]
  fld dword ptr [esp+0x38]
  fstp dword ptr [esp]
  push 0x0000036D
  call 0x46EB30
  add [esi+0x7D0],di
  LABELA2153:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABELA2169
  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00 
  mov ecx,esi
  call eax
  LABELA2169:
  cmp word ptr [esi+0x13E],0x00 
  jne LABELA2207
  cmp word ptr [esi+0x140],0x02 
  jne LABELA2207
  cmp word ptr [esi+0x142],0x00 
  jne LABELA2207
  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  fadd qword ptr [0x85B900] 
  movzx eax,byte ptr [esi+0x104]
  push edi
  push eax
  fstp dword ptr [esp+0x28]
  movsx ecx,al
  fld dword ptr [esp+0x28]
  sub esp,0x08 
  add ecx,ecx
  mov [esp+0x30],ecx
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fisub dword ptr [esp+0x30]
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABELA2207:
  cmp dword ptr [esi+0x144],0x00 
  jne LABELA3DCC
  cmp word ptr [esi+0x142],0x00 
  jne LABELA3DCC
  cmp word ptr [esi+0x140],0x00 
  jne LABELA3DCC
  cmp word ptr [esi+0x13E],0x04 
  jne LABELA3DCC
  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x09 
  mov ecx,esi
  call eax
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 

  LABEL957C4:
  mov edx,[esi]
  mov eax,[edx+0x14]
  mov ecx,esi
  call eax
  LABELA3DCC:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

;# 850 -> 876
func satoriS_AUTUMNFALL_BULLET
  cmp word ptr [esi+0x13E],0x05
  jle START
  cmp word ptr [esi+0x13E],0x08
  jle START1
  
  mov eax,[esi+0x00035C]
  fld dword ptr [eax]
  sub esp,0x08
  fstp dword ptr [esi+0x00012C]
  lea ecx,[esi+0x04]
  fld dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [esi+0x00011C]
  fadd qword ptr [0x867840]
  fstp dword ptr [esi+0x00011C]
  fld dword ptr [esi+0x000120]
  fmul qword ptr [0x8579D8]
  fstp dword ptr [esi+0x000120]
  mov al,[esi+0x000113]
  cmp al,0x0A
  jb LABELB1321
  sub al,0x0A
  mov [esi+0x000113],al
  movsx edx,byte ptr [esi+0x000104]
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  fmul dword ptr [esi+0x0000F4]
  fadd dword ptr [esi+0x0000EC]
  fstp dword ptr [esi+0x0000EC]
  fld dword ptr [esi+0x0000F8]
  fadd dword ptr [esi+0x0000F0]
  fstp dword ptr [esi+0x0000F0]

  mov ecx,esi
  call 0x438C60
  or ecx,0xFFFFFFFF
  test al,al
  je LABELB8039X
  add [esi+0x00034C],ecx
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABELB8039X:
  cmp dword ptr [esi+0x000144],0x00
  jne LABELBAA4DX
  cmp word ptr [esi+0x000142],0x00
  jne LABELB5428X
  cmp word ptr [esi+0x000140],0x00
  jne LABELB5428X
  cmp word ptr [esi+0x00013E],0x0A
  jne LABELB5428X
  jmp LABELB5422X

  LABELB5422X:
  add [esi+0x00034C],ecx
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABELB5428X:
  cmp dword ptr [esi+0x000144],0x00
  jne LABELBAA4DX
  cmp word ptr [esi+0x000142],0x00
  jne LABELBAA4DX
  cmp word ptr [esi+0x000140],0x00
  jne LABELBAA4DX
  cmp word ptr [esi+0x00013E],0x0B
  jmp LABELB13C0X

  LABELB13C0X:
  jne LABELBAA4DX
  LABELB13C6X:
  add [esi+0x00034C],ecx
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABELBAA4DX:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 



  START1:
  mov eax,[esi+0x000144]
  lea ecx,[eax+eax*0x2]
  add ecx,ecx
  mov [esp+0x20],ecx
  fild dword ptr [esp+0x20]
  push ecx
  fstp dword ptr [esp]
  call 0x409580
  fadd st0,st0
  add esp,0x04
  fadd qword ptr [0x8677C8]
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [esi+0x00011C]
  fstp dword ptr [esi+0x000120]
  mov al,[esi+0x000113]
  cmp al,0x19
  jb LABELB1321
  sub al,0x19
  mov [esi+0x000113],al
  mov ecx,esi
  call 0x438C60
  or ecx,0xFFFFFFFF
  test al,al
  je LABELB8039
  add [esi+0x00034C],ecx
  LABELB8039:
  cmp dword ptr [esi+0x000144],0x00
  jne LABELBAA4D
  cmp word ptr [esi+0x000142],0x00
  jne LABELB5428
  cmp word ptr [esi+0x000140],0x00
  jne LABELB5428
  cmp word ptr [esi+0x00013E],0x07
  jne LABELB5428
  jmp LABELB5422

  LABELB5422:
  add [esi+0x00034C],ecx
  LABELB5428:
  cmp dword ptr [esi+0x000144],0x00
  jne LABELBAA4D
  cmp word ptr [esi+0x000142],0x00
  jne LABELBAA4D
  cmp word ptr [esi+0x000140],0x00
  jne LABELBAA4D
  cmp word ptr [esi+0x00013E],0x08
  jmp LABELB13C0

  LABELB13C0:
  jne LABELBAA4D
  LABELB13C6:
  add [esi+0x00034C],ecx
  LABELBAA4D:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  
  START:
  cmp dword ptr [esi+0x190],0x05 
  je LABELB1321
  mov edi,0x00000002 
  xor ebp,ebp
  cmp [esi+0x13E],di
  mov bl,0xF6
  jg LABELB5CBC
  push ebp
  call 0x48CDE0
  cmp [esi+0x190],ebp
  je LABELB5AAC
  cmp [esi+0x140],di
  jnl LABELB5AAC
  fld dword ptr [0x8589F0] 
  push ecx
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  fldz 
  mov [esi+0x142],bp
  mov [esi+0x140],di
  fst dword ptr [esi+0x124]
  fst dword ptr [esi+0x128]
  push 0x03 
  fst dword ptr [esi+0x12C]
  lea ecx,[esp+0x000000E0]
  fld dword ptr [0x867860] 
  push ecx
  fst dword ptr [esi+0x11C]
  push 0x01 
  fstp dword ptr [esi+0x120]
  mov ecx,esi
  fst dword ptr [esp+0x000000E8]
  fstp dword ptr [esp+0x000000EC]
  ;# weird seq 890 stuff
  movsx edx,word ptr [esi+0x13E]
  add edx,0x06
  mov [esp+0x20],edx
  fild dword ptr [esp+0x20]
  fstp dword ptr [esp+0x000000F0]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036D
  call eax
  
  lea edi,[ebp+0x04]
  lea esp,[esp+0x00]
  ;# custom
  fld dword ptr [esp+0x000000E4]
  fadd dword ptr [0x871538]
  fstp dword ptr [esp+0x000000E4]
  
  LABELB5A40:
  call 0x4098D0
  xor edx,edx
  mov ecx,0x00000168 
  div ecx
  test edx,edx
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  jnl LABELB5A60
  fadd dword ptr [0x871554] 
  LABELB5A60:
  fstp dword ptr [esp+0x000000DC]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push 0x03 
  lea eax,[esp+0x000000E0]
  
  push eax
  push 0x01 
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  ;# 37B
  push 0x0000036D
  call edx
  sub edi,0x01 
  jne LABELB5A40
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABELB5AAC:
  cmp [esi+0x140],bp
  jne LABELB5BC2
  fld dword ptr [0x871544] 
  sub esp,0x0C 
  fstp dword ptr [esp+0x08]
  mov ecx,esi
  fld dword ptr [esi+0x378]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp+0x04]
  fldz 
  fstp dword ptr [esp]
  call 0x48CCA0
  fld dword ptr [esi+0x378]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x378]
  fld dword ptr [0x85ABE4] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jp LABELB5B1D
  fstp dword ptr [esi+0x378]
  jmp LABELB5B1F
  LABELB5B1D:
  fstp st0
  LABELB5B1F:
  add word ptr [esi+0x36E],0x0F 
  fld dword ptr [esi+0x11C]
  fld qword ptr [0x867840] 
  fadd st1,st0
  fxch st1
  fstp dword ptr [esi+0x11C]
  fadd dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  fld1 
  fcom dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x05 
  ;# from jp
  jmp LABELB5B89
  fst dword ptr [esi+0x11C]
  push edi
  fstp dword ptr [esi+0x120]
  mov eax,0x000003E3 
  sub ax,[esi+0x13E]
  fld dword ptr [0x8596B8] 
  push 0x01 
  push 0x05 
  push ecx
  fstp dword ptr [esp]
  mov ecx,esi
  push eax
  call 0x4B0F50
  jmp LABELB5B8B
  LABELB5B89:
  fstp st0
  LABELB5B8B:
  movsx ecx,word ptr [esi+0x36E]
  mov edx,[esi+0x35C]
  mov [esp+0x14],ecx
  sub esp,0x08 
  lea ecx,[esi+0x04]
  fild dword ptr [esp+0x1C]
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  fstp dword ptr [esp+0x04]
  fld dword ptr [edx]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5BC2:
  cmp word ptr [esi+0x140],0x01 
  jne LABELB5C2E
  fld dword ptr [0x871544] 
  add word ptr [esi+0x36E],0x4B 
  sub esp,0x0C 
  fstp dword ptr [esp+0x08]
  mov ecx,esi
  fld dword ptr [0x8589F0] 
  fstp dword ptr [esp+0x04]
  fldz 
  fstp dword ptr [esp]
  call 0x48CCA0
  movsx eax,word ptr [esi+0x36E]
  mov ecx,[esi+0x35C]
  mov [esp+0x14],eax
  sub esp,0x08 
  fild dword ptr [esp+0x1C]
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx]
  lea ecx,[esi+0x04]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5C2E:
  cmp [esi+0x140],di
  jne LABELB5C85
  fldz 
  fst dword ptr [esi+0x0F4]
  fst dword ptr [esi+0x0F8]
  mov [esi+0x36E],bp
  fld dword ptr [esi+0x11C]
  fld qword ptr [0x857F78] 
  fsub st1,st0
  fxch st1
  fstp dword ptr [esi+0x11C]
  fsubr dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  add [esi+0x113],bl
  fcomp dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x41 
  je LABELB1321
  LABELB5C85:
  movsx edx,word ptr [esi+0x36E]
  mov eax,[esi+0x35C]
  mov [esp+0x14],edx
  sub esp,0x08 
  lea ecx,[esi+0x04]
  fild dword ptr [esp+0x1C]
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esp+0x1C]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5CBC:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0003 
  jl LABELB600A
  cmp ax,0x0005 
  jg LABELB600A
  push ebp
  mov ecx,esi
  call 0x48CDE0
  push edi
  mov ecx,esi
  call 0x48CE30
  cmp [esi+0x190],ebp
  je LABELB5E1C
  cmp [esi+0x140],di
  jnl LABELB5E1C
  fld dword ptr [0x8589F0] 
  push ecx
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  fldz 
  mov [esi+0x142],bp
  mov [esi+0x140],di
  fst dword ptr [esi+0x124]
  fst dword ptr [esi+0x128]
  push 0x03 
  fst dword ptr [esi+0x12C]
  lea eax,[esp+0x000000BC]
  fld dword ptr [0x867860] 
  push eax
  fst dword ptr [esi+0x11C]
  push 0x01 
  fstp dword ptr [esi+0x120]
  fst dword ptr [esp+0x000000C4]
  fstp dword ptr [esp+0x000000C8]
  movsx ecx,word ptr [esi+0x13E]
  add ecx,0x06
  mov [esp+0x20],ecx
  fild dword ptr [esp+0x20]
  fsub qword ptr [0x857F80] 
  fstp dword ptr [esp+0x000000CC]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000036D
  call edx
  
  
  mov edi,0x00000004 
  lea esp,[esp+0x00]
  
  ;#custom
  fld dword ptr [esp+0x000000C0]
  fadd dword ptr [0x871538]
  fstp dword ptr [esp+0x000000C0]
  
  LABELB5DB0:
  call 0x4098D0
  xor edx,edx
  mov ecx,0x00000168 
  div ecx
  test edx,edx
  mov [esp+0x14],edx
  fild dword ptr [esp+0x14]
  jnl LABELB5DD0
  fadd dword ptr [0x871554] 
  LABELB5DD0:
  fstp dword ptr [esp+0x000000B8]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push 0x03 
  lea eax,[esp+0x000000BC]
  
  push eax
  push 0x01 
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  ;# 37B
  push 0x0000036D
  call edx
  sub edi,0x01 
  jne LABELB5DB0
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABELB5E1C:
  cmp [esi+0x140],bp
  jne LABELB5F16
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx+0x04]
  fsub qword ptr [0x85B848] 
  fstp dword ptr [esp+0x14]
  fld dword ptr [esp+0x14]
  fst dword ptr [ecx+0x04]
  fldz 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABELB5E93
  fst dword ptr [ecx+0x04]
  sub esp,0x0C 
  fld dword ptr [0x871544] 
  mov ecx,esi
  fstp dword ptr [esp+0x08]
  fld dword ptr [0x87153C] 
  fstp dword ptr [esp+0x04]
  fstp dword ptr [esp]
  call 0x48CCA0
  fld1 
  mov eax,[esi]
  mov edx,[eax+0x20]
  fst dword ptr [esi+0x11C]
  mov ecx,esi
  fstp dword ptr [esi+0x120]
  call edx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABELB5E93:
  fstp st0
  fld dword ptr [esi+0x11C]
  fld qword ptr [0x867840] 
  fadd st1,st0
  fxch st1
  fstp dword ptr [esi+0x11C]
  fadd dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  fld1 
  fcom dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x05 
  ;# from jp
  jmp LABELB5EF7
  fst dword ptr [esi+0x11C]
  push edi
  fstp dword ptr [esi+0x120]
  mov eax,0x000003E6 
  sub ax,[esi+0x13E]
  fld dword ptr [0x8596B8] 
  push 0x01 
  push 0x0F 
  push ecx
  fstp dword ptr [esp]
  mov ecx,esi
  push eax
  call 0x4B0F50
  jmp LABELB5EF9
  LABELB5EF7:
  fstp st0
  LABELB5EF9:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5F16:
  cmp word ptr [esi+0x140],0x01 
  jne LABELB5FB3
  fld dword ptr [esi+0x378]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x378]
  fld dword ptr [0x8589F0] 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jp LABELB5F57
  fstp dword ptr [esi+0x378]
  jmp LABELB5F59
  LABELB5F57:
  fstp st0
  LABELB5F59:
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x0C 
  fadd qword ptr [0x8581B8] 
  mov ecx,esi
  fstp dword ptr [eax+0x04]
  add word ptr [esi+0x36E],0x4B 
  fld dword ptr [0x871544] 
  fstp dword ptr [esp+0x08]
  fld dword ptr [esi+0x378]
  fstp dword ptr [esp+0x04]
  fldz 
  fstp dword ptr [esp]
  call 0x48CCA0
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  LABELB5FB3:
  cmp [esi+0x140],di
  jne LABELB600A
  fldz 
  fst dword ptr [esi+0x0F4]
  fst dword ptr [esi+0x0F8]
  mov [esi+0x36E],bp
  fld dword ptr [esi+0x11C]
  fld qword ptr [0x857F78] 
  fsub st1,st0
  fxch st1
  fstp dword ptr [esi+0x11C]
  fsubr dword ptr [esi+0x120]
  fstp dword ptr [esi+0x120]
  add [esi+0x113],bl
  fcomp dword ptr [esi+0x11C]
  fnstsw ax
  test ah,0x41 
  je LABELB1321
  LABELB600A:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x14],ecx
  fild dword ptr [esp+0x14]
  fmul dword ptr [esi+0x0F4]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esi+0x0EC]
  fld dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp dword ptr [esi+0x0F0]
  fld dword ptr [esi+0x12C]
  fadd qword ptr [0x871520] 
  fstp dword ptr [esi+0x12C]
  fld dword ptr [0x85C040] 
  fcomp dword ptr [esi+0x0EC]
  fnstsw ax
  test ah,0x05 
  jnp LABELB1321
  fld dword ptr [esi+0x0EC]
  fcomp qword ptr [0x85B970] 
  fnstsw ax
  test ah,0x05 
  jnp LABELB1321
  fld dword ptr [0x85B834] 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x05 
  jnp LABELB1321
  fld dword ptr [0x8579A8] 
  fcomp dword ptr [esi+0x0F0]
  fnstsw ax
  test ah,0x41 
  je LABELB1321
  jmp LABELB1C7A

  LABELB1321:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABELB5E8B:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 

  LABELB1C7A:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABELB5E8B
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
end

func satoriS_AUTUMNFALL_BULLET_0F
  ;#004BB6B8
  fstp st0
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x08]
  fcom dword ptr [0x85C590]
  fnstsw ax
  test ah,0x41
  jne START
  fcom dword ptr [0x85BDB8]
  fnstsw ax
  test ah,0x41
  jne START1
  jmp START2
  
  START2:
  fstp st0
  ;# fstp st2??
  fstp st0
  mov eax,0x11
  mov ebx,0x00000001 
  call 0x4098D0
  xor edx,edx
  mov ecx,0x000014
  div ecx
  test edx,edx
  mov [esp+0x0C],edx
  fild dword ptr [esp+0x0C]
  jnl LABELBBC06
  fadd dword ptr [0x871554]
  LABELBBC06:
  fadd qword ptr [0x858990]
  mov edx,[esi+0x00035C]
  fstp dword ptr [esp+0x0C]
  fld dword ptr [esp+0x0C]
  fstp dword ptr [edx+0x04]
  mov ecx,[esi+0x00035C]
  fldz 
  fcomp dword ptr [ecx+0x08]
  fnstsw ax
  test ah,0x44
  jnp LABELBCA18
  jmp LABELBAED2


  
  START1:
  fstp st0
  mov ecx,[esi+0x00035C]
  mov eax,0x11
  mov ebx,0x00000001 
  fcomp dword ptr [ecx+0x08]
  fnstsw ax
  test ah,0x44
  jnp LABELBCA18
  jmp LABELBAED2

  LABELBAED2:
  fld dword ptr [ecx+0x08]
  mov edi,[esi]
  call 0x820230
  mov ecx,esi
  push eax
  mov eax,[edi+0x0C]
  call eax
  jmp LABELBCA18

  START:
  fstp st0
  mov eax,0x11
  mov ebx,0x00000001 
  fld dword ptr [0x85AD14] 
  mov [esi+0x36C],bx
  mov [esi+0x194],bl
  mov ecx,[esi+0x35C]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fcomp dword ptr [ecx+0x08]
  fnstsw ax
  test ah,0x44 
  jnp LABELBCA18
  jmp LABELBADF7

  LABELBADF7:
  fld dword ptr [ecx+0x08]
  mov edi,[esi]
  call 0x820230
  mov edx,[edi+0x0C]
  mov ecx,esi
  push eax
  call edx
  jmp LABELBCA18

  LABELBCA18:
  pop edi
  pop esi
  pop ebx
  add esp,0x14 
  ret 
end

005C1C17 = satoriS_AUTUMNFALL
005C1C1D = satoriS_AUTUMNFALL_AIR
005C1C2E = satoriS_AUTUMNFALL_BULLET
005C1C34 = satoriS_AUTUMNFALL_BULLET_0F

;# 607 -> 610
func satoriS_CONFLAGRATION
  ;#00600932
  mov edi,0x02
  mov ecx,esi
  fstp st0
  call 0x487CA0
  push edi
  push 0x05 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL20095B

  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00 
  mov ecx,esi
  call eax
  LABEL20095B:
  cmp word ptr [esi+0x13E],0x00 
  jne LABEL1F1715

  cmp word ptr [esi+0x142],0x00 
  jne LABEL1F1715

  cmp word ptr [esi+0x140],0x03 
  jne LABEL2009FB

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85C208] 
  movsx ecx,al
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  imul ecx,ecx,0x32
  push 0x01 
  push eax
  sub esp,0x08 
  mov [esp+0x20],ecx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fisub dword ptr [esp+0x20]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABEL2009FB:
  cmp word ptr [esi+0x142],0x00 
  jne LABEL1F1715

  cmp word ptr [esi+0x140],0x07 
  jne LABEL1F1715

  fld dword ptr [0x867810] 
  push ecx
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  fld dword ptr [0x85D900] 
  fstp dword ptr [esp+0x00000160]
  push 0x03 
  fld dword ptr [0x85BBE4] 
  lea edx,[esp+0x00000164]
  fstp dword ptr [esp+0x00000168]
  push edx
  fldz 
  mov ebx,0x00000001 
  fstp dword ptr [esp+0x00000170]
  push ebx
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push eax
  movsx eax,al
  imul eax,eax,0x64
  sub esp,0x08 
  mov [esp+0x28],eax
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000035C
  call 0x46EB30
  fld dword ptr [esi+0x0F0]
  movzx ecx,byte ptr [esi+0x104]
  or edi,0xFFFFFFFF
  push edi
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x7F 
  call 0x438CE0
  ;# SOUND CONFLAG 0
  push 0x49
  mov ecx,esi
  call 0x464980
  ;# conflag subseq
  fld dword ptr [0x85C22C]
  fstp dword ptr [esp+0x00000168]
  fldz 
  fstp dword ptr [esp+0x18]
  mov edi,edi
  LABEL200AE0:
  push 0x14 
  call 0x4099F0
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL200AF9

  fadd dword ptr [0x871554] 
  LABEL200AF9:
  fld dword ptr [esp+0x1C]
  push 0x08 
  fmul qword ptr [0x85C068] 
  faddp 
  fstp dword ptr [esp+0x00000168]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL200B28

  fadd dword ptr [0x871554] 
  LABEL200B28:
  fadd qword ptr [0x867830] 
  fstp dword ptr [esp+0x00000164]
  fldz 
  fld dword ptr [esp+0x00000160]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jnp LABEL200B5F

  fcomp dword ptr [0x87153C] 
  fnstsw ax
  test ah,0x41 
  je LABEL200B61

  mov [esi+0x7D0],bx
  jmp LABEL200B68

  LABEL200B5F:
  fstp st0
  LABEL200B61:
  mov [esi+0x7D0],di
  LABEL200B68:
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  movzx ecx,byte ptr [esi+0x7D0]
  push 0x03 
  lea edx,[esp+0x00000164]
  push edx
  movsx edx,al
  imul edx,edx,0x64
  push ecx
  push eax
  sub esp,0x08 
  mov [esp+0x28],edx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000035C
  call 0x46EB30
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x86782C] 
  fcomp dword ptr [esp+0x18]
  fnstsw ax
  test ah,0x41 
  je LABEL200AE0

  LABEL1F1715:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

;# 857 -> 860
func satoriS_CONFLAGRATION_BULLET
  ;#00613988
  cmp dword ptr [esi+0x190],0x05 
  je LABEL20C3B5

  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x0B
  ja LABEL20C7FC

  cmp eax,0x00
  je TABLE00
  cmp eax,0x01
  je TABLE01
  cmp eax,0x02
  je TABLE02
  cmp eax,0x03
  je TABLE03
  cmp eax,0x04
  je TABLE04
  cmp eax,0x05
  je TABLE05
  cmp eax,0x06
  je TABLE06
  cmp eax,0x07
  je TABLE07
  cmp eax,0x08
  je TABLE08
  cmp eax,0x09
  je TABLE09
  cmp eax,0x0A
  je TABLE10
  cmp eax,0x0B
  je TABLE11
  jmp TABLEDEF
  
  TABLE11:
  
  mov eax,[esi+0x00000190]
  cmp eax,0x05
  je LABEL20C3B5

  fldz 
  xor edi,edi
  mov ebp,0x00000001
  lea ebx,[ebp+0x03]
  jmp LABEL20D08D
  LABEL20D08D:

  mov eax,[esi+0x0000035C]
  fstp st0
  fld dword ptr [eax+0x04]
  sub esp,0x08
  fmul qword ptr [0x85B818]
  lea ecx,[esi+0x04]
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  mov al,[esi+0x00000113]
  cmp al,0x0A
  jb LABEL20C3B5

  sub al,0x0A
  mov [esi+0x00000113],al
  movsx eax,byte ptr [esi+0x00000104]
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  fmul dword ptr [esi+0x000000F4]
  fadd dword ptr [esi+0x000000EC]
  fstp dword ptr [esi+0x000000EC]
  fld dword ptr [esi+0x000000F8]
  fmul qword ptr [0x858EA0]
  fadd dword ptr [esi+0x000000F0]
  fstp dword ptr [esi+0x000000F0]
  fldz 
  LABEL20D11B:
  cmp word ptr [esi+0x0000013E],0x02
  jne LABEL20D169

  fld dword ptr [esi+0x0000011C]
  fadd qword ptr [0x858EA8]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x0000011C]
  fstp dword ptr [esi+0x00000120]
  mov al,[esi+0x00000113]
  cmp al,0x1E
  jbe LABEL20D6A6

  sub al,0x1E
  mov [esi+0x00000113],al
  mov al,0xE2
  add [esi+0x00000110],al
  add [esi+0x00000111],al
  LABEL20D169:
  cmp word ptr [esi+0x0000013E],0x03
  jne LABEL20D23D

  mov ecx,0x00000006
  cmp [esi+0x00000190],ecx
  jne LABEL20D191

  mov [esi+0x00000190],edi
  add byte ptr [esi+0x00000194],0x01
  LABEL20D191:
  cmp [esi+0x00000190],ebx
  jne LABEL20D1BD

  movzx eax,word ptr [esi+0x0000036C]
  cmp ax,0x0005
  jnl LABEL20D1BD

  add eax,0x01
  mov [esi+0x0000036C],ax
  mov [esi+0x00000190],edi
  add byte ptr [esi+0x00000194],0x01
  LABEL20D1BD:
  cmp [esi+0x00000144],ecx
  jne LABEL20D23D

  mov ecx,[esi+0x00000398]
  cmp [ecx+0x000006A5],bl
  jl LABEL20D23D

  fst dword ptr [esp+0x00000364]
  push 0x03
  fstp dword ptr [esp+0x0000036C]
  lea ecx,[esp+0x00000368]
  fld dword ptr [0x867860]
  push ecx
  fstp dword ptr [esp+0x00000374]
  movzx eax,byte ptr [esi+0x00000104]
  fld dword ptr [esi+0x000000F0]
  push ebp
  mov edx,[esi]
  push eax
  mov edx,[edx+0x44]
  movsx eax,al
  imul eax,eax,0x64
  sub esp,0x08
  mov [esp+0x28],eax
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x000000EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  ;push 0x0000032B
  push 0x0000035C
  call edx
  jmp LABEL20D23F

  LABEL20D23D:
  fstp st0
  LABEL20D23F:
  cmp [esi+0x0000013E],bx
  jne LABEL20D28A

  cmp dword ptr [esi+0x00000190],0x06
  jne LABEL20D25E

  mov [esi+0x00000190],edi
  add byte ptr [esi+0x00000194],0x01
  LABEL20D25E:
  cmp [esi+0x00000190],ebx
  jne LABEL20D28A

  movzx eax,word ptr [esi+0x0000036C]
  cmp ax,0x0005
  jnl LABEL20D28A

  add eax,0x01
  mov [esi+0x0000036C],ax
  mov [esi+0x00000190],edi
  add byte ptr [esi+0x00000194],0x01
  LABEL20D28A:
  mov ecx,esi
  call 0x438C60
  or ecx,0xFFFFFFFF
  test al,al
  je LABEL20D29E

  add [esi+0x0000034C],ecx
  LABEL20D29E:
  mov eax,[esi+0x00000144]
  cmp eax,edi
  jne LABEL21A12E

  cmp [esi+0x00000142],di
  jne LABEL20D2C7

  cmp [esi+0x00000140],di
  jne LABEL20D2C7

  cmp word ptr [esi+0x0000013E],0x0B
  je LABEL20D31A

  LABEL20D2C7:
  cmp eax,edi
  jne LABEL21A12E

  cmp [esi+0x00000142],di
  jne LABEL20D2EA

  cmp [esi+0x00000140],di
  jne LABEL20D2EA

  cmp [esi+0x0000013E],bx
  je LABEL20D31A

  LABEL20D2EA:
  cmp eax,edi
  jne LABEL21A12E

  cmp [esi+0x00000142],di
  jne LABEL21A12E

  cmp [esi+0x00000140],di
  jne LABEL21A12E

  cmp word ptr [esi+0x0000013E],0x05
  jne LABEL21A12E

  LABEL20D31A:
  add [esi+0x0000034C],ecx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 

  LABEL20D6A6:
  fstp st0
  add dword ptr [esi+0x0000034C],0xFFFFFFFF
  LABEL21A12E:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 

  
  TABLE01:
  fld dword ptr [esi+0x00011C]
  fadd qword ptr [0x857F78]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x00011C]
  fstp dword ptr [esi+0x000120]
  cmp dword ptr [esi+0x000144],0x03
  jl LABEL20C7FC
  mov al,[esi+0x000113]
  cmp al,0x0F
  jb LABEL20C3B5
  sub al,0x0F
  mov [esi+0x000113],al
  jmp LABEL20C7FC
  
  TABLEDEF:
  TABLE00:
  fld dword ptr [esi+0x12C]
  push 0x00 
  fsub qword ptr [0x859910] 
  mov ecx,esi
  fstp dword ptr [esi+0x12C]
  call 0x48CDE0
  push 0x05 
  mov ecx,esi
  call 0x48CE30
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000005 
  idiv ecx
  test edx,edx
  jne LABEL213ABA

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL213A05

  fadd dword ptr [0x871554] 
  LABEL213A05:
  fstp dword ptr [esp+0x000001F8]
  push 0x03 
  fldz 
  lea edx,[esp+0x000001FC]
  fstp dword ptr [esp+0x00000200]
  push edx
  fld dword ptr [0x8589F0] 
  push 0x01 
  fstp dword ptr [esp+0x0000020C]
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fld qword ptr [0x857B20] 
  mov edi,[esi]
  fadd st1,st0
  push eax
  fxch st1
  push 0x000000C8 
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL213A75

  fadd dword ptr [0x871554] 
  LABEL213A75:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL213AA0

  fadd dword ptr [0x871554] 
  LABEL213AA0:
  fsubr qword ptr [esp+0x40]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035C
  call edx
  LABEL213ABA:
  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub qword ptr [0x8579D8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fcomp qword ptr [esp+0x20]
  fnstsw ax
  test ah,0x01 
  jne LABEL213EF5

  cmp dword ptr [esi+0x144],0x02 
  jl LABEL213EF5

  mov ecx,[esi+0x398]
  ;# SOUND CONFLAG 1
  push 0x4A
  call 0x464980
  mov ebx,0x00000007 
  LABEL213B13:
  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL213B2F

  fadd dword ptr [0x871554] 
  LABEL213B2F:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x48]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL213B51

  fadd dword ptr [0x871554] 
  LABEL213B51:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x44]
  push eax
  fstp dword ptr [esp+0x4C]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x54]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0EC]
  mov edi,[esi]
  fadd qword ptr [0x857B20] 
  push ecx
  push ecx
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL213BB1

  fadd dword ptr [0x871554] 
  LABEL213BB1:
  fsubr qword ptr [esp+0x38]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035C 
  call edx
  sub ebx,0x01 
  jne LABEL213B13

  xor edi,edi
  mov [esp+0x10],edi
  LABEL213BDA:
  fild dword ptr [esp+0x10]
  push 0x05 
  fadd qword ptr [0x867830] 
  fstp dword ptr [esp+0x44]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL213C04

  fadd dword ptr [0x871554] 
  LABEL213C04:
  fadd qword ptr [0x871520] 
  fstp dword ptr [esp+0x44]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x48]
  fldz 
  fld dword ptr [esp+0x40]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL213C6D

  fcomp dword ptr [0x87153C] 
  fnstsw ax
  test ah,0x41 
  jp LABEL213C6F

  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push 0x03 
  lea ecx,[esp+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C 
  call eax
  jmp LABEL213CA4

  LABEL213C6D:
  fstp st0
  LABEL213C6F:
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push 0x03 
  lea eax,[esp+0x44]
  push eax
  push 0xFFFFFFFF
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C 
  call edx
  LABEL213CA4:
  add edi,0x3C 
  cmp edi,0x00000168 
  mov [esp+0x10],edi
  jl LABEL213BDA

  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL213CD3

  fadd dword ptr [0x871554] 
  LABEL213CD3:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x48]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL213CF5

  fadd dword ptr [0x871554] 
  LABEL213CF5:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x44]
  push eax
  fstp dword ptr [esp+0x4C]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x54]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0EC]
  mov edi,[esi]
  fadd qword ptr [0x857B20] 
  push ecx
  push ecx
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL213D55

  fadd dword ptr [0x871554] 
  LABEL213D55:
  fsubr qword ptr [esp+0x38]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035C
  call edx
  
  fldz 
  fst dword ptr [esp+0x40]
  push 0x03 
  fstp dword ptr [esp+0x48]
  lea ecx,[esp+0x44]
  fld dword ptr [0x85B870] 
  push ecx
  fstp dword ptr [esp+0x50]
  push 0x01 
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C
  call eax
  
  fld dword ptr [0x85BC44] 
  fstp dword ptr [esp+0x48]
  push 0x03 
  fld dword ptr [0x85C154] 
  lea eax,[esp+0x44]
  fstp dword ptr [esp+0x44]
  push eax
  fld dword ptr [0x85C120] 
  push 0x01 
  fstp dword ptr [esp+0x50]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C
  call edx
  
  fld dword ptr [0x85B230] 
  fstp dword ptr [esp+0x40]
  push 0x03 
  fld dword ptr [0x85C120] 
  lea ecx,[esp+0x44]
  fstp dword ptr [esp+0x48]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C
  call eax
  
  fld dword ptr [0x85BB80] 
  fstp dword ptr [esp+0x40]
  push 0x03 
  fld dword ptr [0x85C120] 
  lea eax,[esp+0x44]
  fstp dword ptr [esp+0x48]
  mov edx,[esi]
  movzx ecx,byte ptr [esi+0x104]
  push eax
  push 0x01 
  fld dword ptr [esi+0x0F0]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C
  call edx
  fld dword ptr [0x85CE90] 
  fstp dword ptr [esp+0x40]
  push 0x03 
  fld dword ptr [0x85C120] 
  lea ecx,[esp+0x44]
  fstp dword ptr [esp+0x48]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C
  call eax

  LABEL20C3B5:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 

  LABEL213EF5:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x18],ecx
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  TABLE02:
  TABLE07:
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x0F8]
  fsub qword ptr [0x867840] 
  fstp dword ptr [esi+0x0F8]
  fld dword ptr [esi+0x378]
  fsub qword ptr [0x85A280] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x378]
  fcomp qword ptr [0x857F90] 
  fnstsw ax
  test ah,0x05 
  jp LABEL213F6E

  fld dword ptr [0x85AE7C] 
  fstp dword ptr [esi+0x378]
  LABEL213F6E:
  cmp dword ptr [esi+0x144],0x1E 
  jl LABEL213F8D

  mov al,[esi+0x113]
  cmp al,0x0F 
  jb LABEL20C3B5

  sub al,0x0F 
  mov [esi+0x113],al
  LABEL213F8D:
  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x18],edx
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  TABLE03:
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x0F8]
  fsub qword ptr [0x857F78] 
  fstp dword ptr [esi+0x0F8]
  fld dword ptr [esi+0x378]
  fsub qword ptr [0x85A280] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x378]
  fcomp qword ptr [0x857F90] 
  fnstsw ax
  test ah,0x05 
  jp LABEL214006

  fld dword ptr [0x85AE7C] 
  fstp dword ptr [esi+0x378]
  LABEL214006:
  cmp dword ptr [esi+0x144],0x1E 
  jl LABEL214025

  mov al,[esi+0x113]
  cmp al,0x0F 
  jb LABEL20C3B5

  sub al,0x0F 
  mov [esi+0x113],al
  LABEL214025:
  movsx eax,byte ptr [esi+0x104]
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  TABLE04:
  fld dword ptr [esi+0x378]
  mov ecx,[esi+0x35C]
  fadd dword ptr [esi+0x12C]
  fstp dword ptr [esi+0x12C]
  fld dword ptr [esi+0x37C]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esi+0x37C]
  fld dword ptr [esi+0x378]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esi+0x378]
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x85AAF8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [ecx+04]
  fsub qword ptr [0x858EA0] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [ecx+04]
  fldz 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jne LABEL2140BB

  fstp dword ptr [ecx+0x04]
  jmp LABEL2140BD

  LABEL2140BB:
  fstp st0
  LABEL2140BD:
  fld dword ptr [ecx+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx]
  lea ecx,[esi+0x04]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [esi+0x37C]
  fadd dword ptr [esi+0x0F8]
  fstp dword ptr [esi+0x0F8]
  cmp dword ptr [esi+0x144],0x00 
  jl LABEL214105

  mov al,[esi+0x113]
  cmp al,0x08 
  jb LABEL20C3B5

  sub al,0x08 
  mov [esi+0x113],al
  LABEL214105:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x18],ecx
  fild dword ptr [esp+0x18]
  jmp LABEL211215

  TABLE05:
  TABLE08:
  TABLE10:
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x11C]
  fld dword ptr [esi+0x378]
  fsub qword ptr [0x857F78] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x378]
  fcomp qword ptr [0x857F90] 
  fnstsw ax
  test ah,0x41 
  jp LABEL21415E

  fld dword ptr [0x85AE7C] 
  fstp dword ptr [esi+0x378]
  LABEL21415E:
  fld dword ptr [esi+0x120]
  fadd dword ptr [esi+0x37C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x37C]
  fsub qword ptr [0x867840] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x37C]
  fcomp qword ptr [0x85D090] 
  fnstsw ax
  test ah,0x41 
  jp LABEL2141A3

  fld dword ptr [0x85DB48] 
  fstp dword ptr [esi+0x37C]
  LABEL2141A3:
  cmp dword ptr [esi+0x144],0x0A 
  jmp LABEL210FEA

  TABLE06:
  push 0x03 
  mov ecx,esi
  call 0x48CDE0
  push 0x01 
  mov ecx,esi
  call 0x48CE30
  cmp byte ptr [esi+0x194],0x00 
  jg LABEL2142D8

  mov ebx,0x00000004 
  LABEL2141D3:
  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL2141EF

  fadd dword ptr [0x871554] 
  LABEL2141EF:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x000001A4]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL214214

  fadd dword ptr [0x871554] 
  LABEL214214:
  fadd qword ptr [0x858210] 
  push 0x03 
  lea edx,[esp+0x000001A0]
  push edx
  fstp dword ptr [esp+0x000001A8]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x000001B0]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edi,[esi]
  fld qword ptr [0x871520] 
  push eax
  fadd st1,st0
  push 0x14 
  fxch st1
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL21427E

  fadd dword ptr [0x871554] 
  LABEL21427E:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x14 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL2142A6

  fadd dword ptr [0x871554] 
  LABEL2142A6:
  fsubr qword ptr [esp+0x40]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035C 
  call edx
  sub ebx,0x01 
  jne LABEL2141D3

  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABEL2142D8:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x0000000A 
  idiv ecx
  test edx,edx
  jne LABEL2143BC

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL21430D

  fadd dword ptr [0x871554] 
  LABEL21430D:
  fstp dword ptr [esp+0x00000110]
  push 0x03 
  fldz 
  lea edx,[esp+0x00000114]
  fstp dword ptr [esp+0x00000118]
  push edx
  fld dword ptr [0x85882C] 
  push 0x01 
  fstp dword ptr [esp+0x00000124]
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fld qword ptr [0x8581F8] 
  mov edi,[esi]
  fadd st1,st0
  push eax
  fxch st1
  push 0x28 
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL21437A

  fadd dword ptr [0x871554] 
  LABEL21437A:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x28 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL2143A2

  fadd dword ptr [0x871554] 
  LABEL2143A2:
  fsubr qword ptr [esp+0x40]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035C
  call edx
  LABEL2143BC:
  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub qword ptr [0x85BA70] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fcomp qword ptr [esp+0x20]
  fnstsw ax
  test ah,0x01 
  jne LABEL214575

  cmp dword ptr [esi+0x144],0x02 
  jl LABEL214575

  mov ecx,[esi+0x398]
  ;# SOUND CONFLAG 1
  push 0x4A
  call 0x464980
  fldz 
  fst dword ptr [esp+0x00000124]
  push 0x03 
  fstp dword ptr [esp+0x0000012C]
  lea ecx,[esp+0x00000128]
  fld dword ptr [0x867810] 
  push ecx
  fstp dword ptr [esp+0x00000134]
  push 0x01 
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C
  call eax
  mov ebx,0x00000004 
  lea ebx,[ebx+0x00000000]
  LABEL214470:
  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL21448C

  fadd dword ptr [0x871554] 
  LABEL21448C:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x0000012C]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2144B1

  fadd dword ptr [0x871554] 
  LABEL2144B1:
  fadd qword ptr [0x858210] 
  push 0x03 
  lea ecx,[esp+0x00000128]
  push ecx
  fstp dword ptr [esp+0x00000130]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x00000138]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edi,[esi]
  fld qword ptr [0x871520] 
  push edx
  fadd st1,st0
  push 0x14 
  fxch st1
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL21451B

  fadd dword ptr [0x871554] 
  LABEL21451B:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x14 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL214543

  fadd dword ptr [0x871554] 
  LABEL214543:
  fsubr qword ptr [esp+0x40]
  mov eax,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035C 
  call eax
  sub ebx,0x01 
  jne LABEL214470

  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABEL214575:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x18],ecx
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  TABLE09:
  fld dword ptr [esi+0x12C]
  push 0x00 
  fsub qword ptr [0x859910] 
  mov ecx,esi
  fstp dword ptr [esi+0x12C]
  call 0x48CDE0
  push 0x05 
  mov ecx,esi
  call 0x48CE30
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000005 
  idiv ecx
  test edx,edx
  jne LABEL214697

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2145E2

  fadd dword ptr [0x871554] 
  LABEL2145E2:
  fstp dword ptr [esp+0x00000100]
  push 0x03 
  fldz 
  lea edx,[esp+0x00000104]
  fstp dword ptr [esp+0x00000108]
  push edx
  fld dword ptr [0x8589F0] 
  push 0x01 
  fstp dword ptr [esp+0x00000114]
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fld qword ptr [0x857B20] 
  mov edi,[esi]
  fadd st1,st0
  push eax
  fxch st1
  push 0x000000C8 
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL214652

  fadd dword ptr [0x871554] 
  LABEL214652:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL21467D

  fadd dword ptr [0x871554] 
  LABEL21467D:
  fsubr qword ptr [esp+0x40]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035C 
  call edx
  LABEL214697:
  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub qword ptr [0x85B938] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fcomp qword ptr [esp+0x20]
  fnstsw ax
  test ah,0x01 
  jne LABEL214AD2

  cmp dword ptr [esi+0x144],0x02 
  jl LABEL214AD2

  mov ecx,[esi+0x398]
  ;# SOUND CONFLAG 1
  push 0x4A
  call 0x464980
  mov ebx,0x00000007 
  LABEL2146F0:
  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL21470C

  fadd dword ptr [0x871554] 
  LABEL21470C:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x54]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL21472E

  fadd dword ptr [0x871554] 
  LABEL21472E:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x50]
  push eax
  fstp dword ptr [esp+0x58]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x60]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0EC]
  mov edi,[esi]
  fadd qword ptr [0x857B20] 
  push ecx
  push ecx
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL21478E

  fadd dword ptr [0x871554] 
  LABEL21478E:
  fsubr qword ptr [esp+0x38]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035C
  call edx
  sub ebx,0x01 
  jne LABEL2146F0

  xor edi,edi
  mov [esp+0x10],edi
  LABEL2147B7:
  fild dword ptr [esp+0x10]
  push 0x05 
  fadd qword ptr [0x867830] 
  fstp dword ptr [esp+0x50]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2147E1

  fadd dword ptr [0x871554] 
  LABEL2147E1:
  fadd qword ptr [0x871520] 
  fstp dword ptr [esp+0x50]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x54]
  fldz 
  fld dword ptr [esp+0x4C]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL21484A

  fcomp dword ptr [0x87153C] 
  fnstsw ax
  test ah,0x41 
  jp LABEL21484C

  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push 0x03 
  lea ecx,[esp+0x50]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C
  call eax
  jmp LABEL214881

  LABEL21484A:
  fstp st0
  LABEL21484C:
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push 0x03 
  lea eax,[esp+0x50]
  push eax
  push 0xFFFFFFFF
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C
  call edx
  LABEL214881:
  add edi,0x3C 
  cmp edi,0x00000168 
  mov [esp+0x10],edi
  jl LABEL2147B7

  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL2148B0

  fadd dword ptr [0x871554] 
  LABEL2148B0:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x54]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2148D2

  fadd dword ptr [0x871554] 
  LABEL2148D2:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x50]
  push eax
  fstp dword ptr [esp+0x58]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x60]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0EC]
  mov edi,[esi]
  fadd qword ptr [0x857B20] 
  push ecx
  push ecx
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL214932

  fadd dword ptr [0x871554] 
  LABEL214932:
  fsubr qword ptr [esp+0x38]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035C 
  call edx
  fldz 
  fst dword ptr [esp+0x4C]
  push 0x03 
  fstp dword ptr [esp+0x54]
  lea ecx,[esp+0x50]
  fld dword ptr [0x86782C] 
  push ecx
  fstp dword ptr [esp+0x5C]
  push 0x01 
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C 
  call eax
  fld dword ptr [0x85BC00] 
  fstp dword ptr [esp+0x4C]
  push 0x03 
  fld dword ptr [0x86782C] 
  lea eax,[esp+0x50]
  fstp dword ptr [esp+0x54]
  push eax
  fld dword ptr [0x85BCA4] 
  push 0x01 
  fstp dword ptr [esp+0x60]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C 
  call edx
  fld dword ptr [0x85C154] 
  fstp dword ptr [esp+0x4C]
  push 0x03 
  fld dword ptr [0x85C22C] 
  lea ecx,[esp+0x50]
  fstp dword ptr [esp+0x54]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C 
  call eax
  fld dword ptr [0x85B230] 
  fstp dword ptr [esp+0x4C]
  push 0x03 
  fld dword ptr [0x85C22C] 
  lea eax,[esp+0x50]
  fstp dword ptr [esp+0x54]
  mov edx,[esi]
  movzx ecx,byte ptr [esi+0x104]
  push eax
  push 0x01 
  fld dword ptr [esi+0x0F0]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C
  call edx
  fld dword ptr [0x85DB54] 
  fstp dword ptr [esp+0x4C]
  push 0x03 
  fld dword ptr [0x86782C] 
  lea ecx,[esp+0x50]
  fstp dword ptr [esp+0x54]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C 
  call eax
  LABEL214AC3:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL214ACA:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABEL214AD2:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x18],ecx
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  LABEL20C7FC:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL214ACA
  jmp LABEL20C3B5

  LABEL20FBC8:
  fmul dword ptr [esi+0xF4]
  fadd dword ptr [esi+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [esi+0xF0]
  fadd dword ptr [esi+0xF8]
  fstp dword ptr [esi+0xF0]
  jmp LABEL20C7FC

  LABEL211215:
  fmul dword ptr [esi+0xF4]
  fadd dword ptr [esi+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [esi+0xF8]
  fmul qword ptr [0x857F78]
  fadd dword ptr [esi+0xF0]
  fstp dword ptr [esi+0xF0]
  jmp LABEL20C7FC

  LABEL210FEA:
  je LABEL20C7FC
  mov al,[esi+0x113]
  cmp al,0x0F
  jb LABEL214AC3
  sub al,0x0F
  mov byte ptr [esi+0x113],al
  jmp LABEL20C7FC
end

func satoriS_CONFLAGRATION_BULLET_0F
  ;#0061BD6C
  fstp st1
  fstp st0
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x08]
  fcom dword ptr [0x85C610]
  fnstsw ax
  test ah,0x41
  jne START
  jmp START1
  
  START1:
  mov ecx,[esi+0x00035C]
  fstp st0
  mov ebp,[esi]
  mov ebx,0x00000001
  mov [esi+0x00018C],bl
  mov [esi+0x000194],bl
  fld dword ptr [ecx+0x08]
  call 0x820230
  mov edx,[ebp+0x0C]
  mov ecx,esi
  push eax
  call edx
  push 0x00000168
  call 0x4099F0
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL21A96E

  fadd dword ptr [0x871554]
  LABEL21A96E:
  push 0x0A
  fstp dword ptr [esi+0x00012C]
  call 0x4099F0
  add esp,0x08
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL21A990

  fadd dword ptr [0x871554]
  LABEL21A990:
  fmul qword ptr [0x857F90]
  fadd qword ptr [0x8677C8]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x00011C]
  fstp dword ptr [esi+0x000120]
  movzx eax,word ptr [esi+0x00013E]
  cmp ax,0x0002
  jne LABEL21A9C9

  fld dword ptr [0x857DD8]
  fstp dword ptr [esi+0x000124]
  LABEL21A9C9:
  cmp ax,0x0003
  jne LABEL21AA0F

  mov eax,[esi+0x00035C]
  fld dword ptr [eax+0x04]
  sub esp,0x08
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fldz 
  fcomp dword ptr [esi+0x0000F4]
  fnstsw ax
  test ah,0x05
  jp LABEL21AA03

  fld dword ptr [0x85DB88]
  jmp LABEL21AA09

  LABEL21AA03:
  fld dword ptr [0x85CB14]
  LABEL21AA09:
  fstp dword ptr [esi+0x000378]
  LABEL21AA0F:
  cmp word ptr [esi+0x00013E],0x04
  jne LABEL21CE90
  mov eax,[esi+0x00035C]
  fld dword ptr [eax+0x04]
  sub esp,0x08
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fldz 
  fcomp dword ptr [esi+0x0000F4]
  fnstsw ax
  test ah,0x05
  jp LABEL21AA5D

  fld dword ptr [0x85DB88]
  fstp dword ptr [esi+0x000378]
  pop edi
  pop esi
  pop ebx
  add esp,0x14
  ret 

  LABEL21AA5D:
  fld dword ptr [0x85CB14]
  fstp dword ptr [esi+0x000378]
  pop edi
  pop esi
  pop ebx
  add esp,0x14
  ret 

  START:
  mov edi,0x00
  mov eax,[esi+0x35C]
  ;fstp st1
  fstp st0
  fld dword ptr [eax+0x08]
  mov ebx,[esi]
  call 0x820230
  mov edx,[ebx+0x0C]
  mov ecx,esi
  push eax
  call edx
  movzx eax,word ptr [esi+0x13E]
  cmp ax,di
  mov ebx,0x00000001 
  je LABEL21BDA1

  cmp ax,0x0009 
  jne LABEL21BE3A

  LABEL21BDA1:
  mov eax,[esi+0x35C]
  mov [esi+0x194],bl
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fldz 
  movzx edx,byte ptr [esi+0x104]
  mov eax,[esi]
  fst dword ptr [esp+0x10] ;#change
  mov eax,[eax+0x44]
  fstp dword ptr [esp+0x14]
  fld1 
  push 0x03 
  lea ecx,[esp+0x14]
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esi+0x0F0]
  push ecx
  push 0xFFFFFFFF
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035C 
  call eax
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0009 
  jne LABEL21BE3A

  fld dword ptr [esi+0x0F4]
  fmul qword ptr [0x85B848] 
  fstp dword ptr [esi+0x0F4]
  fld dword ptr [esi+0x0F8]
  fmul qword ptr [0x8579D8] 
  fstp dword ptr [esi+0x0F8]
  LABEL21BE3A:
  cmp ax,0x0002 
  je LABEL21BE4C

  cmp ax,0x0003 
  je LABEL21BE4C

  cmp ax,0x0008 
  jne LABEL21BEAA

  LABEL21BE4C:
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx]
  push 0x19 
  fstp dword ptr [esi+0x12C]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL21BE76

  fadd dword ptr [0x871554] 
  LABEL21BE76:
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [0x85BAE8] 
  fstp dword ptr [esi+0x378]
  LABEL21BEAA:
  cmp word ptr [esi+0x13E],0x04 
  jne LABEL21BF2B

  mov edx,[esi+0x35C]
  fld dword ptr [edx]
  push 0x19 
  fstp dword ptr [esi+0x12C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL21BEDB

  fadd dword ptr [0x871554] 
  LABEL21BEDB:
  fmul qword ptr [0x858C08] 
  push 0x0A 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL21BF1F

  fadd dword ptr [0x871554] 
  LABEL21BF1F:
  fsub qword ptr [0x858210] 
  fstp dword ptr [esi+0x378]
  LABEL21BF2B:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0005 
  je LABEL21BF44
  cmp ax,0x0008 
  je LABEL21BF44

  cmp ax,0x000A 
  jne LABEL21BF5C

  LABEL21BF44:
  fld dword ptr [0x85BAE8] 
  fstp dword ptr [esi+0x378]
  fld dword ptr [0x85C110] 
  fstp dword ptr [esi+0x37C]
  LABEL21BF5C:
  cmp ax,0x0006 
  jne LABEL21CE90

  mov eax,[esi+0x35C]
  mov [esi+0x194],bl
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [esi+0x0F4]
  fmul qword ptr [0x85B848] 
  fstp dword ptr [esi+0x0F4]
  fld dword ptr [esi+0x0F8]
  fmul qword ptr [0x8579D8] 
  fstp dword ptr [esi+0x0F8]
  LABEL21CE90:
  pop edi
  pop esi
  pop ebx
  add esp,0x14 
  ret 
end

005C1852 = satoriS_CONFLAGRATION
005C1BE6 = satoriS_CONFLAGRATION_BULLET
005C1BF3 = satoriS_CONFLAGRATION_BULLET_0F

;# 607 -> 611
func satoriS_THEFLOOD
  ;#00600932
  mov edi,0x02
  mov ecx,esi
  fstp st0
  call 0x487CA0
  push edi
  push 0x05 
  mov ecx,esi
  call 0x46B370
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL20095B

  mov edx,[esi]
  mov eax,[edx+0x08]
  push 0x00 
  mov ecx,esi
  call eax
  LABEL20095B:
  cmp word ptr [esi+0x13E],0x00 
  jne LABEL1F1715

  cmp word ptr [esi+0x142],0x00 
  jne LABEL1F1715

  cmp word ptr [esi+0x140],0x03 
  jne LABEL2009FB

  push 0x28 
  mov ecx,esi
  call 0x483CD0
  push 0x17 
  mov ecx,esi
  call 0x439490
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fadd qword ptr [0x85C208] 
  movsx ecx,al
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  imul ecx,ecx,0x32
  push 0x01 
  push eax
  sub esp,0x08 
  mov [esp+0x20],ecx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fisub dword ptr [esp+0x20]
  fstp dword ptr [esp+0x20]
  fld dword ptr [esp+0x20]
  fstp dword ptr [esp]
  push 0x73 
  call 0x438CE0
  push 0x3C 
  push 0x00 
  push 0x00 
  mov ecx,esi
  call 0x469C70
  mov ecx,esi
  call 0x483D60
  mov ecx,esi
  call 0x483DB0
  LABEL2009FB:
  cmp word ptr [esi+0x142],0x00 
  jne LABEL1F1715

  cmp word ptr [esi+0x140],0x07 
  jne LABEL1F1715

  fld dword ptr [0x867810] 
  push ecx
  mov ecx,esi
  fstp dword ptr [esp]
  call 0x439470
  fld dword ptr [0x85D900] 
  fstp dword ptr [esp+0x00000160]
  push 0x03 
  fld dword ptr [0x85BBE4] 
  lea edx,[esp+0x00000164]
  fstp dword ptr [esp+0x00000168]
  push edx
  fldz 
  mov ebx,0x00000001 
  fstp dword ptr [esp+0x00000170]
  push ebx
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  push eax
  movsx eax,al
  imul eax,eax,0x64
  sub esp,0x08 
  mov [esp+0x28],eax
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000035D
  call 0x46EB30
  fld dword ptr [esi+0x0F0]
  movzx ecx,byte ptr [esi+0x104]
  or edi,0xFFFFFFFF
  push edi
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x7F 
  call 0x438CE0
  ;# SOUND CONFLAG 0
  push 0x49
  mov ecx,esi
  call 0x464980
  ;# conflag subseq
  fld dword ptr [0x85C22C]
  fstp dword ptr [esp+0x00000168]
  fldz 
  fstp dword ptr [esp+0x18]
  mov edi,edi
  LABEL200AE0:
  push 0x14 
  call 0x4099F0
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL200AF9

  fadd dword ptr [0x871554] 
  LABEL200AF9:
  fld dword ptr [esp+0x1C]
  push 0x08 
  fmul qword ptr [0x85C068] 
  faddp 
  fstp dword ptr [esp+0x00000168]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  jnl LABEL200B28

  fadd dword ptr [0x871554] 
  LABEL200B28:
  fadd qword ptr [0x867830] 
  fstp dword ptr [esp+0x00000164]
  fldz 
  fld dword ptr [esp+0x00000160]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x05 
  jnp LABEL200B5F

  fcomp dword ptr [0x87153C] 
  fnstsw ax
  test ah,0x41 
  je LABEL200B61

  mov [esi+0x7D0],bx
  jmp LABEL200B68

  LABEL200B5F:
  fstp st0
  LABEL200B61:
  mov [esi+0x7D0],di
  LABEL200B68:
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  movzx ecx,byte ptr [esi+0x7D0]
  push 0x03 
  lea edx,[esp+0x00000164]
  push edx
  movsx edx,al
  imul edx,edx,0x64
  push ecx
  push eax
  sub esp,0x08 
  mov [esp+0x28],edx
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x0EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  push 0x0000035D
  call 0x46EB30
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [0x86782C] 
  fcomp dword ptr [esp+0x18]
  fnstsw ax
  test ah,0x41 
  je LABEL200AE0

  LABEL1F1715:
  pop edi
  pop esi
  pop ebp
  pop ebx
  mov esp,ebp
  pop ebp
  ret 
end

;# 857 -> 861
func satoriS_THEFLOOD_BULLET
  ;#00613988
  cmp dword ptr [esi+0x190],0x05 
  je LABEL20C3B5

  movsx eax,word ptr [esi+0x13E]
  cmp eax,0x0B
  ja LABEL20C7FC

  cmp eax,0x00
  je TABLE00
  cmp eax,0x01
  je TABLE01
  cmp eax,0x02
  je TABLE02
  cmp eax,0x03
  je TABLE03
  cmp eax,0x04
  je TABLE04
  cmp eax,0x05
  je TABLE05
  cmp eax,0x06
  je TABLE06
  cmp eax,0x07
  je TABLE07
  cmp eax,0x08
  je TABLE08
  cmp eax,0x09
  je TABLE09
  cmp eax,0x0A
  je TABLE10
  cmp eax,0x0B
  je TABLE11
  jmp TABLEDEF
  
  TABLE11:
  
  mov eax,[esi+0x00000190]
  cmp eax,0x05
  je LABEL20C3B5

  fldz 
  xor edi,edi
  mov ebp,0x00000001
  lea ebx,[ebp+0x03]
  jmp LABEL20D08D
  LABEL20D08D:

  mov eax,[esi+0x0000035C]
  fstp st0
  fld dword ptr [eax+0x04]
  sub esp,0x08
  fmul qword ptr [0x85B818]
  lea ecx,[esi+0x04]
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [eax+0x04]
  fstp dword ptr [esp+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  mov al,[esi+0x00000113]
  cmp al,0x0A
  jb LABEL20C3B5

  sub al,0x0A
  mov [esi+0x00000113],al
  movsx eax,byte ptr [esi+0x00000104]
  mov [esp+0x10],eax
  fild dword ptr [esp+0x10]
  fmul dword ptr [esi+0x000000F4]
  fadd dword ptr [esi+0x000000EC]
  fstp dword ptr [esi+0x000000EC]
  fld dword ptr [esi+0x000000F8]
  fmul qword ptr [0x858EA0]
  fadd dword ptr [esi+0x000000F0]
  fstp dword ptr [esi+0x000000F0]
  fldz 
  LABEL20D11B:
  cmp word ptr [esi+0x0000013E],0x02
  jne LABEL20D169

  fld dword ptr [esi+0x0000011C]
  fadd qword ptr [0x858EA8]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x0000011C]
  fstp dword ptr [esi+0x00000120]
  mov al,[esi+0x00000113]
  cmp al,0x1E
  jbe LABEL20D6A6

  sub al,0x1E
  mov [esi+0x00000113],al
  mov al,0xE2
  add [esi+0x00000110],al
  add [esi+0x00000111],al
  LABEL20D169:
  cmp word ptr [esi+0x0000013E],0x03
  jne LABEL20D23D

  mov ecx,0x00000006
  cmp [esi+0x00000190],ecx
  jne LABEL20D191

  mov [esi+0x00000190],edi
  add byte ptr [esi+0x00000194],0x01
  LABEL20D191:
  cmp [esi+0x00000190],ebx
  jne LABEL20D1BD

  movzx eax,word ptr [esi+0x0000036C]
  cmp ax,0x0005
  jnl LABEL20D1BD

  add eax,0x01
  mov [esi+0x0000036C],ax
  mov [esi+0x00000190],edi
  add byte ptr [esi+0x00000194],0x01
  LABEL20D1BD:
  cmp [esi+0x00000144],ecx
  jne LABEL20D23D

  mov ecx,[esi+0x00000398]
  cmp [ecx+0x000006A5],bl
  jl LABEL20D23D

  fst dword ptr [esp+0x00000364]
  push 0x03
  fstp dword ptr [esp+0x0000036C]
  lea ecx,[esp+0x00000368]
  fld dword ptr [0x867860]
  push ecx
  fstp dword ptr [esp+0x00000374]
  movzx eax,byte ptr [esi+0x00000104]
  fld dword ptr [esi+0x000000F0]
  push ebp
  mov edx,[esi]
  push eax
  mov edx,[edx+0x44]
  movsx eax,al
  imul eax,eax,0x64
  sub esp,0x08
  mov [esp+0x28],eax
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fild dword ptr [esp+0x28]
  fadd dword ptr [esi+0x000000EC]
  fstp dword ptr [esp+0x28]
  fld dword ptr [esp+0x28]
  fstp dword ptr [esp]
  ;push 0x0000032B
  push 0x0000035D
  call edx
  jmp LABEL20D23F

  LABEL20D23D:
  fstp st0
  LABEL20D23F:
  cmp [esi+0x0000013E],bx
  jne LABEL20D28A

  cmp dword ptr [esi+0x00000190],0x06
  jne LABEL20D25E

  mov [esi+0x00000190],edi
  add byte ptr [esi+0x00000194],0x01
  LABEL20D25E:
  cmp [esi+0x00000190],ebx
  jne LABEL20D28A

  movzx eax,word ptr [esi+0x0000036C]
  cmp ax,0x0005
  jnl LABEL20D28A

  add eax,0x01
  mov [esi+0x0000036C],ax
  mov [esi+0x00000190],edi
  add byte ptr [esi+0x00000194],0x01
  LABEL20D28A:
  mov ecx,esi
  call 0x438C60
  or ecx,0xFFFFFFFF
  test al,al
  je LABEL20D29E

  add [esi+0x0000034C],ecx
  LABEL20D29E:
  mov eax,[esi+0x00000144]
  cmp eax,edi
  jne LABEL21A12E

  cmp [esi+0x00000142],di
  jne LABEL20D2C7

  cmp [esi+0x00000140],di
  jne LABEL20D2C7

  cmp word ptr [esi+0x0000013E],0x0B
  je LABEL20D31A

  LABEL20D2C7:
  cmp eax,edi
  jne LABEL21A12E

  cmp [esi+0x00000142],di
  jne LABEL20D2EA

  cmp [esi+0x00000140],di
  jne LABEL20D2EA

  cmp [esi+0x0000013E],bx
  je LABEL20D31A

  LABEL20D2EA:
  cmp eax,edi
  jne LABEL21A12E

  cmp [esi+0x00000142],di
  jne LABEL21A12E

  cmp [esi+0x00000140],di
  jne LABEL21A12E

  cmp word ptr [esi+0x0000013E],0x05
  jne LABEL21A12E

  LABEL20D31A:
  add [esi+0x0000034C],ecx
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 

  LABEL20D6A6:
  fstp st0
  add dword ptr [esi+0x0000034C],0xFFFFFFFF
  LABEL21A12E:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 

  
  TABLE01:
  fld dword ptr [esi+0x00011C]
  fadd qword ptr [0x857F78]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x00011C]
  fstp dword ptr [esi+0x000120]
  cmp dword ptr [esi+0x000144],0x03
  jl LABEL20C7FC
  mov al,[esi+0x000113]
  cmp al,0x0F
  jb LABEL20C3B5
  sub al,0x0F
  mov [esi+0x000113],al
  jmp LABEL20C7FC
  
  TABLEDEF:
  TABLE00:
  fld dword ptr [esi+0x12C]
  push 0x00 
  fsub qword ptr [0x859910] 
  mov ecx,esi
  fstp dword ptr [esi+0x12C]
  call 0x48CDE0
  push 0x05 
  mov ecx,esi
  call 0x48CE30
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000005 
  idiv ecx
  test edx,edx
  jne LABEL213ABA

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL213A05

  fadd dword ptr [0x871554] 
  LABEL213A05:
  fstp dword ptr [esp+0x000001F8]
  push 0x03 
  fldz 
  lea edx,[esp+0x000001FC]
  fstp dword ptr [esp+0x00000200]
  push edx
  fld dword ptr [0x8589F0] 
  push 0x01 
  fstp dword ptr [esp+0x0000020C]
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fld qword ptr [0x857B20] 
  mov edi,[esi]
  fadd st1,st0
  push eax
  fxch st1
  push 0x000000C8 
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL213A75

  fadd dword ptr [0x871554] 
  LABEL213A75:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL213AA0

  fadd dword ptr [0x871554] 
  LABEL213AA0:
  fsubr qword ptr [esp+0x40]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035D
  call edx
  LABEL213ABA:
  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub qword ptr [0x8579D8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fcomp qword ptr [esp+0x20]
  fnstsw ax
  test ah,0x01 
  jne LABEL213EF5

  cmp dword ptr [esi+0x144],0x02 
  jl LABEL213EF5

  mov ecx,[esi+0x398]
  ;# SOUND CONFLAG 1
  push 0x4A
  call 0x464980
  mov ebx,0x00000007 
  LABEL213B13:
  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL213B2F

  fadd dword ptr [0x871554] 
  LABEL213B2F:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x48]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL213B51

  fadd dword ptr [0x871554] 
  LABEL213B51:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x44]
  push eax
  fstp dword ptr [esp+0x4C]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x54]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0EC]
  mov edi,[esi]
  fadd qword ptr [0x857B20] 
  push ecx
  push ecx
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL213BB1

  fadd dword ptr [0x871554] 
  LABEL213BB1:
  fsubr qword ptr [esp+0x38]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035D 
  call edx
  sub ebx,0x01 
  jne LABEL213B13

  xor edi,edi
  mov [esp+0x10],edi
  LABEL213BDA:
  fild dword ptr [esp+0x10]
  push 0x05 
  fadd qword ptr [0x867830] 
  fstp dword ptr [esp+0x44]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL213C04

  fadd dword ptr [0x871554] 
  LABEL213C04:
  fadd qword ptr [0x871520] 
  fstp dword ptr [esp+0x44]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x48]
  fldz 
  fld dword ptr [esp+0x40]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL213C6D

  fcomp dword ptr [0x87153C] 
  fnstsw ax
  test ah,0x41 
  jp LABEL213C6F

  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push 0x03 
  lea ecx,[esp+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D 
  call eax
  jmp LABEL213CA4

  LABEL213C6D:
  fstp st0
  LABEL213C6F:
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push 0x03 
  lea eax,[esp+0x44]
  push eax
  push 0xFFFFFFFF
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D 
  call edx
  LABEL213CA4:
  add edi,0x3C 
  cmp edi,0x00000168 
  mov [esp+0x10],edi
  jl LABEL213BDA

  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL213CD3

  fadd dword ptr [0x871554] 
  LABEL213CD3:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x48]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL213CF5

  fadd dword ptr [0x871554] 
  LABEL213CF5:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x44]
  push eax
  fstp dword ptr [esp+0x4C]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x54]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0EC]
  mov edi,[esi]
  fadd qword ptr [0x857B20] 
  push ecx
  push ecx
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL213D55

  fadd dword ptr [0x871554] 
  LABEL213D55:
  fsubr qword ptr [esp+0x38]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035D
  call edx
  
  fldz 
  fst dword ptr [esp+0x40]
  push 0x03 
  fstp dword ptr [esp+0x48]
  lea ecx,[esp+0x44]
  fld dword ptr [0x85B870] 
  push ecx
  fstp dword ptr [esp+0x50]
  push 0x01 
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D
  call eax
  
  fld dword ptr [0x85BC44] 
  fstp dword ptr [esp+0x48]
  push 0x03 
  fld dword ptr [0x85C154] 
  lea eax,[esp+0x44]
  fstp dword ptr [esp+0x44]
  push eax
  fld dword ptr [0x85C120] 
  push 0x01 
  fstp dword ptr [esp+0x50]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D
  call edx
  
  fld dword ptr [0x85B230] 
  fstp dword ptr [esp+0x40]
  push 0x03 
  fld dword ptr [0x85C120] 
  lea ecx,[esp+0x44]
  fstp dword ptr [esp+0x48]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D
  call eax
  
  fld dword ptr [0x85BB80] 
  fstp dword ptr [esp+0x40]
  push 0x03 
  fld dword ptr [0x85C120] 
  lea eax,[esp+0x44]
  fstp dword ptr [esp+0x48]
  mov edx,[esi]
  movzx ecx,byte ptr [esi+0x104]
  push eax
  push 0x01 
  fld dword ptr [esi+0x0F0]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D
  call edx
  fld dword ptr [0x85CE90] 
  fstp dword ptr [esp+0x40]
  push 0x03 
  fld dword ptr [0x85C120] 
  lea ecx,[esp+0x44]
  fstp dword ptr [esp+0x48]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D
  call eax

  LABEL20C3B5:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 

  LABEL213EF5:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x18],ecx
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  TABLE02:
  TABLE07:
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x0F8]
  fsub qword ptr [0x867840] 
  fstp dword ptr [esi+0x0F8]
  fld dword ptr [esi+0x378]
  fsub qword ptr [0x85A280] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x378]
  fcomp qword ptr [0x857F90] 
  fnstsw ax
  test ah,0x05 
  jp LABEL213F6E

  fld dword ptr [0x85AE7C] 
  fstp dword ptr [esi+0x378]
  LABEL213F6E:
  cmp dword ptr [esi+0x144],0x1E 
  jl LABEL213F8D

  mov al,[esi+0x113]
  cmp al,0x0F 
  jb LABEL20C3B5

  sub al,0x0F 
  mov [esi+0x113],al
  LABEL213F8D:
  movsx edx,byte ptr [esi+0x104]
  mov [esp+0x18],edx
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  TABLE03:
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x0F8]
  fsub qword ptr [0x857F78] 
  fstp dword ptr [esi+0x0F8]
  fld dword ptr [esi+0x378]
  fsub qword ptr [0x85A280] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x378]
  fcomp qword ptr [0x857F90] 
  fnstsw ax
  test ah,0x05 
  jp LABEL214006

  fld dword ptr [0x85AE7C] 
  fstp dword ptr [esi+0x378]
  LABEL214006:
  cmp dword ptr [esi+0x144],0x1E 
  jl LABEL214025

  mov al,[esi+0x113]
  cmp al,0x0F 
  jb LABEL20C3B5

  sub al,0x0F 
  mov [esi+0x113],al
  LABEL214025:
  movsx eax,byte ptr [esi+0x104]
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  TABLE04:
  fld dword ptr [esi+0x378]
  mov ecx,[esi+0x35C]
  fadd dword ptr [esi+0x12C]
  fstp dword ptr [esi+0x12C]
  fld dword ptr [esi+0x37C]
  fadd qword ptr [0x857F90] 
  fstp dword ptr [esi+0x37C]
  fld dword ptr [esi+0x378]
  fmul qword ptr [0x8581D8] 
  fstp dword ptr [esi+0x378]
  fld dword ptr [esi+0x11C]
  fadd qword ptr [0x85AAF8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [ecx+04]
  fsub qword ptr [0x858EA0] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [ecx+04]
  fldz 
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x41 
  jne LABEL2140BB

  fstp dword ptr [ecx+0x04]
  jmp LABEL2140BD

  LABEL2140BB:
  fstp st0
  LABEL2140BD:
  fld dword ptr [ecx+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  fld dword ptr [ecx]
  lea ecx,[esi+0x04]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [esi+0x37C]
  fadd dword ptr [esi+0x0F8]
  fstp dword ptr [esi+0x0F8]
  cmp dword ptr [esi+0x144],0x00 
  jl LABEL214105

  mov al,[esi+0x113]
  cmp al,0x08 
  jb LABEL20C3B5

  sub al,0x08 
  mov [esi+0x113],al
  LABEL214105:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x18],ecx
  fild dword ptr [esp+0x18]
  jmp LABEL211215

  TABLE05:
  TABLE08:
  TABLE10:
  fld dword ptr [esi+0x378]
  fadd dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x11C]
  fld dword ptr [esi+0x378]
  fsub qword ptr [0x857F78] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x378]
  fcomp qword ptr [0x857F90] 
  fnstsw ax
  test ah,0x41 
  jp LABEL21415E

  fld dword ptr [0x85AE7C] 
  fstp dword ptr [esi+0x378]
  LABEL21415E:
  fld dword ptr [esi+0x120]
  fadd dword ptr [esi+0x37C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [esi+0x37C]
  fsub qword ptr [0x867840] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x37C]
  fcomp qword ptr [0x85D090] 
  fnstsw ax
  test ah,0x41 
  jp LABEL2141A3

  fld dword ptr [0x85DB48] 
  fstp dword ptr [esi+0x37C]
  LABEL2141A3:
  cmp dword ptr [esi+0x144],0x0A 
  jmp LABEL210FEA

  TABLE06:
  push 0x03 
  mov ecx,esi
  call 0x48CDE0
  push 0x01 
  mov ecx,esi
  call 0x48CE30
  cmp byte ptr [esi+0x194],0x00 
  jg LABEL2142D8

  mov ebx,0x00000004 
  LABEL2141D3:
  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL2141EF

  fadd dword ptr [0x871554] 
  LABEL2141EF:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x000001A4]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL214214

  fadd dword ptr [0x871554] 
  LABEL214214:
  fadd qword ptr [0x858210] 
  push 0x03 
  lea edx,[esp+0x000001A0]
  push edx
  fstp dword ptr [esp+0x000001A8]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x000001B0]
  movzx eax,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edi,[esi]
  fld qword ptr [0x871520] 
  push eax
  fadd st1,st0
  push 0x14 
  fxch st1
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL21427E

  fadd dword ptr [0x871554] 
  LABEL21427E:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x14 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL2142A6

  fadd dword ptr [0x871554] 
  LABEL2142A6:
  fsubr qword ptr [esp+0x40]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035D 
  call edx
  sub ebx,0x01 
  jne LABEL2141D3

  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABEL2142D8:
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x0000000A 
  idiv ecx
  test edx,edx
  jne LABEL2143BC

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL21430D

  fadd dword ptr [0x871554] 
  LABEL21430D:
  fstp dword ptr [esp+0x00000110]
  push 0x03 
  fldz 
  lea edx,[esp+0x00000114]
  fstp dword ptr [esp+0x00000118]
  push edx
  fld dword ptr [0x85882C] 
  push 0x01 
  fstp dword ptr [esp+0x00000124]
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fld qword ptr [0x8581F8] 
  mov edi,[esi]
  fadd st1,st0
  push eax
  fxch st1
  push 0x28 
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL21437A

  fadd dword ptr [0x871554] 
  LABEL21437A:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x28 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL2143A2

  fadd dword ptr [0x871554] 
  LABEL2143A2:
  fsubr qword ptr [esp+0x40]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035D
  call edx
  LABEL2143BC:
  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub qword ptr [0x85BA70] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fcomp qword ptr [esp+0x20]
  fnstsw ax
  test ah,0x01 
  jne LABEL214575

  cmp dword ptr [esi+0x144],0x02 
  jl LABEL214575

  mov ecx,[esi+0x398]
  ;# SOUND CONFLAG 1
  push 0x4A
  call 0x464980
  fldz 
  fst dword ptr [esp+0x00000124]
  push 0x03 
  fstp dword ptr [esp+0x0000012C]
  lea ecx,[esp+0x00000128]
  fld dword ptr [0x867810] 
  push ecx
  fstp dword ptr [esp+0x00000134]
  push 0x01 
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D
  call eax
  mov ebx,0x00000004 
  lea ebx,[ebx+0x00000000]
  LABEL214470:
  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL21448C

  fadd dword ptr [0x871554] 
  LABEL21448C:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x0000012C]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2144B1

  fadd dword ptr [0x871554] 
  LABEL2144B1:
  fadd qword ptr [0x858210] 
  push 0x03 
  lea ecx,[esp+0x00000128]
  push ecx
  fstp dword ptr [esp+0x00000130]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x00000138]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edi,[esi]
  fld qword ptr [0x871520] 
  push edx
  fadd st1,st0
  push 0x14 
  fxch st1
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL21451B

  fadd dword ptr [0x871554] 
  LABEL21451B:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x14 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL214543

  fadd dword ptr [0x871554] 
  LABEL214543:
  fsubr qword ptr [esp+0x40]
  mov eax,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035D 
  call eax
  sub ebx,0x01 
  jne LABEL214470

  add dword ptr [esi+0x34C],0xFFFFFFFF
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABEL214575:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x18],ecx
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  TABLE09:
  fld dword ptr [esi+0x12C]
  push 0x00 
  fsub qword ptr [0x859910] 
  mov ecx,esi
  fstp dword ptr [esi+0x12C]
  call 0x48CDE0
  push 0x05 
  mov ecx,esi
  call 0x48CE30
  mov eax,[esi+0x144]
  cdq 
  mov ecx,0x00000005 
  idiv ecx
  test edx,edx
  jne LABEL214697

  push 0x00000168 
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2145E2

  fadd dword ptr [0x871554] 
  LABEL2145E2:
  fstp dword ptr [esp+0x00000100]
  push 0x03 
  fldz 
  lea edx,[esp+0x00000104]
  fstp dword ptr [esp+0x00000108]
  push edx
  fld dword ptr [0x8589F0] 
  push 0x01 
  fstp dword ptr [esp+0x00000114]
  fld dword ptr [esi+0x0F0]
  movzx eax,byte ptr [esi+0x104]
  fld qword ptr [0x857B20] 
  mov edi,[esi]
  fadd st1,st0
  push eax
  fxch st1
  push 0x000000C8 
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fadd dword ptr [esi+0x0EC]
  fstp qword ptr [esp+0x3C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x2C],eax
  fild dword ptr [esp+0x2C]
  jnl LABEL214652

  fadd dword ptr [0x871554] 
  LABEL214652:
  fsubr qword ptr [esp+0x34]
  fstp dword ptr [esp+0x2C]
  fld dword ptr [esp+0x2C]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL21467D

  fadd dword ptr [0x871554] 
  LABEL21467D:
  fsubr qword ptr [esp+0x40]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035D 
  call edx
  LABEL214697:
  fld dword ptr [esi+0x0F8]
  mov ecx,esi
  fsub qword ptr [0x85B938] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x0F8]
  fadd dword ptr [esi+0x0F0]
  fstp qword ptr [esp+0x20]
  call 0x4397F0
  fcomp qword ptr [esp+0x20]
  fnstsw ax
  test ah,0x01 
  jne LABEL214AD2

  cmp dword ptr [esi+0x144],0x02 
  jl LABEL214AD2

  mov ecx,[esi+0x398]
  ;# SOUND CONFLAG 1
  push 0x4A
  call 0x464980
  mov ebx,0x00000007 
  LABEL2146F0:
  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL21470C

  fadd dword ptr [0x871554] 
  LABEL21470C:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x54]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL21472E

  fadd dword ptr [0x871554] 
  LABEL21472E:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x50]
  push eax
  fstp dword ptr [esp+0x58]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x60]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0EC]
  mov edi,[esi]
  fadd qword ptr [0x857B20] 
  push ecx
  push ecx
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL21478E

  fadd dword ptr [0x871554] 
  LABEL21478E:
  fsubr qword ptr [esp+0x38]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035D
  call edx
  sub ebx,0x01 
  jne LABEL2146F0

  xor edi,edi
  mov [esp+0x10],edi
  LABEL2147B7:
  fild dword ptr [esp+0x10]
  push 0x05 
  fadd qword ptr [0x867830] 
  fstp dword ptr [esp+0x50]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2147E1

  fadd dword ptr [0x871554] 
  LABEL2147E1:
  fadd qword ptr [0x871520] 
  fstp dword ptr [esp+0x50]
  fld dword ptr [0x867860] 
  fstp dword ptr [esp+0x54]
  fldz 
  fld dword ptr [esp+0x4C]
  fcom st1
  fnstsw ax
  fstp st1
  test ah,0x01 
  jne LABEL21484A

  fcomp dword ptr [0x87153C] 
  fnstsw ax
  test ah,0x41 
  jp LABEL21484C

  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push 0x03 
  lea ecx,[esp+0x50]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D
  call eax
  jmp LABEL214881

  LABEL21484A:
  fstp st0
  LABEL21484C:
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push 0x03 
  lea eax,[esp+0x50]
  push eax
  push 0xFFFFFFFF
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D
  call edx
  LABEL214881:
  add edi,0x3C 
  cmp edi,0x00000168 
  mov [esp+0x10],edi
  jl LABEL2147B7

  push 0x000000B4 
  call 0x4099F0
  test eax,eax
  mov [esp+0x1C],eax
  fild dword ptr [esp+0x1C]
  jnl LABEL2148B0

  fadd dword ptr [0x871554] 
  LABEL2148B0:
  fchs 
  push 0x03 
  fstp dword ptr [esp+0x54]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL2148D2

  fadd dword ptr [0x871554] 
  LABEL2148D2:
  fadd qword ptr [0x871520] 
  push 0x03 
  lea eax,[esp+0x50]
  push eax
  fstp dword ptr [esp+0x58]
  push 0x01 
  fld dword ptr [0x871538] 
  fstp dword ptr [esp+0x60]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0EC]
  mov edi,[esi]
  fadd qword ptr [0x857B20] 
  push ecx
  push ecx
  add edi,0x44 
  fstp qword ptr [esp+0x34]
  fld dword ptr [esi+0x0F0]
  fstp dword ptr [esp]
  push 0x000000C8 
  call 0x4099F0
  test eax,eax
  mov [esp+0x30],eax
  fild dword ptr [esp+0x30]
  jnl LABEL214932

  fadd dword ptr [0x871554] 
  LABEL214932:
  fsubr qword ptr [esp+0x38]
  mov edx,[edi]
  mov ecx,esi
  fstp dword ptr [esp+0x30]
  fld dword ptr [esp+0x30]
  fstp dword ptr [esp]
  push 0x0000035D 
  call edx
  fldz 
  fst dword ptr [esp+0x4C]
  push 0x03 
  fstp dword ptr [esp+0x54]
  lea ecx,[esp+0x50]
  fld dword ptr [0x86782C] 
  push ecx
  fstp dword ptr [esp+0x5C]
  push 0x01 
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D 
  call eax
  fld dword ptr [0x85BC00] 
  fstp dword ptr [esp+0x4C]
  push 0x03 
  fld dword ptr [0x86782C] 
  lea eax,[esp+0x50]
  fstp dword ptr [esp+0x54]
  push eax
  fld dword ptr [0x85BCA4] 
  push 0x01 
  fstp dword ptr [esp+0x60]
  movzx ecx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov edx,[esi]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D 
  call edx
  fld dword ptr [0x85C154] 
  fstp dword ptr [esp+0x4C]
  push 0x03 
  fld dword ptr [0x85C22C] 
  lea ecx,[esp+0x50]
  fstp dword ptr [esp+0x54]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D 
  call eax
  fld dword ptr [0x85B230] 
  fstp dword ptr [esp+0x4C]
  push 0x03 
  fld dword ptr [0x85C22C] 
  lea eax,[esp+0x50]
  fstp dword ptr [esp+0x54]
  mov edx,[esi]
  movzx ecx,byte ptr [esi+0x104]
  push eax
  push 0x01 
  fld dword ptr [esi+0x0F0]
  mov edx,[edx+0x44]
  push ecx
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  mov ecx,esi
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D
  call edx
  fld dword ptr [0x85DB54] 
  fstp dword ptr [esp+0x4C]
  push 0x03 
  fld dword ptr [0x86782C] 
  lea ecx,[esp+0x50]
  fstp dword ptr [esp+0x54]
  movzx edx,byte ptr [esi+0x104]
  fld dword ptr [esi+0x0F0]
  mov eax,[esi]
  mov eax,[eax+0x44]
  push ecx
  push 0x01 
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D 
  call eax
  LABEL214AC3:
  add dword ptr [esi+0x34C],0xFFFFFFFF
  LABEL214ACA:
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,0x2B8
  ret 
  LABEL214AD2:
  movsx ecx,byte ptr [esi+0x104]
  mov [esp+0x18],ecx
  fild dword ptr [esp+0x18]
  jmp LABEL20FBC8

  LABEL20C7FC:
  mov ecx,esi
  call 0x438C60
  test al,al
  je LABEL214ACA
  jmp LABEL20C3B5

  LABEL20FBC8:
  fmul dword ptr [esi+0xF4]
  fadd dword ptr [esi+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [esi+0xF0]
  fadd dword ptr [esi+0xF8]
  fstp dword ptr [esi+0xF0]
  jmp LABEL20C7FC

  LABEL211215:
  fmul dword ptr [esi+0xF4]
  fadd dword ptr [esi+0xEC]
  fstp dword ptr [esi+0xEC]
  fld dword ptr [esi+0xF8]
  fmul qword ptr [0x857F78]
  fadd dword ptr [esi+0xF0]
  fstp dword ptr [esi+0xF0]
  jmp LABEL20C7FC

  LABEL210FEA:
  je LABEL20C7FC
  mov al,[esi+0x113]
  cmp al,0x0F
  jb LABEL214AC3
  sub al,0x0F
  mov byte ptr [esi+0x113],al
  jmp LABEL20C7FC
end

func satoriS_THEFLOOD_BULLET_0F
  ;#0061BD6C
  fstp st1
  fstp st0
  mov eax,[esi+0x35C]
  fld dword ptr [eax+0x08]
  fcom dword ptr [0x85C610]
  fnstsw ax
  test ah,0x41
  jne START
  jmp START1
  
  START1:
  mov ecx,[esi+0x00035C]
  fstp st0
  mov ebp,[esi]
  mov ebx,0x00000001
  mov [esi+0x00018C],bl
  mov [esi+0x000194],bl
  fld dword ptr [ecx+0x08]
  call 0x820230
  mov edx,[ebp+0x0C]
  mov ecx,esi
  push eax
  call edx
  push 0x00000168
  call 0x4099F0
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL21A96E

  fadd dword ptr [0x871554]
  LABEL21A96E:
  push 0x0A
  fstp dword ptr [esi+0x00012C]
  call 0x4099F0
  add esp,0x08
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL21A990

  fadd dword ptr [0x871554]
  LABEL21A990:
  fmul qword ptr [0x857F90]
  fadd qword ptr [0x8677C8]
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x00011C]
  fstp dword ptr [esi+0x000120]
  movzx eax,word ptr [esi+0x00013E]
  cmp ax,0x0002
  jne LABEL21A9C9

  fld dword ptr [0x857DD8]
  fstp dword ptr [esi+0x000124]
  LABEL21A9C9:
  cmp ax,0x0003
  jne LABEL21AA0F

  mov eax,[esi+0x00035C]
  fld dword ptr [eax+0x04]
  sub esp,0x08
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fldz 
  fcomp dword ptr [esi+0x0000F4]
  fnstsw ax
  test ah,0x05
  jp LABEL21AA03

  fld dword ptr [0x85DB88]
  jmp LABEL21AA09

  LABEL21AA03:
  fld dword ptr [0x85CB14]
  LABEL21AA09:
  fstp dword ptr [esi+0x000378]
  LABEL21AA0F:
  cmp word ptr [esi+0x00013E],0x04
  jne LABEL21CE90
  mov eax,[esi+0x00035C]
  fld dword ptr [eax+0x04]
  sub esp,0x08
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fldz 
  fcomp dword ptr [esi+0x0000F4]
  fnstsw ax
  test ah,0x05
  jp LABEL21AA5D

  fld dword ptr [0x85DB88]
  fstp dword ptr [esi+0x000378]
  pop edi
  pop esi
  pop ebx
  add esp,0x14
  ret 

  LABEL21AA5D:
  fld dword ptr [0x85CB14]
  fstp dword ptr [esi+0x000378]
  pop edi
  pop esi
  pop ebx
  add esp,0x14
  ret 

  START:
  mov edi,0x00
  mov eax,[esi+0x35C]
  ;fstp st1
  fstp st0
  fld dword ptr [eax+0x08]
  mov ebx,[esi]
  call 0x820230
  mov edx,[ebx+0x0C]
  mov ecx,esi
  push eax
  call edx
  movzx eax,word ptr [esi+0x13E]
  cmp ax,di
  mov ebx,0x00000001 
  je LABEL21BDA1

  cmp ax,0x0009 
  jne LABEL21BE3A

  LABEL21BDA1:
  mov eax,[esi+0x35C]
  mov [esi+0x194],bl
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fldz 
  movzx edx,byte ptr [esi+0x104]
  mov eax,[esi]
  fst dword ptr [esp+0x10] ;#change
  mov eax,[eax+0x44]
  fstp dword ptr [esp+0x14]
  fld1 
  push 0x03 
  lea ecx,[esp+0x14]
  fstp dword ptr [esp+0x1C]
  fld dword ptr [esi+0x0F0]
  push ecx
  push 0xFFFFFFFF
  push edx
  sub esp,0x08 
  mov ecx,esi
  fstp dword ptr [esp+0x04]
  fld dword ptr [esi+0x0EC]
  fstp dword ptr [esp]
  push 0x0000035D 
  call eax
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0009 
  jne LABEL21BE3A

  fld dword ptr [esi+0x0F4]
  fmul qword ptr [0x85B848] 
  fstp dword ptr [esi+0x0F4]
  fld dword ptr [esi+0x0F8]
  fmul qword ptr [0x8579D8] 
  fstp dword ptr [esi+0x0F8]
  LABEL21BE3A:
  cmp ax,0x0002 
  je LABEL21BE4C

  cmp ax,0x0003 
  je LABEL21BE4C

  cmp ax,0x0008 
  jne LABEL21BEAA

  LABEL21BE4C:
  mov ecx,[esi+0x35C]
  fld dword ptr [ecx]
  push 0x19 
  fstp dword ptr [esi+0x12C]
  call 0x4099F0
  add esp,0x04 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL21BE76

  fadd dword ptr [0x871554] 
  LABEL21BE76:
  fmul qword ptr [0x858C08] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x10]
  fld dword ptr [esp+0x10]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  fld dword ptr [0x85BAE8] 
  fstp dword ptr [esi+0x378]
  LABEL21BEAA:
  cmp word ptr [esi+0x13E],0x04 
  jne LABEL21BF2B

  mov edx,[esi+0x35C]
  fld dword ptr [edx]
  push 0x19 
  fstp dword ptr [esi+0x12C]
  call 0x4099F0
  test eax,eax
  mov [esp+0x18],eax
  fild dword ptr [esp+0x18]
  jnl LABEL21BEDB

  fadd dword ptr [0x871554] 
  LABEL21BEDB:
  fmul qword ptr [0x858C08] 
  push 0x0A 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fadd qword ptr [0x8677C8] 
  fstp dword ptr [esp+0x18]
  fld dword ptr [esp+0x18]
  fst dword ptr [esi+0x11C]
  fstp dword ptr [esi+0x120]
  call 0x4099F0
  add esp,0x08 
  test eax,eax
  mov [esp+0x14],eax
  fild dword ptr [esp+0x14]
  jnl LABEL21BF1F

  fadd dword ptr [0x871554] 
  LABEL21BF1F:
  fsub qword ptr [0x858210] 
  fstp dword ptr [esi+0x378]
  LABEL21BF2B:
  movzx eax,word ptr [esi+0x13E]
  cmp ax,0x0005 
  je LABEL21BF44
  cmp ax,0x0008 
  je LABEL21BF44

  cmp ax,0x000A 
  jne LABEL21BF5C

  LABEL21BF44:
  fld dword ptr [0x85BAE8] 
  fstp dword ptr [esi+0x378]
  fld dword ptr [0x85C110] 
  fstp dword ptr [esi+0x37C]
  LABEL21BF5C:
  cmp ax,0x0006 
  jne LABEL21CE90

  mov eax,[esi+0x35C]
  mov [esi+0x194],bl
  fld dword ptr [eax+0x04]
  sub esp,0x08 
  fstp dword ptr [esp+0x04]
  lea ecx,[esi+0x04]
  fld dword ptr [eax]
  fstp dword ptr [esp]
  call 0x438C00
  fld dword ptr [esi+0x0F4]
  fmul qword ptr [0x85B848] 
  fstp dword ptr [esi+0x0F4]
  fld dword ptr [esi+0x0F8]
  fmul qword ptr [0x8579D8] 
  fstp dword ptr [esi+0x0F8]
  LABEL21CE90:
  pop edi
  pop esi
  pop ebx
  add esp,0x14 
  ret 
end

005C1C41 = satoriS_THEFLOOD
005C1C4C = satoriS_THEFLOOD_BULLET
005C1C51 = satoriS_THEFLOOD_BULLET_0F


;#