Function at 0x478170
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
mov eax, dword [ebp + 0xc]
push ebx
mov dword [ebp - 0x20], ecx
movzx ecx, ax
push esi
mov eax, ecx
mov dword [ebp - 0x2c], ecx
push edi
mov esi, edx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x58], eax
call fcn.00477f00
mov dword [ebp - 0x14], edx
mov ecx, 0x2fa
push 0
mov edx, 2
mov dword [ebp - 0x18], eax
call fcn.0048ffe0
add esp, 4
mov edi, eax
mov edx, 2
mov dword [ebp - 4], edi
mov ecx, 0x2fa
push 0
call fcn.0048ffe0
add esp, 4
mov dword [ebp - 8], eax
mov edx, 2
mov ecx, 0x2fa
push 0
call fcn.0048ffe0
add esp, 4
mov ebx, eax
mov edx, 2
mov dword [ebp - 0xc], ebx
mov ecx, 0x2fa
push 0
call fcn.0048ffe0
mov ecx, 0x17c
mov dword [ebp - 0x10], eax
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 4]
xor edx, edx
add eax, 0x5f2
mov ecx, 0x17c
mov dword [ebp - 0x4c], eax
add esp, 4
movsw word es:[edi], word [esi]
mov esi, 1
lea edi, [ebx + 2]
mov word [eax], dx
xor eax, eax
mov word [ebx], si
rep stosd dword es:[edi], eax
mov edx, dword [ebp - 8]
mov ecx, 0x17b
stosw word es:[edi], ax
mov eax, dword [ebp + 0xc]
lea edi, [edx + 4]
dec eax
mov word [edx + 2], ax
mov word [edx], ax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, 0x17d
stosw word es:[edi], ax
lea eax, [edx + 0x5f2]
mov word [eax], si
mov esi, dword [ebp - 0x10]
mov edi, esi
mov dword [ebp - 0x48], eax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 4]
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x1c], eax
lea eax, [ebx + 0x5f2]
mov dword [ebp - 0x54], eax
lea eax, [esi + 0x5f2]
mov dword [ebp - 0x50], eax
mov eax, ebx
mov dword [ebp - 0x30], 0x5f3
sub eax, esi
mov dword [ebp - 0x28], eax
mov eax, edx
sub eax, ecx
mov dword [ebp - 0x38], eax
mov eax, esi
sub eax, ebx
mov dword [ebp - 0x5c], eax
lea eax, [ecx + 2]
mov dword [ebp - 0x34], eax
jmp 0x4782a6
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov cx, word [ecx]
call fcn.00478030
mov cx, word [edx]
mov dword [ebp - 0x40], eax
call fcn.00478030
mov esi, 1
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x24], 0
mov edi, esi
mov ebx, 0x2fa
add edx, 0x5f4
mov eax, dword [ebp - 0x1c]
lea edx, [edx - 2]
mov cx, word [edx + eax]
call fcn.00478030
mov cx, word [edx]
and esi, eax
call fcn.00478030
mov ecx, dword [ebp - 0x24]
and edi, eax
mov eax, edi
not eax
and eax, esi
or ecx, eax
mov dword [ebp - 0x24], ecx
sub ebx, 1
jne 0x4782d5
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 4]
not eax
and eax, ecx
or eax, dword [ebp - 0x44]
neg eax
movzx edi, ax
movsx eax, di
movd xmm0, eax
xor eax, eax
cmp edx, dword [ebp - 0x48]
mov edx, dword [ebp - 8]
punpcklwd xmm0, xmm0
pshufd xmm4, xmm0, 0
ja 0x478334
cmp dword [ebp - 0x4c], edx
jae 0x478381
mov ebx, dword [ebp - 0x1c]
mov eax, edx
mov ecx, 0x5f
mov dword [ebp - 0x44], 0x2f8
nop word [eax + eax]
lea eax, [eax + 0x10]
movups xmm1, xmmword [eax + ebx - 0x10]
movups xmm3, xmmword [eax - 0x10]
movaps xmm2, xmm1
xorps xmm2, xmm3
andps xmm2, xmm4
movaps xmm0, xmm2
xorps xmm2, xmm3
xorps xmm0, xmm1
movups xmmword [eax + ebx - 0x10], xmm0
movups xmmword [eax - 0x10], xmm2
sub ecx, 1
jne 0x478350
mov eax, dword [ebp - 0x44]
jmp 0x478384
mov ebx, dword [ebp - 0x1c]
mov esi, 0x2fa
lea edx, [edx + eax*2]
sub esi, eax
nop
movzx ecx, word [edx + ebx]
lea edx, [edx + 2]
mov ax, word [edx - 2]
xor ax, cx
and ax, di
movzx eax, ax
xor ecx, eax
mov word [edx + ebx - 2], cx
xor word [edx - 2], ax
sub esi, 1
jne 0x478390
mov eax, dword [ebp - 0x50]
xor edx, edx
mov esi, dword [ebp - 0x10]
cmp dword [ebp - 0xc], eax
ja 0x4783c6
cmp dword [ebp - 0x54], esi
jae 0x47840e
mov ebx, dword [ebp - 0x28]
mov eax, esi
mov ecx, 0x5f
mov edx, 0x2f8
nop word [eax + eax]
lea eax, [eax + 0x10]
movups xmm1, xmmword [ebx + eax - 0x10]
movups xmm3, xmmword [eax - 0x10]
movaps xmm2, xmm1
xorps xmm2, xmm3
andps xmm2, xmm4
movaps xmm0, xmm2
xorps xmm2, xmm3
xorps xmm0, xmm1
movups xmmword [ebx + eax - 0x10], xmm0
movups xmmword [eax - 0x10], xmm2
sub ecx, 1
jne 0x4783e0
jmp 0x478411
mov ebx, dword [ebp - 0x28]
lea eax, [esi + edx*2]
mov esi, 0x2fa
sub esi, edx
nop dword [eax + eax]
movzx edx, word [eax + ebx]
lea eax, [eax + 2]
mov cx, word [eax - 2]
xor cx, dx
and cx, di
movzx ecx, cx
xor edx, ecx
mov word [eax + ebx - 2], dx
xor word [eax - 2], cx
sub esi, 1
jne 0x478420
mov eax, dword [ebp - 8]
mov edi, 0x2fa
mov esi, dword [ebp - 4]
movzx edx, word [eax]
mov ax, word [ebp - 0x58]
sub ax, word [esi]
movzx ebx, ax
mov dword [ebp - 0x24], edx
nop
mov eax, dword [ebp - 0x38]
push dword [ebp - 0x14]
push dword [ebp - 0x18]
movzx ecx, word [esi + eax]
movzx eax, word [esi]
imul eax, edx
mov edx, dword [ebp - 0x2c]
imul ecx, ebx
add ecx, eax
call fcn.00477f20
mov edx, dword [ebp - 0x24]
lea esi, [esi + 2]
add esp, 8
mov word [esi - 2], ax
sub edi, 1
jne 0x478460
mov esi, dword [ebp - 0xc]
mov edi, 0x2fa
nop word [eax + eax]
mov eax, dword [ebp - 0x5c]
push dword [ebp - 0x14]
mov edx, dword [ebp - 0x2c]
push dword [ebp - 0x18]
movzx ecx, word [eax + esi]
movzx eax, word [esi]
imul eax, dword [ebp - 0x24]
imul ecx, ebx
add ecx, eax
call fcn.00477f20
add esp, 8
mov word [esi], ax
lea esi, [esi + 2]
sub edi, 1
jne 0x4784a0
mov edx, dword [ebp - 4]
mov ecx, 0x2f9
mov esi, dword [ebp - 0x34]
mov edi, edx
mov ebx, dword [ebp - 0x18]
rep movsw word es:[edi], word [esi]
xor ecx, ecx
mov word [edx + 0x5f2], cx
mov ecx, 0x2f8
mov edx, dword [ebp - 0xc]
mov edi, edx
movzx eax, word [edx]
lea esi, [edx + 2]
rep movsw word es:[edi], word [esi]
mov esi, dword [ebp - 0x14]
mov word [edx + 0x5f0], ax
movzx ecx, word [edx]
mov edx, dword [ebp - 0x3c]
sub ecx, eax
add ecx, dword [ebp + 0xc]
push esi
push ebx
movzx edx, dx
call fcn.00477f20
mov ecx, dword [ebp - 0xc]
add esp, 8
sub dword [ebp - 0x30], 1
mov word [ecx], ax
jne 0x4782a0
mov eax, dword [ebp - 8]
movzx ecx, word [eax]
mov dword [ebp + 0xc], ecx
call fcn.00478030
mov edi, eax
mov eax, dword [ebp - 4]
xor edi, 1
mov cx, word [eax]
call fcn.00478030
mov esi, dword [ebp - 0x34]
and edi, eax
mov ebx, 0x2f9
nop dword [eax + eax]
mov eax, dword [ebp - 0x38]
mov cx, word [eax + esi]
call fcn.00478030
mov cx, word [esi]
mov edx, eax
call fcn.00478030
and edx, eax
lea esi, [esi + 2]
and edi, edx
sub ebx, 1
jne 0x478560
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x54], edi
mov edi, dword [ebp - 0x3c]
mov edx, edi
push esi
push ebx
call fcn.00477fb0
mov ecx, dword [ebp - 0x20]
add esp, 8
movzx eax, ax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x10]
movzx edx, di
sub eax, ecx
mov dword [ebp - 0x58], edx
mov edi, 0x2f9
mov dword [ebp - 0x5c], eax
nop dword [eax]
movzx ecx, word [eax + ecx]
imul ecx, dword [ebp + 0xc]
push esi
push ebx
call fcn.00477f20
mov ecx, dword [ebp - 0x20]
add esp, 8
mov edx, dword [ebp - 0x58]
mov word [ecx], ax
add ecx, 2
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x20], ecx
sub edi, 1
jne 0x4785c0
mov ecx, dword [ebp - 4]
mov edx, 0x5f4
call fcn.00492670
mov ecx, dword [ebp - 4]
call fcn.00490070
mov ecx, dword [ebp - 8]
mov edx, 0x5f4
call fcn.00492670
mov ecx, dword [ebp - 8]
call fcn.00490070
mov ecx, dword [ebp - 0xc]
mov edx, 0x5f4
call fcn.00492670
mov ecx, dword [ebp - 0xc]
call fcn.00490070
mov ecx, dword [ebp - 0x10]
mov edx, 0x5f4
call fcn.00492670
mov ecx, dword [ebp - 0x10]
call fcn.00490070
mov eax, dword [ebp - 0x54]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret