Function at 0x4c0960
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x64097d
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x40
mov eax, dword [0x6f8458]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x30], esi
mov edi, dword [ebx + 8]
mov dword [ebp - 0x4c], edi
call fcn.004a8f20
test al, al
jne 0x4c1094
call fcn.004c0900
test al, al
je 0x4c09d5
cmp edi, 0xff
jb 0x4c09dc
push edi
push str.CPythonPlayer::__UseSkill_dwSlotIndex_d__Its_not_available_skill_slot_number
call fcn.004fb1e0
add esp, 8
xor al, al
jmp 0x4c1096
lea eax, [edi + edi*4]
mov ecx, esi
push dword [esi + eax*8 + 0x19894]
mov dword [ebp - 0x48], eax
call fcn.004c1610
test al, al
jne 0x4c1094
mov ecx, dword [0x785770]
lea eax, [ebp - 0x38]
push eax
mov eax, dword [ebp - 0x48]
push dword [esi + eax*8 + 0x19894]
call fcn.004c86f0
test eax, eax
jne 0x4c0a2a
push edi
push str.CPythonPlayer::__UseSkill_dwSlotIndex_d__There_is_no_skill_data
call fcn.004fb1e0
add esp, 8
xor al, al
jmp 0x4c1096
mov ecx, dword [ebp - 0x38]
call fcn.004cc2d0
test eax, eax
je 0x4c0a5f
push edi
mov ecx, esi
call fcn.004a82c0
test eax, eax
je 0x4c0a5f
mov eax, dword [ebp - 0x48]
mov ecx, dword [0x74ce8c]
push edi
push dword [esi + eax*8 + 0x19894]
call fcn.004995c0
xor al, al
jmp 0x4c1096
push edi
mov ecx, esi
call fcn.004c03f0
test al, al
je 0x4c09d5
mov eax, dword [esi + 4]
lea ecx, [esi + 4]
mov dword [ebp - 0x3c], ecx
mov eax, dword [eax + 0x88]
call eax
mov esi, eax
mov dword [ebp - 0x40], esi
test esi, esi
jne 0x4c0a9e
push edi
push str.CPythonPlayer::__UseSkill_dwSlotIndex_d__There_is_no_main_player
call fcn.004fb1e0
add esp, 8
xor al, al
jmp 0x4c1096
mov ecx, esi
call fcn.00458c20
test eax, eax
jne 0x4c09d5
mov ecx, dword [ebp - 0x38]
xor edi, edi
call fcn.004cc2c0
test eax, eax
jne 0x4c0ad1
call fcn.004cc270
test eax, eax
jne 0x4c0ad1
call fcn.004cc2a0
test eax, eax
je 0x4c0d69
call fcn.004cc2b0
mov ecx, dword [ebp - 0x30]
test eax, eax
je 0x4c0ae4
call fcn.004aa8f0
jmp 0x4c0ae9
call fcn.004aa920
mov edi, eax
test edi, edi
jne 0x4c0c0a
mov edi, dword [ebp - 0x30]
mov ecx, edi
call fcn.004aa8b0
mov ecx, dword [ebp - 0x38]
call fcn.004cc2b0
mov ecx, edi
test eax, eax
je 0x4c0b12
call fcn.004aa8f0
jmp 0x4c0b17
call fcn.004aa920
mov edi, eax
mov dword [ebp - 0x34], edi
test edi, edi
jne 0x4c0c0a
mov ecx, dword [ebp - 0x38]
call fcn.004cc2a0
test eax, eax
je 0x4c0be1
movss xmm2, dword [0x6b2f68]
lea eax, [ebp - 0x34]
push eax
mov ecx, esi
call fcn.00457ff0
mov edi, dword [ebp - 0x30]
mov edx, dword [edi + 4]
lea ecx, [edi + 4]
mov dword [ebp - 0x3c], edx
test al, al
je 0x4c0bb0
mov esi, dword [ebp - 0x34]
mov ecx, esi
push 1
call fcn.00455270
push eax
mov eax, dword [ebp - 0x3c]
lea ecx, [edi + 4]
call dword [eax + 0x60]
push dword [ebp - 0x4c]
mov eax, dword [ebp - 0x38]
mov ecx, edi
push eax
push esi
mov esi, dword [ebp - 0x40]
push esi
call fcn.004c07d0
test al, al
je 0x4c09d5
mov ecx, dword [ebp - 0x38]
call fcn.004cc350
test eax, eax
je 0x4c0be6
push esi
mov ecx, esi
mov edi, esi
call fcn.00457c00
push str.__ALERT__
call fcn.004fb140
add esp, 4
jmp 0x4c0d69
mov eax, dword [edx + 4]
push str.NEED_TARGET
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]
call fcn.005a0a10
add esp, 0xc
xor al, al
jmp 0x4c1096
mov edi, dword [ebp - 0x30]
jmp 0x4c0b8b
mov eax, dword [edi + 4]
mov esi, dword [eax + 4]
call fcn.004cc2b0
lea ecx, [edi + 4]
test eax, eax
je 0x4c0c01
push str.ONLY_FOR_CORPSE
call esi
jmp 0x4c0bba
push str.NEED_TARGET
call esi
jmp 0x4c0bba
mov ecx, dword [ebp - 0x38]
call fcn.004cc340
test eax, eax
je 0x4c0d05
cmp esi, edi
jne 0x4c0c64
call fcn.004cc350
test eax, eax
jne 0x4c0d43
push str.CANNOT_USE_SELF
mov ecx, dword [ebp - 0x3c]
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 [ebp - 0x30]
push str.OnCannotUseSkill
push dword [eax + 8]
call fcn.005a0a10
add esp, 0xc
xor al, al
jmp 0x4c1096
push edi
mov ecx, esi
call fcn.00454d30
test al, al
jne 0x4c0cde
mov ecx, edi
call fcn.004550b0
test eax, eax
je 0x4c0cde
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x30]
push eax
call fcn.004c07b0
mov dword [ebp - 0x34], eax
test eax, eax
je 0x4c0d43
push edi
mov ecx, esi
call fcn.00455310
mov ecx, dword [ebp - 0x34]
movaps xmm2, xmm0
mov eax, ecx
shr eax, 0x1f
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [eax*8 + 0x6b31c0]
cvtpd2ps xmm0, xmm1
comiss xmm2, xmm0
jb 0x4c0d43
push ecx
push dword [ebp - 0x4c]
mov ecx, edi
call fcn.00455270
mov ecx, dword [ebp - 0x30]
push eax
call fcn.004ab550
xor al, al
jmp 0x4c1096
mov ecx, dword [ebp - 0x38]
call fcn.004cc350
test eax, eax
je 0x4c0cfb
push str.__ALERT_
mov edi, esi
call fcn.004fb140
add esp, 4
jmp 0x4c0d43
push str.ONLY_FOR_ALLIANCE
jmp 0x4c0c30
mov ecx, edi
call fcn.00452490
test eax, eax
je 0x4c0d1a
push str.CANNOT_ATTACK_ENEMY_IN_SAFE_AREA
jmp 0x4c0c30
push edi
mov ecx, esi
call fcn.00454d30
test al, al
je 0x4c10b6
push dword [ebp - 0x4c]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x30]
push eax
push edi
push esi
call fcn.004c07d0
test al, al
je 0x4c09d5
push edi
mov ecx, esi
call fcn.00457c00
cmp esi, edi
je 0x4c0d69
mov ecx, esi
call fcn.00457be0
mov ecx, esi
test al, al
je 0x4c0d63
call fcn.0045e160
jmp 0x4c0d69
push edi
call fcn.0045e1b0
mov ecx, dword [ebp - 0x38]
call fcn.004cc270
test eax, eax
je 0x4c0dd4
test edi, edi
je 0x4c0d87
cmp edi, esi
je 0x4c0d87
push edi
mov ecx, esi
call fcn.0045e1b0
jmp 0x4c0dd4
lea eax, [ebp - 0x34]
push eax
call fcn.004a6310
test al, al
je 0x4c0daa
push dword [ebp - 0x34]
call fcn.004a6460
test eax, eax
je 0x4c0dd4
push eax
mov ecx, esi
call fcn.0045e1b0
jmp 0x4c0dd4
lea eax, [ebp - 0x20]
push eax
call fcn.004a6330
test al, al
je 0x4c0dc4
lea eax, [ebp - 0x20]
mov ecx, esi
push eax
call fcn.0045e170
jmp 0x4c0dd4
push dword [ebp - 0x4c]
push str.CPythonPlayer::__UseSkill__d____
call fcn.004fb1e0
add esp, 8
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x48]
movss xmm1, dword [eax + ecx*8 + 0x198a4]
mov ecx, dword [ebp - 0x38]
call fcn.004ccd60
push dword [ebp - 0x38]
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x44], eax
call fcn.004c07b0
cmp dword [ebp - 0x44], 0
mov dword [ebp - 0x34], eax
jbe 0x4c0ffe
test edi, edi
je 0x4c0ffe
mov edx, 1
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 4], 0
mov ecx, dword [ebp - 0x38]
call fcn.004cc280
test eax, eax
je 0x4c0ef1
lea eax, [ebp - 0x20]
mov ecx, esi
push eax
mov eax, dword [ebp - 0x34]
push edi
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x6b31c0]
cvtpd2ps xmm1, xmm0
call fcn.00458170
mov edx, 1
test al, al
je 0x4c0fa2
mov esi, dword [ebp - 0x20]
cmp esi, dword [ebp - 0x1c]
je 0x4c0f9f
cmp edx, dword [ebp - 0x44]
jae 0x4c0fef
mov eax, dword [esi]
mov dword [ebp - 0x34], eax
cmp edi, eax
je 0x4c0ee4
mov ecx, eax
call fcn.00453430
test eax, eax
jne 0x4c0ee1
push dword [ebp - 0x34]
mov ecx, dword [ebp - 0x40]
call fcn.00457d10
mov ecx, dword [ebp - 0x34]
call fcn.004553d0
lea edx, [ebp - 0x2c]
push edx
lea ecx, [eax + 0x2a8]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov ecx, dword [ebp - 0x34]
push eax
call fcn.00455270
mov ecx, dword [0x74ce8c]
push eax
call fcn.0049c440
mov edx, dword [ebp - 0x3c]
inc edx
mov dword [ebp - 0x3c], edx
jmp 0x4c0ee4
mov edx, dword [ebp - 0x3c]
add esi, 4
cmp esi, dword [ebp - 0x1c]
jne 0x4c0e82
jmp 0x4c0f9f
call fcn.004cc290
test eax, eax
je 0x4c0fa2
lea eax, [ebp - 0x20]
mov ecx, esi
push eax
mov eax, dword [ebp - 0x34]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x6b31c0]
cvtpd2ps xmm1, xmm0
call fcn.00458350
mov edx, 1
test al, al
je 0x4c0fa2
mov esi, dword [ebp - 0x20]
cmp esi, dword [ebp - 0x1c]
je 0x4c0f9f
cmp edx, dword [ebp - 0x44]
jae 0x4c0fef
mov eax, dword [esi]
mov dword [ebp - 0x34], eax
cmp edi, eax
je 0x4c0f97
mov ecx, eax
call fcn.00453430
test eax, eax
jne 0x4c0f94
push dword [ebp - 0x34]
mov ecx, dword [ebp - 0x40]
call fcn.00457d10
mov ecx, dword [ebp - 0x34]
call fcn.004553d0
lea edx, [ebp - 0x2c]
push edx
lea ecx, [eax + 0x2a8]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov ecx, dword [ebp - 0x34]
push eax
call fcn.00455270
mov ecx, dword [0x74ce8c]
push eax
call fcn.0049c440
mov edx, dword [ebp - 0x3c]
inc edx
mov dword [ebp - 0x3c], edx
jmp 0x4c0f97
mov edx, dword [ebp - 0x3c]
add esi, 4
cmp esi, dword [ebp - 0x1c]
jne 0x4c0f35
mov esi, dword [ebp - 0x40]
mov eax, dword [ebp - 0x44]
cmp edx, eax
jae 0x4c0fef
sub eax, edx
mov dword [ebp - 0x44], eax
nop
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
push edi
call fcn.00457f00
movss xmm0, dword [ebp - 0x28]
lea eax, [ebp - 0x2c]
xorps xmm0, xmmword [0x6b3200]
mov ecx, esi
push eax
movss dword [ebp - 0x28], xmm0
call fcn.00457c90
mov ecx, dword [0x74ce8c]
lea eax, [ebp - 0x2c]
push eax
push 0
call fcn.0049c440
sub dword [ebp - 0x44], 1
jne 0x4c0fb0
lea ecx, [ebp - 0x20]
mov dword [ebp - 4], 0xffffffff
call fcn.0044f570
mov edx, dword [ebp - 0x30]
mov ecx, edx
call fcn.004ab4b0
mov ecx, dword [ebp - 0x38]
call fcn.004c3870
test eax, eax
jne 0x4c1078
mov eax, dword [ebp - 0x48]
push dword [edx + eax*8 + 0x1989c]
call fcn.004cce90
mov esi, eax
mov eax, dword [ebp - 0x48]
movss xmm1, dword [edx + eax*8 + 0x198a4]
call fcn.004ccf00
mov ecx, dword [ebp - 0x38]
mov edx, eax
call fcn.004cc3c0
test eax, eax
mov eax, dword [ebp - 0x48]
setne cl
movzx ecx, cl
push ecx
mov ecx, dword [ebp - 0x40]
push edx
push esi
mov esi, dword [ebp - 0x30]
push dword [esi + eax*8 + 0x19894]
call fcn.00458560
test al, al
jne 0x4c107a
push dword [ebp - 0x4c]
push str.CPythonPlayer::__UseSkill__d____pkInstMain__NEW_UseSkill___ERROR
call fcn.004fb1e0
add esp, 8
xor al, al
jmp 0x4c1096
mov esi, edx
test edi, edi
je 0x4c1087
mov ecx, edi
call fcn.00455270
jmp 0x4c1089
xor eax, eax
push eax
push dword [ebp - 0x4c]
mov ecx, esi
call fcn.004c10c0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.005ab78d
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4
push str.CANNOT_ATTACK
jmp 0x4c0c30