Function at 0x4d1f90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x640d6d
mov eax, dword fs:[0]
push eax
sub esp, 0x54
push ebx
push esi
push edi
mov eax, dword [0x6ae654]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebx]
mov edi, dword [ebx + 8]
cmp eax, edi
jge 0x4d229a
mov ecx, dword [ebx + 4]
mov ebx, dword [ebx + 0xc]
cmp ecx, ebx
jge 0x4d229a
sub ebx, ecx
sub edi, eax
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x1c], ebx
call fcn.0051f2e0
push 0xff
lea ecx, [ebp - 0x2c]
mov dword [ebp - 4], 0
call fcn.0051f400
mov esi, dword [ebp + 0x10]
mov ecx, esi
push 8
call fcn.0051e770
push 8
mov ecx, esi
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x661aa0]
movsd qword [ebp - 0x3c], xmm0
call fcn.0051e760
push 8
mov ecx, esi
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x661aa0]
movsd qword [ebp - 0x34], xmm0
call fcn.0051e750
xor esi, esi
movd xmm4, eax
cvtdq2pd xmm4, xmm4
shr eax, 0x1f
addsd xmm4, qword [eax*8 + 0x661aa0]
movsd qword [ebp - 0x24], xmm4
cmp dword [ebp + 0x18], esi
jne 0x4d2186
test ebx, ebx
jle 0x4d2292
mov ecx, dword [ebp + 0x14]
nop dword [eax + eax]
mov eax, esi
mov dword [ebp - 0x14], 0
cdq
idiv dword [ecx + 4]
mov dword [ebp - 0x18], eax
test edi, edi
jle 0x4d2178
mov ebx, dword [ebp - 0x14]
movd xmm3, edi
cvtdq2pd xmm3, xmm3
mov dword [ebp - 0x10], edi
movsd qword [ebp - 0x44], xmm3
nop dword [eax + eax]
mov ecx, dword [ebp + 0x14]
mov eax, ebx
cdq
movd xmm2, ebx
cvtdq2pd xmm2, xmm2
idiv dword [ecx]
mov ecx, 0xc0
movaps xmm0, xmm2
xor eax, dword [ebp - 0x18]
test al, 1
mulsd xmm0, xmm4
mov eax, 0xff
cmovne eax, ecx
imul eax, dword [ebp - 0x10]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
addsd xmm0, xmm1
divsd xmm0, xmm3
cvttsd2si eax, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x3c]
movzx eax, al
mulsd xmm0, qword [ebp - 0x34]
push eax
addsd xmm2, xmm1
addsd xmm0, xmm1
divsd xmm2, xmm3
divsd xmm0, xmm3
cvttsd2si eax, xmm0
movzx eax, al
push eax
cvttsd2si eax, xmm2
movzx eax, al
push eax
lea eax, [ebp - 0x60]
push eax
call fcn.0051e910
add esp, 0x10
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0x2c]
push ecx
mov ecx, dword [ebp + 0xc]
push eax
mov edx, dword [edx]
mov byte [ebp - 4], 1
mov eax, dword [ecx + 4]
add eax, esi
push eax
mov eax, dword [ecx]
mov ecx, dword [ebp + 8]
add eax, ebx
push eax
call dword [edx + 0x34]
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 0
call fcn.0051e610
dec dword [ebp - 0x10]
inc ebx
movsd xmm3, qword [ebp - 0x44]
movsd xmm4, qword [ebp - 0x24]
cmp ebx, edi
jl 0x4d20b0
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x14]
inc esi
cmp esi, ebx
jl 0x4d2080
jmp 0x4d2292
test edi, edi
jle 0x4d2292
mov ecx, dword [ebp + 0x14]
mov eax, esi
mov dword [ebp - 0x1c], 0
cdq
idiv dword [ecx]
mov dword [ebp - 0x18], eax
test ebx, ebx
jle 0x4d2289
mov edi, dword [ebp - 0x1c]
movd xmm3, ebx
cvtdq2pd xmm3, xmm3
mov dword [ebp - 0x10], ebx
movsd qword [ebp - 0x44], xmm3
nop dword [eax + eax]
mov ecx, dword [ebp + 0x14]
mov eax, edi
cdq
movd xmm2, dword [ebp - 0x10]
cvtdq2pd xmm2, xmm2
idiv dword [ecx + 4]
mov ecx, 0xc0
movaps xmm0, xmm2
xor eax, dword [ebp - 0x18]
test al, 1
mulsd xmm0, xmm4
mov eax, 0xff
cmovne eax, ecx
imul eax, edi
movd xmm1, eax
cvtdq2pd xmm1, xmm1
addsd xmm0, xmm1
divsd xmm0, xmm3
cvttsd2si eax, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x3c]
movzx eax, al
mulsd xmm0, qword [ebp - 0x34]
push eax
addsd xmm2, xmm1
addsd xmm0, xmm1
divsd xmm2, xmm3
divsd xmm0, xmm3
cvttsd2si eax, xmm0
movzx eax, al
push eax
cvttsd2si eax, xmm2
movzx eax, al
push eax
lea eax, [ebp - 0x60]
push eax
call fcn.0051e910
add esp, 0x10
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0x2c]
push ecx
mov ecx, dword [ebp + 0xc]
push eax
mov edx, dword [edx]
mov byte [ebp - 4], 2
mov eax, dword [ecx + 4]
add eax, edi
push eax
mov eax, dword [ecx]
mov ecx, dword [ebp + 8]
add eax, esi
push eax
call dword [edx + 0x34]
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 0
call fcn.0051e610
dec dword [ebp - 0x10]
inc edi
movsd xmm3, qword [ebp - 0x44]
movsd xmm4, qword [ebp - 0x24]
cmp edi, ebx
jl 0x4d21c0
mov edi, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x14]
inc esi
cmp esi, edi
jl 0x4d2191
lea ecx, [ebp - 0x2c]
call fcn.0051f2f0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret