Function at 0x495380
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x3c
mov eax, dword [0x543fcc]
push esi
mov esi, ecx
mov dword [esp + 0x3c], eax
cmp byte [esi + 0x4a], 1
mov dword [esp + 0xc], esi
je 0x4953ab
xor al, al
pop esi
mov ecx, dword [esp + 0x38]
call fcn.004eee51
add esp, 0x3c
ret 0x20
mov eax, dword [esp + 0x44]
push ebx
push ebp
mov ebp, dword [esp + 0x68]
push edi
mov ecx, 0x13
mov edi, ebp
xor bl, bl
rep movsd dword es:[edi], dword [esi]
mov byte [esp + 0x13], bl
mov dword [esp + 0x14], eax
lea esp, [esp]
cmp byte [esp + 0x54], 1
jne 0x4953ea
cmp bl, 0xc
je 0x4955a1
cmp bl, 0xa
jne 0x4953fc
jmp 0x4955a1
cmp bl, 0xb
je 0x4955a1
cmp bl, 9
je 0x4955a1
cmp bl, 8
mov byte [esp + 0x6c], 1
je 0x495430
cmp bl, 7
je 0x495430
cmp bl, 6
je 0x495430
cmp byte [esp + 0x58], 1
jne 0x495421
cmp bl, 9
je 0x49542b
cmp bl, 0xa
jmp 0x495429
cmp bl, 0xb
je 0x49542b
cmp bl, 0xc
jne 0x495430
mov byte [esp + 0x6c], 0
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx]
test esi, esi
je 0x4955a1
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x64]
push edx
push eax
push ecx
push esi
call fcn.00494d90
add esp, 0x10
test al, al
je 0x4955a1
mov ebx, dword [esi + 0x7c]
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x64]
mov edx, dword [esi + 0x5c]
mov edi, dword [esi + 0x74]
mov dword [esp + 0x3c], ebx
mov ebx, dword [esi + 0x80]
mov dword [esp + 0x40], ebx
mov ebx, dword [esi + 0x84]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x68]
mov ebx, dword [esp + 0x20]
shr ebx, 0x10
mov dword [esp + 0x24], ecx
mov ecx, dword [esi + 0x70]
mov dword [esp + 0x30], ecx
mov ecx, dword [esi + 0x78]
mov dword [esp + 0x1c], edx
mov edx, dword [esi + 0x6c]
add word [ebp + 4], bx
mov ebx, dword [esp + 0x24]
add word [ebp + 0x1e], cx
movzx ecx, word [ebp + 0xa]
mov dword [esp + 0x28], eax
imul eax, eax, 0x32
shr ebx, 0x10
add word [ebp + 8], bx
mov ebx, edi
shr ebx, 0x10
add word [ebp + 0x1c], bx
movzx eax, ax
mov ebx, 0xffff
sub ebx, ecx
cmp ebx, eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x34], edi
jg 0x4954ec
mov eax, 0xffff
jmp 0x4954ee
add eax, ecx
imul edx, edx, 0x32
mov word [ebp + 0xa], ax
movzx eax, word [ebp + 0xe]
movzx ecx, dx
mov edx, 0xffff
sub edx, eax
cmp edx, ecx
jg 0x49550e
mov eax, 0xffff
jmp 0x495510
add eax, ecx
mov cx, word [esp + 0x2e]
mov dx, word [esp + 0x32]
add word [ebp + 0x10], cx
add word [ebp + 0x14], dx
mov cx, word [esp + 0x3e]
mov dx, word [esp + 0x40]
add word [ebp + 0x1a], cx
add word [ebp + 0x20], dx
mov cx, word [esp + 0x44]
mov dx, word [esp + 0x46]
add word [ebp + 0x16], di
add word [ebp + 0x24], cx
add word [ebp + 0x26], dx
mov bl, byte [esp + 0x13]
mov word [ebp + 0xe], ax
mov ax, word [esp + 0x2a]
add word [ebp + 0xc], ax
mov ax, word [esp + 0x3c]
add word [ebp + 0x18], ax
mov ax, word [esp + 0x42]
add word [ebp + 0x22], ax
cmp byte [esp + 0x6c], 1
jne 0x4955a1
mov ax, word [esp + 0x1e]
add word [ebp], ax
mov cx, word [esp + 0x20]
mov dx, word [esp + 0x24]
add word [ebp + 2], cx
add word [ebp + 6], dx
mov ax, word [esp + 0x30]
add word [ebp + 0x12], ax
mov ecx, dword [esi + 4]
mov dl, byte [ecx + 0x13]
mov byte [ebp + 0x48], dl
mov ecx, dword [esp + 0x14]
inc bl
add ecx, 4
cmp bl, 0xf
mov byte [esp + 0x13], bl
mov dword [esp + 0x14], ecx
jb 0x4953d0
cmp byte [esp + 0x58], 1
jne 0x4955f5
cmp byte [esp + 0x54], 1
jne 0x4955d2
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x2c]
jmp 0x4955d9
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + 0x30]
test eax, eax
je 0x4955f1
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0x13
je 0x4955eb
cmp al, 0x24
jne 0x4955f5
mov byte [ebp + 0x49], 2
jmp 0x4955f5
mov byte [ebp + 0x49], 0
movsx eax, word [ebp]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x6c], eax
fild dword [esp + 0x6c]
fstp dword [esp + 0x6c]
fld dword [esp + 0x6c]
fmul dword [esi + 0x44]
call fcn.004f078c
movsx ecx, word [ebp + 2]
mov dword [esp + 0x6c], ecx
mov word [ebp], ax
fild dword [esp + 0x6c]
fstp dword [esp + 0x6c]
fld dword [esp + 0x6c]
fmul dword [esi + 0x44]
call fcn.004f078c
mov edx, dword [esp + 0x5c]
mov word [ebp + 2], ax
cmp word [edx + 2], 0
mov byte [esp + 0x6c], 0
jbe 0x4966f1
mov bl, byte [esp + 0x60]
movzx eax, byte [esp + 0x6c]
mov ecx, dword [esp + 0x5c]
lea esi, [ecx + eax*4 + 4]
mov ecx, dword [0x6b580c]
xor edi, edi
mov di, word [esi]
push edi
call fcn.004505c0
test eax, eax
je 0x495681
movzx eax, word [eax + 0x1e6]
test ax, ax
je 0x495681
mov edi, eax
movzx eax, di
cmp eax, 0x9102
jg 0x496040
je 0x495eaf
cmp eax, 0x8306
jg 0x495a8c
je 0x4964fc
cmp eax, 0x8107
jg 0x495a75
je case.0x496066.37136
sub eax, 0x8102
je 0x4958c8
dec eax
je 0x495731
sub eax, 3
jne case.0x496066.37126
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
shl eax, 1
mov dword [esp + 0x60], eax
movzx ecx, bl
fild dword [esp + 0x60]
mov dword [esp + 0x60], ecx
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fmul dword [esp + 0x68]
call fcn.004f078c
add word [ebp + 0x10], ax
movsx ax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx ax, byte [esi + 3]
lea ecx, [eax + edx*2]
shl ecx, 1
add word [ebp + 0x1e], cx
jmp case.0x496066.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x495744
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x49574a
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x496066.37126
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0xd
je 0x495764
cmp al, 0xe
jne case.0x496066.37126
mov cl, byte [esp + 0x58]
cmp cl, 1
jne 0x49580b
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
mov cl, byte [esp + 0x58]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
test edi, edi
je 0x495a5f
mov edx, dword [edi + 4]
mov al, byte [edx + 0x15]
cmp al, 0xb
je 0x495825
cmp al, 0xd
jne 0x495a5f
test cl, cl
jne case.0x496066.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
jmp case.0x496066.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x4958db
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x4958e1
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x496066.37126
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0xb
je 0x4958fb
cmp al, 0xc
jne case.0x496066.37126
mov cl, byte [esp + 0x58]
cmp cl, 1
jne 0x4959a2
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
mov cl, byte [esp + 0x58]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
test edi, edi
je 0x495a5f
mov edx, dword [edi + 4]
mov al, byte [edx + 0x15]
cmp al, 0xb
je 0x4959bc
cmp al, 0xd
jne 0x495a5f
test cl, cl
jne case.0x496066.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
jmp case.0x496066.37126
cmp cl, 1
jne case.0x496066.37126
mov cl, byte [esi + 2]
mov al, byte [ebp + 0x49]
add al, cl
jmp 0x4966d2
sub eax, 0x8202
je case.0x496066.37128
dec eax
je 0x4964af
jmp case.0x496066.37126
cmp eax, 0x8705
jg 0x495cd5
je 0x495b49
cmp eax, 0x8402
je 0x495ac9
cmp eax, 0x8604
jne case.0x496066.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x495dbf
mov eax, dword [ecx + 0x2c]
mov edx, dword [ecx + 0x24]
jmp 0x495dc5
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
fild dword [esp + 0x60]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 0x10], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 0x1c], ax
jmp case.0x496066.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x495b5c
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x495b62
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x496066.37126
mov eax, dword [eax + 4]
cmp byte [eax + 0x15], 0x14
jne case.0x496066.37126
mov al, byte [esp + 0x58]
cmp al, 1
jne 0x495c1d
movsx eax, byte [esi + 2]
movzx ecx, bl
mov dword [esp + 0x60], ecx
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
fild dword [esp + 0x60]
lea eax, [eax + edx*2]
fstp dword [esp + 0x60]
lea ecx, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], ecx
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
mov dword [esp + 0x68], ecx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx ax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
add word [ebp + 6], cx
mov al, byte [esp + 0x58]
test edi, edi
je 0x49647b
mov edx, dword [edi + 4]
cmp byte [edx + 0x15], 0x14
jne 0x49647b
test al, al
jne case.0x496066.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
jmp case.0x496066.37126
cmp eax, 0x8706
je 0x495aaf
cmp eax, 0x8806
jne case.0x496066.37126
cmp byte [esp + 0x58], 1
jne case.0x496066.37126
cmp byte [esp + 0x54], 1
jne 0x495d06
mov edx, dword [esp + 0x50]
mov eax, dword [edx + 0x2c]
jmp 0x495d0d
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x30]
test eax, eax
je case.0x496066.37126
mov ecx, dword [eax + 4]
mov al, byte [ecx + 0x15]
cmp al, 0x11
je 0x495d27
cmp al, 0x12
jne case.0x496066.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
fild dword [esp + 0x60]
shl edx, 1
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
add word [ebp + 6], dx
jmp case.0x496066.37126
mov eax, dword [ecx + 0x30]
mov edx, dword [ecx + 0x28]
test eax, eax
je case.0x496066.37126
test edx, edx
je case.0x496066.37126
mov eax, dword [eax + 4]
mov cl, byte [eax + 0x15]
cmp cl, 0xb
je 0x495de5
cmp cl, 0xd
jne 0x495df3
mov eax, dword [edx + 4]
mov al, byte [eax + 0x15]
cmp al, 0xb
je 0x495e09
cmp al, 0xd
je 0x495e09
cmp cl, 0x14
jne case.0x496066.37126
mov ecx, dword [edx + 4]
cmp byte [ecx + 0x15], 0x14
jne case.0x496066.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
fild dword [esp + 0x60]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
mov cl, byte [ebp + 0x49]
lea edx, [eax + eax*2]
add word [ebp + 6], dx
mov al, byte [esi + 2]
add cl, al
mov byte [ebp + 0x49], cl
jmp case.0x496066.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x495ec2
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x495ec8
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x496066.37126
mov ecx, dword [eax + 4]
mov al, byte [ecx + 0x15]
cmp al, 0x1e
je 0x495ee2
cmp al, 0x21
jne case.0x496066.37126
mov al, byte [esp + 0x58]
cmp al, 1
jne 0x495f88
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
fild dword [esp + 0x60]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
add word [ebp + 6], dx
mov al, byte [esp + 0x58]
test edi, edi
je 0x4961fe
mov ecx, dword [edi + 4]
cmp byte [ecx + 0x15], 0x26
jne 0x4961fe
test al, al
jne case.0x496066.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
fild dword [esp + 0x60]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
add word [ebp + 6], dx
jmp case.0x496066.37126
cmp eax, 0x9207
jg 0x496490
je 0x4962ef
sub eax, 0x9105
cmp eax, 0xb
ja case.0x496066.37126
movzx ecx, byte [eax + 0x496734]
jmp dword [ecx*4 + 0x49671c]
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x496080
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x496086
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x496066.37126
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0x1f
je 0x4960a0
cmp al, 0x22
jne case.0x496066.37126
mov al, byte [esp + 0x58]
cmp al, 1
jne 0x496146
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
mov al, byte [esp + 0x58]
test edi, edi
je 0x4961fe
mov ecx, dword [edi + 4]
cmp byte [ecx + 0x15], 0x26
jne 0x4961fe
test al, al
jne case.0x496066.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
fild dword [esp + 0x60]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
add word [ebp + 6], dx
jmp case.0x496066.37126
cmp al, 1
jne case.0x496066.37126
mov al, byte [esi + 2]
add byte [ebp + 0x49], al
jmp case.0x496066.37126
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
movzx cx, bl
mov edx, 0xffff
imul eax, ecx
movzx ecx, word [ebp + 0xa]
shl eax, 1
movzx eax, ax
sub edx, ecx
cmp edx, eax
jg 0x49624a
mov eax, 0xffff
mov word [ebp + 0xa], ax
jmp case.0x496066.37126
add eax, ecx
mov word [ebp + 0xa], ax
jmp case.0x496066.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
mov dword [esp + 0x60], edx
movzx eax, bl
fild dword [esp + 0x60]
mov dword [esp + 0x60], eax
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fmul dword [esp + 0x68]
call fcn.004f078c
add word [ebp + 4], ax
jmp case.0x496066.37126
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea ecx, [eax + edx*2]
shl ecx, 1
mov dword [esp + 0x60], ecx
movzx edx, bl
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fmul dword [esp + 0x68]
call fcn.004f078c
add word [ebp + 0x12], ax
jmp case.0x496066.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x496302
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x496308
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x496066.37126
mov eax, dword [eax + 4]
cmp byte [eax + 0x15], 0x23
jne case.0x496066.37126
mov al, byte [esp + 0x58]
cmp al, 1
jne 0x4963c3
movsx eax, byte [esi + 2]
movzx ecx, bl
mov dword [esp + 0x60], ecx
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
fild dword [esp + 0x60]
lea eax, [eax + edx*2]
fstp dword [esp + 0x60]
lea ecx, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], ecx
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
mov dword [esp + 0x68], ecx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx ax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
add word [ebp + 6], cx
mov al, byte [esp + 0x58]
test edi, edi
je 0x49647b
mov edx, dword [edi + 4]
cmp byte [edx + 0x15], 0x28
jne 0x49647b
test al, al
jne case.0x496066.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
jmp case.0x496066.37126
cmp al, 1
jne case.0x496066.37126
mov cl, byte [esi + 2]
mov al, byte [ebp + 0x49]
add al, cl
jmp 0x4966d2
cmp eax, 0x9214
jg 0x4965cd
je 0x49654f
sub eax, 0x9212
je 0x4964fc
dec eax
jne case.0x496066.37126
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea ecx, [eax + edx*2]
shl ecx, 1
mov dword [esp + 0x60], ecx
movzx edx, bl
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fmul dword [esp + 0x68]
call fcn.004f078c
add word [ebp + 8], ax
jmp case.0x496066.37126
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
movzx dx, bl
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
movzx ecx, word [ebp + 0xe]
imul eax, edx
shl eax, 1
movzx eax, ax
mov edx, 0xffff
sub edx, ecx
cmp edx, eax
jg 0x49652e
mov eax, 0xffff
jmp 0x496530
add eax, ecx
mov word [ebp + 0xe], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
add word [ebp + 0x18], dx
jmp case.0x496066.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
mov dword [esp + 0x68], eax
fld dword [esp + 0x60]
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 0xc], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 0x10], ax
jmp case.0x496066.37126
cmp eax, 0x9405
je 0x4965df
cmp eax, 0x9803
jne case.0x496066.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x4965f2
mov eax, dword [ecx + 0x2c]
mov ecx, dword [ecx + 0x24]
jmp 0x4965f8
mov eax, dword [ecx + 0x30]
mov ecx, dword [ecx + 0x28]
test eax, eax
je case.0x496066.37126
test ecx, ecx
je case.0x496066.37126
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0x1e
je 0x496616
cmp al, 0x1f
jne 0x49661f
mov edx, dword [ecx + 4]
cmp byte [edx + 0x15], 0x26
je 0x496634
cmp al, 0x23
jne case.0x496066.37126
mov eax, dword [ecx + 4]
cmp byte [eax + 0x15], 0x28
jne case.0x496066.37126
movsx eax, byte [esi + 2]
movzx ecx, bl
mov dword [esp + 0x60], ecx
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
fild dword [esp + 0x60]
lea eax, [eax + edx*2]
fstp dword [esp + 0x60]
lea ecx, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], ecx
fmul dword [str._n_Skill::CFunctions::Rot]
fadd dword [0x50b55c]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp], ax
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
mov dword [esp + 0x68], ecx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.004f078c
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx ax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
add word [ebp + 6], cx
mov dl, byte [esi + 2]
mov al, byte [ebp + 0x49]
add al, dl
mov byte [ebp + 0x49], al
mov al, byte [esp + 0x6c]
mov ecx, dword [esp + 0x5c]
inc al
mov byte [esp + 0x6c], al
movzx ax, al
cmp ax, word [ecx + 2]
jb 0x495651
cmp byte [ebp + 0x49], 6
jbe 0x4966fb
mov byte [ebp + 0x49], 6
mov ecx, ebp
call fcn.00494b90
mov ecx, dword [esp + 0x48]
pop edi
mov byte [ebp + 0x4a], 2
pop ebp
pop ebx
mov al, 1
pop esi
call fcn.004eee51
add esp, 0x3c
ret 0x20