Function at 0x47bf60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
cmp ebx, 0x1000000
push esi
push edi
jb 0x47c184
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov edi, dword [ebp + 8]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [eax + 8]
mov dword [ebp - 0x28], edx
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x24], ecx
lea eax, [ebp - 0x2c]
mov ecx, edi
mov dword [ebp - 0x20], edx
call fcn.0047a9f0
cmp eax, 3
je 0x47c184
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x2c]
sub ecx, edx
cmp ebx, 0xff000000
mov dword [ebp - 0x10], ecx
jae 0x47c0c6
mov ecx, dword [ebp - 0x28]
cmp ecx, dword [ebp - 0x20]
mov dword [ebp - 8], ecx
jge 0x47c179
jmp 0x47bfd3
mov edi, dword [ebp + 8]
mov eax, dword [edi + 4]
mov esi, dword [edi + 0x10]
imul eax, ecx
add eax, edx
cmp byte [0x6fd3a0], 0
lea esi, [esi + eax*4]
mov dword [ebp - 0x1c], esi
je 0x47c051
mov eax, dword [ebp - 0x10]
cmp eax, 0x10
jbe 0x47c051
test eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], ebx
je 0x47c0b2
lea eax, [ebp - 8]
mov dword [ebp - 0x14], eax
pxor mm7, mm7
movq mm5, qword [0x6a1ec8]
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
movd mm1, dword [esi]
punpcklbw mm1, mm7
movq mm4, mm1
punpckhwd mm4, mm4
punpckhdq mm4, mm4
movd mm0, dword [edi]
punpcklbw mm0, mm7
movq mm2, mm4
pxor mm2, mm5
pmullw mm0, mm2
psrlw mm0, 8
paddw mm0, mm1
packuswb mm0, mm7
movd dword [edi], mm0
add edi, 4
dec dword [ebp - 0xc]
jg 0x47c02b
jmp 0x47c0b2
cmp edx, dword [ebp - 0x24]
jge 0x47c0b2
mov eax, dword [ebp - 0x10]
mov ecx, ebx
shr ecx, 0x18
mov edx, 0x100
sub edx, ecx
mov dword [ebp - 0xc], eax
jmp 0x47c070
mov eax, dword [esi]
mov ecx, eax
and eax, 0xff00ff
shr ecx, 8
imul eax, edx
mov edi, ecx
and edi, 0xffff00ff
imul edi, edx
and ecx, 0xff00ff
imul ecx, edx
shr eax, 8
xor eax, edi
and eax, 0xff00ff
xor eax, ecx
add eax, ebx
mov dword [esi], eax
add esi, 4
sub dword [ebp - 0xc], 1
jne 0x47c070
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x2c]
add ecx, 1
cmp ecx, dword [ebp - 0x20]
mov dword [ebp - 8], ecx
jl 0x47bfd0
jmp 0x47c179
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0x20]
mov esi, eax
jge 0x47c179
jmp 0x47c0dc
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebp + 8]
mov eax, dword [edi + 4]
mov edi, dword [edi + 0x10]
imul eax, esi
add eax, edx
cmp byte [0x6fd3a1], 0
lea eax, [edi + eax*4]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 8], eax
je 0x47c162
test al, 0xf
je 0x47c116
test ecx, ecx
je 0x47c16d
mov dword [eax], ebx
mov eax, dword [ebp - 8]
add eax, 4
sub ecx, 1
test al, 0xf
mov dword [ebp - 8], eax
jne 0x47c100
test ecx, ecx
je 0x47c16d
mov eax, ecx
shr eax, 2
mov dword [ebp - 0xc], eax
movq mm0, qword [ebp - 0x18]
mov edi, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
punpckldq mm0, mm0
test eax, eax
je 0x47c142
movntq qword [edi], mm0
movntq qword [edi + 8], mm0
add edi, 0x10
dec dword [ebp - 0xc]
jg 0x47c133
mov dword [ebp - 8], edi
emms
and ecx, 3
je 0x47c16d
lea esp, [esp]
mov eax, dword [ebp - 8]
sub ecx, 1
mov dword [eax], ebx
add dword [ebp - 8], 4
test ecx, ecx
jne 0x47c150
jmp 0x47c16d
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov edi, dword [ebp - 8]
rep stosd dword es:[edi], eax
add esi, 1
cmp esi, dword [ebp - 0x20]
jl 0x47c0d6
cmp byte [0x6fd3a0], 0
je 0x47c184
emms
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret 4