Function at 0x4f1950
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov edi, eax
mov eax, dword [ebx]
mov edx, dword [eax + 0x120]
mov ecx, ebx
call edx
cmp dword [edi + 0x30], eax
jne 0x4f19c1
mov eax, dword [ebx]
mov edx, dword [eax + 0x128]
mov ecx, ebx
call edx
cmp dword [edi + 0x34], eax
jne 0x4f19c1
mov eax, dword [edi]
mov edx, dword [eax + 0xf8]
mov ecx, edi
call edx
test al, al
jne 0x4f19a0
call fcn.0046d410
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [ebx]
mov edx, dword [eax + 0xf8]
mov ecx, ebx
call edx
test al, al
jne 0x4f19cc
call fcn.0046d410
mov eax, dword [edi]
mov edx, dword [eax + 0xfc]
mov ecx, edi
call edx
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [edi + 0x30]
mov edx, dword [ebx]
mov esi, dword [ebx + 0x18]
mov dword [ebp - 0xc], eax
mov eax, dword [edx + 0x12c]
mov ecx, ebx
call eax
mov edx, dword [ebp - 0xc]
mov ecx, dword [edi + 0x18]
sub eax, edx
mov dword [ebp - 8], eax
mov eax, dword [edi + 0x2c]
sub eax, edx
cmp dword [edi + 0x34], 0
mov dword [ebp - 4], 0
jle 0x4f1a46
mov edx, dword [edi + 0x30]
add eax, eax
add eax, eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
add eax, eax
add eax, eax
mov dword [ebp - 8], eax
xor eax, eax
test edx, edx
jle 0x4f1a34
mov edx, dword [ecx]
xor edx, dword [esi]
inc eax
and edx, 0xffffff
xor edx, dword [ecx]
add ecx, 4
mov dword [esi], edx
mov edx, dword [edi + 0x30]
add esi, 4
cmp eax, edx
jl 0x4f1a18
mov eax, dword [ebp - 4]
add ecx, dword [ebp - 0xc]
add esi, dword [ebp - 8]
inc eax
mov dword [ebp - 4], eax
cmp eax, dword [edi + 0x34]
jl 0x4f1a12
mov eax, dword [edi]
mov edx, dword [eax + 0xfc]
mov ecx, edi
call edx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx]
mov edx, dword [eax + 0xf8]
call edx
test al, al
jne 0x4f1a7f
call fcn.0046d410
mov eax, dword [ebx]
mov edx, dword [eax + 0xfc]
mov ecx, ebx
call edx
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [eax + 8]
mov dword [ebp - 0x18], edx
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], edx
lea edx, [ebx + 0x1c]
lea ecx, [ebp - 0x1c]
lea edi, [ebp + 0x14]
lea esi, [ebp + 0x10]
call fcn.004f0720
test al, al
je 0x4f1c70
fld dword [ebp - 0x14]
fsub dword [ebp - 0x1c]
fstp dword [ebp - 0xc]
fld dword [ebp - 0xc]
call fcn.005c6e00
fld dword [ebp - 0x10]
fsub dword [ebp - 0x18]
mov edi, eax
mov dword [ebp - 4], edi
fstp dword [ebp - 0xc]
fld dword [ebp - 0xc]
call fcn.005c6e00
mov esi, dword [ebx + 0x18]
mov dword [ebp - 0xc], eax
mov eax, dword [ebx]
mov edx, dword [eax + 0x12c]
mov ecx, ebx
call edx
fld dword [ebp + 0x14]
sub esp, 8
fstp qword [esp]
mov ebx, eax
call fcn.00448ae0
fld dword [ebp + 0x10]
imul ebx, eax
fstp qword [esp]
call fcn.00448ae0
mov ecx, dword [ebp + 0xc]
add ebx, eax
mov eax, dword [ecx]
mov edx, dword [eax + 0x12c]
add esp, 8
lea ebx, [esi + ebx*4]
call edx
sub eax, edi
mov edi, dword [ebp + 8]
mov edx, dword [edi]
mov dword [ebp - 8], eax
mov eax, dword [edi + 0x18]
mov dword [ebp + 0x14], eax
mov eax, dword [edx + 0x12c]
mov ecx, edi
call eax
fld dword [ebp - 0x18]
sub esp, 8
fstp qword [esp]
mov esi, eax
call fcn.00448ae0
fld dword [ebp - 0x1c]
imul esi, eax
fstp qword [esp]
call fcn.00448ae0
mov ecx, dword [ebp + 0x14]
mov edx, dword [edi]
add esi, eax
mov eax, dword [edx + 0x12c]
lea esi, [ecx + esi*4]
add esp, 8
mov ecx, edi
mov dword [ebp + 0x14], 1
call eax
mov edi, eax
sub edi, dword [ebp - 4]
test dword [ebp + 0x1c], 0x10000000
je 0x4f1bb9
mov eax, dword [ebp + 0x18]
fld dword [eax + 8]
sub esp, 8
fld dword [ebp - 0x1c]
fld st(0)
fsub dword [eax]
fsubp st(2)
fxch st(1)
fsub qword [0x650bc8]
fsubrp st(1)
fstp qword [esp]
call fcn.00448ae0
mov ecx, dword [ebp - 4]
add esp, 8
lea esi, [esi + eax*4]
mov dword [ebp + 0x14], 0xffffffff
lea edi, [edi + ecx*2]
test dword [ebp + 0x1c], 0x20000000
je 0x4f1c13
mov eax, dword [ebp + 0x18]
fld dword [eax + 0xc]
sub esp, 8
fld dword [ebp - 0x18]
fld st(0)
fsub dword [eax + 4]
fsubp st(2)
fxch st(1)
fsub qword [0x650bc8]
fsubrp st(1)
fstp qword [esp]
call fcn.00448ae0
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
mov dword [ebp + 0x18], eax
mov eax, dword [edx + 0x12c]
add esp, 8
call eax
imul eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
lea esi, [esi + eax*4]
mov eax, dword [edx + 0x12c]
call eax
neg eax
lea edi, [edi + eax*2]
mov eax, dword [ebp - 0xc]
test eax, eax
jle 0x4f1c6d
mov edx, dword [ebp - 8]
lea ecx, [edi*4]
mov dword [ebp - 0xc], ecx
lea ecx, [edx*4]
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 4]
mov dword [ebp + 0x18], eax
test ecx, ecx
jle 0x4f1c62
mov edi, dword [ebp + 0x14]
add edi, edi
add edi, edi
mov eax, dword [esi]
and eax, 0xff000000
je 0x4f1c57
mov edx, dword [ebx]
and edx, 0xffffff
or edx, eax
mov dword [ebx], edx
add esi, edi
add ebx, 4
dec ecx
jne 0x4f1c42
mov ecx, dword [ebp - 4]
add esi, dword [ebp - 0xc]
add ebx, dword [ebp - 8]
dec dword [ebp + 0x18]
jne 0x4f1c37
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [ecx]
mov edx, dword [eax + 0xfc]
call edx
mov eax, dword [ebx]
mov edx, dword [eax + 0xfc]
mov ecx, ebx
call edx
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x18