Function at 0x4cf240
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x61d8e8
mov eax, dword fs:[0]
push eax
sub esp, 0x44
mov eax, dword [0x6c4490]
xor eax, esp
mov dword [esp + 0x3c], eax
push esi
push edi
mov eax, dword [0x6c4490]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0x10], esi
mov edi, dword [ebp + 8]
mov dword [esp + 0x28], edi
call fcn.004b64e0
test al, al
jne 0x4cf9ba
call fcn.004cf1e0
test al, al
je 0x4cf9f2
cmp edi, 0xff
jb 0x4cf2b8
push edi
push str.CPythonPlayer::__UseSkill_dwSlotIndex_d__Its_not_available_skill_slot_number
call fcn.005354a0
add esp, 8
jmp 0x4cf9f2
lea eax, [edi + 0x72c]
mov ecx, esi
lea eax, [eax + eax*4]
push dword [esi + eax*8]
mov dword [esp + 0x30], eax
call fcn.004cfec0
test al, al
jne 0x4cf9ba
mov ecx, dword [0x71b1dc]
lea eax, [esp + 0x14]
push eax
mov eax, dword [esp + 0x30]
push dword [esi + eax*8]
call fcn.004d6b90
test eax, eax
jne 0x4cf305
push edi
push str.CPythonPlayer::__UseSkill_dwSlotIndex_d__There_is_no_skill_data
call fcn.005354a0
add esp, 8
jmp 0x4cf9f2
mov ecx, dword [esp + 0x14]
call fcn.004da180
test eax, eax
je 0x4cf336
push edi
mov ecx, esi
call fcn.004b5780
test eax, eax
je 0x4cf336
mov eax, dword [esp + 0x2c]
mov ecx, dword [0x717894]
push edi
push dword [esi + eax*8]
call fcn.004a7c00
jmp 0x4cf9f2
push edi
mov ecx, esi
call fcn.004cece0
test al, al
je 0x4cf9f2
mov eax, dword [esi + 4]
lea ecx, [esi + 4]
mov dword [esp + 0xc], ecx
mov eax, dword [eax + 0x90]
call eax
mov esi, eax
mov dword [esp + 0x20], esi
test esi, esi
jne 0x4cf375
push edi
push str.CPythonPlayer::__UseSkill_dwSlotIndex_d__There_is_no_main_player
call fcn.005354a0
add esp, 8
jmp 0x4cf9f2
mov ecx, esi
call fcn.004663a0
test eax, eax
jne 0x4cf9f2
mov ecx, dword [esp + 0x14]
xor edi, edi
mov dword [esp + 0x24], edi
call fcn.004da170
test eax, eax
jne 0x4cf3ad
call fcn.004da120
test eax, eax
jne 0x4cf3ad
call fcn.004da150
test eax, eax
je 0x4cf628
call fcn.004da160
mov ecx, dword [esp + 0x10]
test eax, eax
je 0x4cf3c1
call fcn.004b8530
jmp 0x4cf3c6
call fcn.004b8560
mov edi, eax
mov dword [esp + 0x24], edi
test edi, edi
jne 0x4cf4eb
mov edi, dword [esp + 0x10]
mov ecx, edi
call fcn.004b84f0
mov ecx, dword [esp + 0x14]
call fcn.004da160
mov ecx, edi
test eax, eax
je 0x4cf3f5
call fcn.004b8530
jmp 0x4cf3fa
call fcn.004b8560
mov edi, eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], edi
test edi, edi
jne 0x4cf4eb
mov ecx, dword [esp + 0x14]
call fcn.004da150
test eax, eax
je 0x4cf4a9
movss xmm2, dword [0x68020c]
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
call fcn.00465420
test al, al
je 0x4cf49f
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
mov ecx, edi
push 1
mov esi, dword [esi]
call fcn.00462d40
mov ecx, dword [esp + 0x10]
push eax
call dword [esi + 0x60]
push dword [esp + 0x28]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x24]
push eax
push edi
mov edi, dword [esp + 0x1c]
mov ecx, edi
push esi
call fcn.004cf0b0
test al, al
je 0x4cf9f2
mov ecx, dword [esp + 0x14]
call fcn.004da200
test eax, eax
je 0x4cf4af
mov edi, esi
mov ecx, esi
push esi
mov dword [esp + 0x28], edi
call fcn.00465020
push str.__ALERT__
call fcn.00535410
add esp, 4
jmp 0x4cf628
push str.NEED_TARGET
jmp 0x4cf9c3
mov edi, dword [esp + 0x10]
jmp 0x4cf476
call fcn.004da160
lea ecx, [edi + 4]
test eax, eax
mov eax, dword [ecx]
mov eax, dword [eax + 4]
je 0x4cf4e4
push str.ONLY_FOR_CORPSE
call eax
push eax
push str._is_
call dword [sym.imp.python27.dll_Py_BuildValue]
add esp, 0xc
push eax
push str.OnCannotUseSkill
push dword [edi + 8]
jmp 0x4cf9ea
push str.NEED_TARGET
jmp 0x4cf4c5
mov ecx, dword [esp + 0x14]
call fcn.004da1f0
test eax, eax
je 0x4cf5c1
cmp esi, edi
jne 0x4cf517
call fcn.004da200
test eax, eax
jne 0x4cf602
push str.CANNOT_USE_SELF
jmp 0x4cf9c3
push edi
mov ecx, esi
call fcn.004627a0
test al, al
jne 0x4cf595
mov ecx, edi
call fcn.00462bc0
test eax, eax
je 0x4cf595
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push eax
call fcn.004cf090
mov dword [esp + 0x18], eax
test eax, eax
je 0x4cf602
push edi
mov ecx, esi
call fcn.00462de0
mov ecx, dword [esp + 0x18]
movaps xmm2, xmm0
mov eax, ecx
shr eax, 0x1f
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [eax*8 + 0x680380]
cvtpd2ps xmm0, xmm1
comiss xmm2, xmm0
jb 0x4cf602
push ecx
push dword [esp + 0x2c]
mov ecx, edi
call fcn.00462d40
mov ecx, dword [esp + 0x18]
push eax
call fcn.004b9190
jmp 0x4cf9f2
mov ecx, dword [esp + 0x14]
call fcn.004da200
test eax, eax
je 0x4cf5b7
mov edi, esi
push str.__ALERT_
mov dword [esp + 0x28], edi
call fcn.00535410
add esp, 4
jmp 0x4cf602
push str.ONLY_FOR_ALLIANCE
jmp 0x4cf9c3
mov ecx, edi
call fcn.00460140
test eax, eax
je 0x4cf5d6
push str.CANNOT_ATTACK_ENEMY_IN_SAFE_AREA
jmp 0x4cf9c3
push edi
mov ecx, esi
call fcn.004627a0
test al, al
je 0x4cf9be
push dword [esp + 0x28]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push eax
push edi
push esi
call fcn.004cf0b0
test al, al
je 0x4cf9f2
push edi
mov ecx, esi
call fcn.00465020
cmp esi, edi
je 0x4cf628
mov ecx, esi
call fcn.00465000
mov ecx, esi
test al, al
je 0x4cf622
call fcn.0046b880
jmp 0x4cf628
push edi
call fcn.0046b8d0
mov ecx, dword [esp + 0x14]
call fcn.004da120
test eax, eax
je 0x4cf699
test edi, edi
je 0x4cf647
cmp edi, esi
je 0x4cf647
push edi
mov ecx, esi
call fcn.0046b8d0
jmp 0x4cf699
lea eax, [esp + 0x18]
push eax
call fcn.004b3d30
test al, al
je 0x4cf66c
push dword [esp + 0x18]
call fcn.004b3e80
test eax, eax
je 0x4cf699
push eax
mov ecx, esi
call fcn.0046b8d0
jmp 0x4cf699
lea eax, [esp + 0x30]
push eax
call fcn.004b3d50
test al, al
je 0x4cf688
lea eax, [esp + 0x30]
mov ecx, esi
push eax
call fcn.0046b890
jmp 0x4cf699
push dword [esp + 0x28]
push str.CPythonPlayer::__UseSkill__d____
call fcn.005354a0
add esp, 8
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
movss xmm1, dword [eax + ecx*8 + 0x10]
mov ecx, dword [esp + 0x14]
call fcn.004dabc0
push dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], eax
call fcn.004cf090
cmp dword [esp + 0xc], 0
mov dword [esp + 0x18], eax
jbe 0x4cf918
test edi, edi
je 0x4cf918
mov edx, 1
mov dword [esp + 0x30], 0
mov dword [esp + 0x1c], edx
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x58], 0
mov ecx, dword [esp + 0x14]
call fcn.004da130
test eax, eax
je 0x4cf7d9
lea eax, [esp + 0x30]
mov ecx, esi
push eax
mov eax, dword [esp + 0x1c]
push edi
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x680380]
cvtpd2ps xmm1, xmm0
call fcn.00465620
test al, al
je 0x4cf8b0
mov esi, dword [esp + 0x30]
mov edx, 1
cmp esi, dword [esp + 0x34]
je 0x4cf7d0
mov eax, dword [esp + 0xc]
cmp edx, eax
jae 0x4cf907
mov ecx, dword [esi]
mov dword [esp + 0x18], ecx
cmp edi, ecx
je 0x4cf7c7
call fcn.00460e80
test eax, eax
jne 0x4cf7bf
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
push edi
call fcn.00465140
mov ecx, edi
call fcn.00462ea0
mov edi, dword [0x717894]
lea edx, [esp + 0x3c]
push edx
lea ecx, [eax + 0x1dc]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov ecx, dword [esp + 0x18]
push eax
call fcn.00462d40
push eax
mov ecx, edi
call fcn.004aa680
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
inc edx
mov dword [esp + 0x1c], edx
jmp 0x4cf7c3
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
add esi, 4
cmp esi, dword [esp + 0x34]
jne 0x4cf756
mov esi, dword [esp + 0x20]
jmp 0x4cf8b5
call fcn.004da140
test eax, eax
je 0x4cf8b5
lea eax, [esp + 0x30]
mov ecx, esi
push eax
mov eax, dword [esp + 0x1c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x680380]
cvtpd2ps xmm1, xmm0
call fcn.00465940
test al, al
je 0x4cf8b0
mov esi, dword [esp + 0x30]
mov edx, 1
cmp esi, dword [esp + 0x34]
je 0x4cf7d0
mov eax, dword [esp + 0xc]
lea esp, [esp]
cmp edx, eax
jae 0x4cf907
mov ecx, dword [esi]
mov dword [esp + 0x18], ecx
cmp edi, ecx
je 0x4cf8a1
call fcn.00460e80
test eax, eax
jne 0x4cf899
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
push edi
call fcn.00465140
mov ecx, edi
call fcn.00462ea0
mov edi, dword [0x717894]
lea edx, [esp + 0x3c]
push edx
lea ecx, [eax + 0x1dc]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov ecx, dword [esp + 0x18]
push eax
call fcn.00462d40
push eax
mov ecx, edi
call fcn.004aa680
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
inc edx
mov dword [esp + 0x1c], edx
jmp 0x4cf89d
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
add esi, 4
cmp esi, dword [esp + 0x34]
jne 0x4cf830
mov esi, dword [esp + 0x20]
jmp 0x4cf8b5
mov edx, 1
mov eax, dword [esp + 0xc]
cmp edx, eax
jae 0x4cf907
sub eax, edx
mov dword [esp + 0xc], eax
lea eax, [esp + 0x3c]
mov ecx, esi
push eax
push edi
call fcn.00465340
movss xmm0, dword [esp + 0x40]
lea eax, [esp + 0x3c]
xorps xmm0, xmmword [0x6803a0]
mov ecx, esi
push eax
movss dword [esp + 0x44], xmm0
call fcn.004650c0
mov ecx, dword [0x717894]
lea eax, [esp + 0x3c]
push eax
push 0
call fcn.004aa680
dec dword [esp + 0xc]
jne 0x4cf8c3
lea ecx, [esp + 0x30]
mov dword [esp + 0x58], 0xffffffff
call fcn.0045c790
mov edx, dword [esp + 0x10]
mov ecx, edx
call fcn.004b90f0
mov ecx, dword [esp + 0x14]
call fcn.0047c3e0
test eax, eax
jne 0x4cf98f
mov eax, dword [esp + 0x2c]
push dword [edx + eax*8 + 8]
call fcn.004dacf0
mov esi, eax
mov eax, dword [esp + 0x2c]
movss xmm1, dword [edx + eax*8 + 0x10]
call fcn.004dad60
mov ecx, dword [esp + 0x14]
mov edx, eax
call fcn.004da270
test eax, eax
mov eax, dword [esp + 0x2c]
setne cl
movzx ecx, cl
push ecx
mov ecx, dword [esp + 0x24]
push edx
push esi
mov esi, dword [esp + 0x1c]
push dword [esi + eax*8]
call fcn.00465c80
test al, al
jne 0x4cf991
push dword [esp + 0x28]
push str.CPythonPlayer::__UseSkill__d____pkInstMain__NEW_UseSkill___ERROR
call fcn.005354a0
add esp, 8
jmp 0x4cf9f2
mov esi, edx
test edi, edi
je 0x4cf9ac
mov ecx, edi
call fcn.00462d40
push eax
push dword [esp + 0x2c]
mov ecx, esi
call fcn.004cfa20
mov al, 1
jmp 0x4cf9f4
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x2c]
call fcn.004cfa20
mov al, 1
jmp 0x4cf9f4
push str.CANNOT_ATTACK
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
push eax
push str._is_
call dword [sym.imp.python27.dll_Py_BuildValue]
add esp, 0xc
push eax
mov eax, dword [esp + 0x14]
push str.OnCannotUseSkill
push dword [eax + 8]
call fcn.005d5d90
add esp, 0xc
xor al, al
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.005dfa14
mov esp, ebp
pop ebp
ret 4