Function at 0x4150c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x4044
call fcn.004bdf20
push ebx
push esi
push edi
xor esi, esi
push 0x3ff8
lea eax, [ebp - 0x4038]
push esi
push eax
mov dword [ebp - 0x4040], esi
mov dword [ebp - 0x403c], esi
call fcn.004bd240
mov ecx, dword [ebp + 0x10]
push 0x200
push esi
push ecx
call fcn.004bd240
add esp, 0x18
mov dword [ebp - 0x3c], esi
push ebx
mov edi, dword [ebp + 0xc]
lea ebx, [ebp - 0x4040]
mov esi, dword [ebp + 8]
mov ecx, dword [ebp - 0x3c]
jmp 0x415120
movq mm0, qword [edi + ecx*8]
mov eax, dword [esi + ecx*8]
inc ecx
movzx edx, al
movq mm1, mm0
pxor mm1, qword [ebx + edx*8]
movq qword [ebx + edx*8], mm1
movzx edx, ah
movq mm1, mm0
pxor mm1, qword [ebx + edx*8 + 0x800]
movq qword [ebx + edx*8 + 0x800], mm1
shr eax, 0x10
movzx edx, al
movq mm1, mm0
pxor mm1, qword [ebx + edx*8 + 0x1000]
movq qword [ebx + edx*8 + 0x1000], mm1
movzx edx, ah
movq mm1, mm0
pxor mm1, qword [ebx + edx*8 + 0x1800]
movq qword [ebx + edx*8 + 0x1800], mm1
mov eax, dword [esi + ecx*8 - 4]
movzx edx, al
movq mm1, mm0
pxor mm1, qword [ebx + edx*8 + 0x2000]
movq qword [ebx + edx*8 + 0x2000], mm1
movzx edx, ah
shr eax, 0x10
cmp ecx, dword [ebp + 0x14]
movq mm1, mm0
pxor mm1, qword [ebx + edx*8 + 0x2800]
movq qword [ebx + edx*8 + 0x2800], mm1
movzx edx, al
movq mm1, mm0
pxor mm1, qword [ebx + edx*8 + 0x3000]
movq qword [ebx + edx*8 + 0x3000], mm1
movzx edx, ah
pxor mm0, qword [ebx + edx*8 + 0x3800]
movq qword [ebx + edx*8 + 0x3800], mm0
jne 0x415120
emms
pop ebx
mov esi, dword [ebp + 0x10]
xor edx, edx
mov dword [ebp - 0x3c], edx
sub esi, 0xffffff80
jmp 0x4151f2
xor edx, edx
mov ecx, 2
mov dword [ebp - 8], edx
mov dword [ebp - 4], edx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x24], edx
xor edi, edi
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x40], ecx
lea eax, [ebp - 0x3840]
lea ebx, [ecx - 2]
mov ecx, dword [ebp - 0x3c]
shr ebx, cl
test bl, 1
je 0x4152c0
mov ecx, dword [eax]
xor dword [ebp - 0x28], ecx
mov ecx, dword [eax + 4]
xor dword [ebp - 0x24], ecx
mov ecx, dword [eax + 0x800]
xor dword [ebp - 0x30], ecx
mov ecx, dword [eax + 0x804]
xor dword [ebp - 0x2c], ecx
mov ecx, dword [eax + 0x1000]
xor dword [ebp - 8], ecx
mov ecx, dword [eax + 0x1004]
xor dword [ebp - 4], ecx
mov ecx, dword [eax + 0x1800]
xor dword [ebp - 0x10], ecx
mov ecx, dword [eax + 0x1804]
xor dword [ebp - 0xc], ecx
mov ecx, dword [eax + 0x2000]
xor dword [ebp - 0x38], ecx
mov ecx, dword [eax + 0x2004]
xor dword [ebp - 0x34], ecx
mov ecx, dword [eax + 0x2800]
xor dword [ebp - 0x20], ecx
mov ecx, dword [eax + 0x2804]
xor dword [ebp - 0x1c], ecx
mov ecx, dword [eax + 0x3000]
xor dword [ebp - 0x18], ecx
mov ecx, dword [eax + 0x3004]
xor edi, dword [eax - 0x800]
xor edx, dword [eax - 0x7fc]
xor dword [ebp - 0x14], ecx
mov ebx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x3c]
lea ebx, [ebx - 1]
shr ebx, cl
test bl, 1
je 0x415358
mov ecx, dword [eax + 8]
xor dword [ebp - 0x28], ecx
mov ecx, dword [eax + 0xc]
xor dword [ebp - 0x24], ecx
mov ecx, dword [eax + 0x808]
xor dword [ebp - 0x30], ecx
mov ecx, dword [eax + 0x80c]
xor dword [ebp - 0x2c], ecx
mov ecx, dword [eax + 0x1008]
xor dword [ebp - 8], ecx
mov ecx, dword [eax + 0x100c]
xor dword [ebp - 4], ecx
mov ecx, dword [eax + 0x1808]
xor dword [ebp - 0x10], ecx
mov ecx, dword [eax + 0x180c]
xor dword [ebp - 0xc], ecx
mov ecx, dword [eax + 0x2008]
xor dword [ebp - 0x38], ecx
mov ecx, dword [eax + 0x200c]
xor dword [ebp - 0x34], ecx
mov ecx, dword [eax + 0x2808]
xor dword [ebp - 0x20], ecx
mov ecx, dword [eax + 0x280c]
xor dword [ebp - 0x1c], ecx
mov ecx, dword [eax + 0x3008]
xor dword [ebp - 0x18], ecx
mov ecx, dword [eax + 0x300c]
xor edi, dword [eax - 0x7f8]
xor edx, dword [eax - 0x7f4]
xor dword [ebp - 0x14], ecx
mov ebx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x3c]
shr ebx, cl
test bl, 1
je 0x4153ed
mov ecx, dword [eax + 0x10]
xor dword [ebp - 0x28], ecx
mov ecx, dword [eax + 0x14]
xor dword [ebp - 0x24], ecx
mov ecx, dword [eax + 0x810]
xor dword [ebp - 0x30], ecx
mov ecx, dword [eax + 0x814]
xor dword [ebp - 0x2c], ecx
mov ecx, dword [eax + 0x1010]
xor dword [ebp - 8], ecx
mov ecx, dword [eax + 0x1014]
xor dword [ebp - 4], ecx
mov ecx, dword [eax + 0x1810]
xor dword [ebp - 0x10], ecx
mov ecx, dword [eax + 0x1814]
xor dword [ebp - 0xc], ecx
mov ecx, dword [eax + 0x2010]
xor dword [ebp - 0x38], ecx
mov ecx, dword [eax + 0x2014]
xor dword [ebp - 0x34], ecx
mov ecx, dword [eax + 0x2810]
xor dword [ebp - 0x20], ecx
mov ecx, dword [eax + 0x2814]
xor dword [ebp - 0x1c], ecx
mov ecx, dword [eax + 0x3010]
xor dword [ebp - 0x18], ecx
mov ecx, dword [eax + 0x3014]
xor edi, dword [eax - 0x7f0]
xor edx, dword [eax - 0x7ec]
xor dword [ebp - 0x14], ecx
mov ebx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x3c]
lea ebx, [ebx + 1]
shr ebx, cl
test bl, 1
je 0x415485
mov ecx, dword [eax + 0x18]
xor dword [ebp - 0x28], ecx
mov ecx, dword [eax + 0x1c]
xor dword [ebp - 0x24], ecx
mov ecx, dword [eax + 0x818]
xor dword [ebp - 0x30], ecx
mov ecx, dword [eax + 0x81c]
xor dword [ebp - 0x2c], ecx
mov ecx, dword [eax + 0x1018]
xor dword [ebp - 8], ecx
mov ecx, dword [eax + 0x101c]
xor dword [ebp - 4], ecx
mov ecx, dword [eax + 0x1818]
xor dword [ebp - 0x10], ecx
mov ecx, dword [eax + 0x181c]
xor dword [ebp - 0xc], ecx
mov ecx, dword [eax + 0x2018]
xor dword [ebp - 0x38], ecx
mov ecx, dword [eax + 0x201c]
xor dword [ebp - 0x34], ecx
mov ecx, dword [eax + 0x2818]
xor dword [ebp - 0x20], ecx
mov ecx, dword [eax + 0x281c]
xor dword [ebp - 0x1c], ecx
mov ecx, dword [eax + 0x3018]
xor dword [ebp - 0x18], ecx
mov ecx, dword [eax + 0x301c]
xor edi, dword [eax - 0x7e8]
xor edx, dword [eax - 0x7e4]
xor dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x40]
add ecx, 4
lea ebx, [ecx - 2]
add eax, 0x20
mov dword [ebp - 0x40], ecx
cmp ebx, 0x100
jb 0x41522c
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x30]
mov dword [esi - 0x3c], eax
mov eax, dword [ebp - 8]
mov dword [esi - 0x7c], edx
mov edx, dword [ebp - 0x28]
mov dword [esi + 0x40], eax
mov eax, dword [ebp - 0xc]
mov dword [esi - 0x40], edx
mov edx, dword [ebp - 0x2c]
mov dword [esi + 0x84], eax
mov eax, dword [ebp - 0x20]
mov dword [esi], ecx
mov ecx, dword [ebp - 4]
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x10]
mov dword [esi + 0x100], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 0x44], ecx
mov ecx, dword [ebp - 0x38]
mov dword [esi + 0x80], edx
mov edx, dword [ebp - 0x34]
mov dword [esi + 0x144], eax
mov eax, dword [ebp - 0x3c]
mov dword [esi + 0xc0], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [esi + 0xc4], edx
mov edx, dword [ebp - 0x18]
inc eax
mov dword [esi - 0x80], edi
mov dword [esi + 0x104], ecx
mov dword [esi + 0x140], edx
add esi, 8
mov dword [ebp - 0x3c], eax
cmp eax, 8
jb 0x4151f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret