Function at 0x4012b0
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x268
push esi
push edi
mov edi, edx
mov eax, ecx
mov ecx, dword [ebx + 0x14]
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x20], eax
lea edx, [edi + 0x10]
mov dword [ebp - 0x10], edx
cmp eax, 0x100
jb 0x401c53
movd xmm0, dword [edi]
pshufd xmm1, xmm0, 0
movd xmm0, dword [edi + 4]
pshufd xmm2, xmm0, 0
movd xmm0, dword [edi + 8]
pshufd xmm3, xmm0, 0
movd xmm0, dword [edi + 0xc]
pshufd xmm4, xmm0, 0
movd xmm0, dword [edx]
pshufd xmm5, xmm0, 0
movd xmm0, dword [edi + 0x14]
mov esi, dword [ebx + 8]
pshufd xmm6, xmm0, 0
movd xmm0, dword [edi + 0x18]
mov edx, dword [ebx + 0xc]
pshufd xmm7, xmm0, 0
lea ecx, [esi + 0xc0]
movd xmm0, dword [edi + 0x1c]
pshufd xmm0, xmm0, 0
movaps xmmword [ebp - 0x140], xmm0
movd xmm0, dword [edi + 0x20]
pshufd xmm0, xmm0, 0
movaps xmmword [ebp - 0x150], xmm0
movd xmm0, dword [edi + 0x24]
pshufd xmm0, xmm0, 0
movaps xmmword [ebp - 0x160], xmm0
movd xmm0, dword [edi + 0x28]
pshufd xmm0, xmm0, 0
movaps xmmword [ebp - 0x170], xmm0
movd xmm0, dword [edi + 0x2c]
mov dword [ebp - 4], ecx
lea ecx, [edx + 0xc0]
pshufd xmm0, xmm0, 0
mov dword [ebp - 0x18], ecx
lea ecx, [esi + 0x80]
movaps xmmword [ebp - 0x180], xmm0
movd xmm0, dword [edi + 0x38]
mov dword [ebp - 0xc], ecx
lea ecx, [edx + 0x80]
pshufd xmm0, xmm0, 0
mov dword [ebp - 0x14], ecx
lea ecx, [esi + 0x40]
movaps xmmword [ebp - 0x190], xmm0
movd xmm0, dword [edi + 0x3c]
mov dword [ebp - 0x24], ecx
lea ecx, [edx + 0x40]
pshufd xmm0, xmm0, 0
shr eax, 8
movaps xmmword [ebp - 0x1b0], xmm1
movaps xmmword [ebp - 0x1c0], xmm2
movaps xmmword [ebp - 0x1d0], xmm3
movaps xmmword [ebp - 0x1e0], xmm4
movaps xmmword [ebp - 0x1f0], xmm5
movaps xmmword [ebp - 0x200], xmm6
movaps xmmword [ebp - 0x210], xmm7
movaps xmmword [ebp - 0x1a0], xmm0
mov dword [ebp - 8], ecx
mov dword [ebp - 0x1c], eax
movaps xmm0, xmmword [ebp - 0x140]
xor eax, eax
or eax, dword [edi + 0x30]
mov ecx, dword [edi + 0x34]
movaps xmmword [ebp - 0x90], xmm0
movaps xmm0, xmmword [ebp - 0x150]
movaps xmmword [ebp - 0xa0], xmm0
movaps xmm0, xmmword [ebp - 0x160]
movaps xmmword [ebp - 0x70], xmm0
movaps xmm0, xmmword [ebp - 0x170]
movaps xmmword [ebp - 0x120], xmm0
movaps xmm0, xmmword [ebp - 0x180]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x48], eax
add eax, 4
movaps xmmword [ebp - 0xe0], xmm1
movq xmm1, qword [ebp - 0x48]
adc ecx, 0
movaps xmmword [ebp - 0x130], xmm0
movaps xmm0, xmmword [ebp - 0x1a0]
movaps xmmword [ebp - 0xf0], xmm2
movaps xmm2, xmmword [0x418000]
punpcklqdq xmm1, xmm1
movaps xmmword [ebp - 0x40], xmm0
paddq xmm2, xmm1
movaps xmm0, xmmword [0x418010]
movaps xmmword [ebp - 0xb0], xmm4
paddq xmm0, xmm1
movaps xmm4, xmm2
movaps xmmword [ebp - 0x110], xmm6
punpckldq xmm4, xmm0
punpckhdq xmm2, xmm0
movaps xmm6, xmm4
movaps xmmword [ebp - 0x100], xmm3
movaps xmm3, xmm5
movaps xmm5, xmmword [ebp - 0x190]
punpckldq xmm6, xmm2
movaps xmmword [ebp - 0x80], xmm7
movaps xmm7, xmm6
punpckhdq xmm4, xmm2
mov dword [edi + 0x34], ecx
mov ecx, dword [ebx + 0x14]
movaps xmmword [ebp - 0x60], xmm3
movaps xmmword [ebp - 0xd0], xmm5
movaps xmmword [ebp - 0xc0], xmm4
movaps xmmword [ebp - 0x250], xmm7
movaps xmmword [ebp - 0x260], xmm4
mov dword [edi + 0x30], eax
test ecx, ecx
je 0x40192f
movaps xmm7, xmmword [ebp - 0x80]
mov eax, ecx
nop word [eax + eax]
movaps xmm2, xmm3
paddd xmm2, xmmword [ebp - 0xe0]
xorps xmm6, xmm2
pshufb xmm6, xmmword [0x418030]
movaps xmm3, xmm6
paddd xmm3, xmmword [ebp - 0xa0]
movaps xmm0, xmm3
xorps xmm0, xmmword [ebp - 0x60]
movaps xmm1, xmm0
pslld xmm0, 0xc
psrld xmm1, 0x14
orps xmm1, xmm0
movaps xmm0, xmm1
paddd xmm0, xmm2
movaps xmm2, xmmword [ebp - 0x110]
paddd xmm2, xmmword [ebp - 0xf0]
xorps xmm6, xmm0
pshufb xmm6, xmmword [0x418040]
movaps xmmword [ebp - 0xa0], xmm0
xorps xmm4, xmm2
pshufb xmm4, xmmword [0x418030]
movaps xmm0, xmm6
movaps xmmword [ebp - 0x80], xmm6
paddd xmm0, xmm3
movaps xmm3, xmm4
paddd xmm3, xmmword [ebp - 0x70]
movaps xmmword [ebp - 0x220], xmm0
xorps xmm0, xmm1
movaps xmm1, xmm0
pslld xmm0, 7
psrld xmm1, 0x19
orps xmm1, xmm0
movaps xmm0, xmm3
xorps xmm0, xmmword [ebp - 0x110]
movaps xmmword [ebp - 0x230], xmm1
movaps xmm1, xmm0
pslld xmm0, 0xc
psrld xmm1, 0x14
orps xmm1, xmm0
movaps xmm0, xmm1
paddd xmm0, xmm2
movaps xmm2, xmm7
paddd xmm2, xmmword [ebp - 0x100]
xorps xmm4, xmm0
pshufb xmm4, xmmword [0x418040]
movaps xmmword [ebp - 0x70], xmm0
xorps xmm5, xmm2
pshufb xmm5, xmmword [0x418030]
movaps xmm0, xmm4
movaps xmmword [ebp - 0xc0], xmm4
paddd xmm0, xmm3
movaps xmm3, xmm5
paddd xmm3, xmmword [ebp - 0x120]
movaps xmmword [ebp - 0x240], xmm0
xorps xmm0, xmm1
movaps xmm6, xmm0
pslld xmm0, 7
psrld xmm6, 0x19
orps xmm6, xmm0
movaps xmm0, xmm3
xorps xmm0, xmm7
movaps xmm1, xmm0
pslld xmm0, 0xc
psrld xmm1, 0x14
orps xmm1, xmm0
movaps xmm0, xmm1
paddd xmm0, xmm2
movaps xmm2, xmmword [ebp - 0x90]
paddd xmm2, xmmword [ebp - 0xb0]
xorps xmm5, xmm0
pshufb xmm5, xmmword [0x418040]
movaps xmmword [ebp - 0x60], xmm0
movaps xmm4, xmm5
movaps xmmword [ebp - 0xd0], xmm5
paddd xmm4, xmm3
movaps xmm0, xmm4
xorps xmm0, xmm1
movaps xmm7, xmm0
pslld xmm0, 7
psrld xmm7, 0x19
orps xmm7, xmm0
movaps xmm5, xmmword [ebp - 0x40]
xorps xmm5, xmm2
pshufb xmm5, xmmword [0x418030]
movaps xmm3, xmm5
paddd xmm3, xmmword [ebp - 0x130]
movaps xmm0, xmm3
xorps xmm0, xmmword [ebp - 0x90]
movaps xmm1, xmm0
pslld xmm0, 0xc
psrld xmm1, 0x14
orps xmm1, xmm0
movaps xmm0, xmm1
paddd xmm0, xmm2
movaps xmm2, xmm6
xorps xmm5, xmm0
paddd xmm2, xmmword [ebp - 0xa0]
pshufb xmm5, xmmword [0x418040]
movaps xmmword [ebp - 0xb0], xmm0
movaps xmmword [ebp - 0x40], xmm5
paddd xmm5, xmm3
movaps xmm0, xmm5
xorps xmm0, xmm1
movaps xmm1, xmm0
pslld xmm0, 7
psrld xmm1, 0x19
orps xmm1, xmm0
movaps xmm0, xmmword [ebp - 0x40]
xorps xmm0, xmm2
movaps xmmword [ebp - 0x90], xmm1
pshufb xmm0, xmmword [0x418030]
movaps xmm3, xmm0
movaps xmmword [ebp - 0x40], xmm0
paddd xmm3, xmm4
movaps xmm0, xmm3
xorps xmm0, xmm6
movaps xmm6, xmmword [ebp - 0x80]
movaps xmm1, xmm0
pslld xmm0, 0xc
psrld xmm1, 0x14
orps xmm1, xmm0
movaps xmm0, xmmword [ebp - 0x40]
movaps xmm4, xmm1
paddd xmm4, xmm2
movaps xmm2, xmm7
paddd xmm2, xmmword [ebp - 0x70]
xorps xmm0, xmm4
pshufb xmm0, xmmword [0x418040]
xorps xmm6, xmm2
movaps xmmword [ebp - 0xe0], xmm4
pshufb xmm6, xmmword [0x418030]
movaps xmmword [ebp - 0x40], xmm0
paddd xmm0, xmm3
movaps xmmword [ebp - 0x120], xmm0
movaps xmm3, xmm6
xorps xmm0, xmm1
paddd xmm3, xmm5
movaps xmm1, xmm0
pslld xmm0, 7
psrld xmm1, 0x19
orps xmm1, xmm0
movaps xmm0, xmm3
xorps xmm0, xmm7
movaps xmmword [ebp - 0x110], xmm1
movaps xmm1, xmm0
pslld xmm0, 0xc
psrld xmm1, 0x14
orps xmm1, xmm0
movaps xmm0, xmm1
paddd xmm0, xmm2
movaps xmm2, xmmword [ebp - 0x90]
xorps xmm6, xmm0
movaps xmmword [ebp - 0xf0], xmm0
pshufb xmm6, xmmword [0x418040]
movaps xmm0, xmm6
paddd xmm0, xmm3
movaps xmmword [ebp - 0x130], xmm0
xorps xmm0, xmm1
movaps xmm7, xmm0
pslld xmm0, 7
psrld xmm7, 0x19
orps xmm7, xmm0
paddd xmm2, xmmword [ebp - 0x60]
movaps xmm4, xmmword [ebp - 0xc0]
movaps xmm5, xmmword [ebp - 0xd0]
xorps xmm4, xmm2
pshufb xmm4, xmmword [0x418030]
movaps xmm3, xmm4
paddd xmm3, xmmword [ebp - 0x220]
movaps xmm0, xmm3
xorps xmm0, xmmword [ebp - 0x90]
movaps xmm1, xmm0
pslld xmm0, 0xc
psrld xmm1, 0x14
orps xmm1, xmm0
movaps xmm0, xmm1
paddd xmm0, xmm2
movaps xmm2, xmmword [ebp - 0x230]
paddd xmm2, xmmword [ebp - 0xb0]
xorps xmm4, xmm0
movaps xmmword [ebp - 0x100], xmm0
xorps xmm5, xmm2
pshufb xmm4, xmmword [0x418040]
pshufb xmm5, xmmword [0x418030]
movaps xmmword [ebp - 0xc0], xmm4
movaps xmm0, xmm4
paddd xmm0, xmm3
movaps xmm3, xmm5
paddd xmm3, xmmword [ebp - 0x240]
movaps xmmword [ebp - 0xa0], xmm0
xorps xmm0, xmm1
movaps xmm1, xmm0
pslld xmm0, 7
psrld xmm1, 0x19
orps xmm1, xmm0
movaps xmm0, xmm3
xorps xmm0, xmmword [ebp - 0x230]
movaps xmmword [ebp - 0x90], xmm1
movaps xmm1, xmm0
pslld xmm0, 0xc
psrld xmm1, 0x14
orps xmm1, xmm0
movaps xmm0, xmm1
paddd xmm0, xmm2
movaps xmmword [ebp - 0xb0], xmm0
xorps xmm5, xmm0
pshufb xmm5, xmmword [0x418040]
movaps xmmword [ebp - 0xd0], xmm5
movaps xmm0, xmm5
paddd xmm0, xmm3
movaps xmmword [ebp - 0x70], xmm0
xorps xmm0, xmm1
movaps xmm3, xmm0
pslld xmm0, 7
psrld xmm3, 0x19
orps xmm3, xmm0
movaps xmmword [ebp - 0x60], xmm3
sub eax, 1
jne 0x401520
movaps xmmword [ebp - 0x80], xmm7
movaps xmm7, xmmword [ebp - 0x250]
movaps xmm5, xmmword [ebp - 0x1b0]
paddd xmm5, xmmword [ebp - 0xe0]
movaps xmm4, xmmword [ebp - 0x1d0]
movaps xmm3, xmm5
paddd xmm4, xmmword [ebp - 0x100]
movaps xmm1, xmmword [ebp - 0x1c0]
movaps xmm2, xmm4
paddd xmm1, xmmword [ebp - 0xf0]
movaps xmm0, xmmword [ebp - 0x1e0]
paddd xmm0, xmmword [ebp - 0xb0]
mov eax, dword [ebp - 0x24]
mov edi, dword [ebp - 0xc]
punpckldq xmm3, xmm1
punpckhdq xmm5, xmm1
movaps xmm1, xmm3
punpckhdq xmm4, xmm0
punpckldq xmm2, xmm0
movups xmm0, xmmword [esi]
add dword [ebp - 0xc], 0x10
punpcklqdq xmm1, xmm2
xorps xmm1, xmm0
punpckhqdq xmm3, xmm2
movups xmmword [edx], xmm1
movups xmm0, xmmword [eax]
mov eax, dword [ebp - 8]
movaps xmm1, xmm5
punpckhqdq xmm5, xmm4
xorps xmm3, xmm0
punpcklqdq xmm1, xmm4
movaps xmm4, xmmword [ebp - 0x210]
movups xmmword [eax], xmm3
add eax, 0x10
movups xmm0, xmmword [edi]
mov edi, dword [ebp - 0x14]
paddd xmm4, xmmword [ebp - 0x80]
xorps xmm1, xmm0
add dword [ebp - 0x14], 0x10
movaps xmm2, xmm4
mov dword [ebp - 8], eax
movups xmmword [edi], xmm1
mov edi, dword [ebp - 4]
movaps xmm1, xmmword [ebp - 0x200]
paddd xmm1, xmmword [ebp - 0x110]
add dword [ebp - 4], 0x10
movups xmm0, xmmword [edi]
mov edi, dword [ebp - 0x18]
add dword [ebp - 0x18], 0x10
xorps xmm5, xmm0
movaps xmm0, xmmword [ebp - 0x140]
paddd xmm0, xmmword [ebp - 0x90]
movups xmmword [edi], xmm5
mov edi, dword [ebp - 0x24]
movaps xmm5, xmmword [ebp - 0x1f0]
paddd xmm5, xmmword [ebp - 0x60]
movaps xmm3, xmm5
punpckldq xmm2, xmm0
punpckldq xmm3, xmm1
punpckhdq xmm5, xmm1
movaps xmm1, xmm3
punpckhdq xmm4, xmm0
movups xmm0, xmmword [esi + 0x10]
punpcklqdq xmm1, xmm2
xorps xmm1, xmm0
punpckhqdq xmm3, xmm2
movups xmmword [edx + 0x10], xmm1
movups xmm0, xmmword [edi + 0x10]
movaps xmm1, xmm5
punpckhqdq xmm5, xmm4
xorps xmm3, xmm0
punpcklqdq xmm1, xmm4
movups xmmword [eax], xmm3
mov eax, dword [ebp - 0xc]
movups xmm0, xmmword [eax]
mov eax, dword [ebp - 0x14]
xorps xmm1, xmm0
movups xmmword [eax], xmm1
mov eax, dword [ebp - 4]
movups xmm0, xmmword [eax]
mov eax, dword [ebp - 0x18]
xorps xmm5, xmm0
movups xmmword [eax], xmm5
movaps xmm5, xmmword [ebp - 0x150]
paddd xmm7, xmm6
paddd xmm5, xmmword [ebp - 0xa0]
movaps xmm4, xmmword [ebp - 0x170]
movaps xmm3, xmm5
paddd xmm4, xmmword [ebp - 0x120]
movaps xmm1, xmmword [ebp - 0x160]
movaps xmm2, xmm4
paddd xmm1, xmmword [ebp - 0x70]
movaps xmm0, xmmword [ebp - 0x180]
paddd xmm0, xmmword [ebp - 0x130]
add dword [ebp - 8], 0x10
mov eax, dword [ebp - 8]
add dword [ebp - 0xc], 0x10
punpckldq xmm3, xmm1
add dword [ebp - 0x14], 0x10
punpckhdq xmm5, xmm1
movaps xmm1, xmm3
punpckhdq xmm4, xmm0
punpckldq xmm2, xmm0
movups xmm0, xmmword [esi + 0x20]
add dword [ebp - 4], 0x10
punpcklqdq xmm1, xmm2
xorps xmm1, xmm0
add dword [ebp - 0x18], 0x10
movups xmmword [edx + 0x20], xmm1
movups xmm0, xmmword [edi + 0x20]
punpckhqdq xmm3, xmm2
movaps xmm1, xmm5
xorps xmm3, xmm0
punpcklqdq xmm1, xmm4
movups xmmword [eax], xmm3
mov eax, dword [ebp - 0xc]
add dword [ebp - 0xc], 0x10
movaps xmm3, xmm7
punpckhqdq xmm5, xmm4
movaps xmm4, xmmword [ebp - 0x190]
movups xmm0, xmmword [eax]
mov eax, dword [ebp - 0x14]
paddd xmm4, xmmword [ebp - 0xd0]
xorps xmm1, xmm0
add dword [ebp - 0x14], 0x10
movaps xmm2, xmm4
movups xmmword [eax], xmm1
mov eax, dword [ebp - 4]
movaps xmm1, xmmword [ebp - 0x260]
paddd xmm1, xmmword [ebp - 0xc0]
add dword [ebp - 4], 0x10
movups xmm0, xmmword [eax]
mov eax, dword [ebp - 0x18]
punpckldq xmm3, xmm1
xorps xmm5, xmm0
punpckhdq xmm7, xmm1
movaps xmm0, xmmword [ebp - 0x1a0]
movaps xmm1, xmm3
paddd xmm0, xmmword [ebp - 0x40]
movups xmmword [eax], xmm5
mov eax, dword [ebp - 8]
punpckldq xmm2, xmm0
add eax, 0x10
punpckhdq xmm4, xmm0
movups xmm0, xmmword [esi + 0x30]
add dword [ebp - 0x18], 0x10
punpcklqdq xmm1, xmm2
xorps xmm1, xmm0
punpckhqdq xmm3, xmm2
movups xmmword [edx + 0x30], xmm1
mov dword [ebp - 8], eax
movups xmm0, xmmword [edi + 0x30]
movaps xmm1, xmm7
punpckhqdq xmm7, xmm4
xorps xmm3, xmm0
punpcklqdq xmm1, xmm4
movups xmmword [eax], xmm3
mov eax, dword [ebp - 0xc]
movups xmm0, xmmword [eax]
mov eax, dword [ebp - 0x14]
xorps xmm1, xmm0
movups xmmword [eax], xmm1
mov eax, dword [ebp - 4]
movups xmm0, xmmword [eax]
mov eax, dword [ebp - 0x18]
xorps xmm7, xmm0
add dword [ebp - 8], 0xd0
add edi, 0x100
add dword [ebp - 0x14], 0xd0
add edx, 0x100
add dword [ebp - 0x18], 0xd0
add esi, 0x100
add dword [ebp - 0xc], 0xd0
add dword [ebp - 4], 0xd0
movaps xmm1, xmmword [ebp - 0x1b0]
movaps xmm2, xmmword [ebp - 0x1c0]
movaps xmm3, xmmword [ebp - 0x1d0]
movaps xmm4, xmmword [ebp - 0x1e0]
movaps xmm5, xmmword [ebp - 0x1f0]
movaps xmm6, xmmword [ebp - 0x200]
movups xmmword [eax], xmm7
mov eax, dword [ebp - 0x20]
movaps xmm7, xmmword [ebp - 0x210]
sub eax, 0x100
sub dword [ebp - 0x1c], 1
mov dword [ebp - 0x24], edi
mov edi, dword [ebp - 0x28]
mov dword [ebp - 0x20], eax
jne 0x401414
jmp 0x401c5c
mov esi, dword [ebx + 8]
mov dword [ebp - 0x10], edx
mov edx, dword [ebx + 0xc]
mov dword [ebp - 0xc], esi
mov dword [ebp - 8], edx
cmp eax, 0x40
jb 0x401dee
shr eax, 6
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x10]
movups xmm6, xmmword [edi]
movups xmm7, xmmword [edi + 0x20]
movups xmm5, xmmword [edi + 0x30]
movups xmm2, xmmword [eax]
test ecx, ecx
je 0x401d74
mov eax, ecx
nop dword [eax]
movaps xmm3, xmm2
paddd xmm3, xmm6
xorps xmm5, xmm3
pshufb xmm5, xmmword [0x418030]
movaps xmm4, xmm5
paddd xmm4, xmm7
movaps xmm0, xmm4
xorps xmm0, xmm2
movaps xmm1, xmm0
pslld xmm0, 0xc
psrld xmm1, 0x14
xorps xmm1, xmm0
movaps xmm2, xmm1
paddd xmm2, xmm3
xorps xmm5, xmm2
pshufd xmm2, xmm2, 0x93
pshufb xmm5, xmmword [0x418040]
movaps xmm3, xmm5
pshufd xmm5, xmm5, 0x4e
paddd xmm3, xmm4
pshufd xmm4, xmm3, 0x39
movaps xmm0, xmm3
xorps xmm0, xmm1
movaps xmm1, xmm0
pslld xmm0, 7
psrld xmm1, 0x19
xorps xmm1, xmm0
paddd xmm2, xmm1
xorps xmm5, xmm2
pshufb xmm5, xmmword [0x418030]
paddd xmm4, xmm5
movaps xmm0, xmm4
xorps xmm0, xmm1
movaps xmm3, xmm0
pslld xmm0, 0xc
psrld xmm3, 0x14
xorps xmm3, xmm0
movaps xmm0, xmm3
paddd xmm0, xmm2
pshufd xmm6, xmm0, 0x39
xorps xmm5, xmm0
pshufb xmm5, xmmword [0x418040]
movaps xmm0, xmm5
pshufd xmm5, xmm5, 0x4e
paddd xmm0, xmm4
pshufd xmm7, xmm0, 0x93
movaps xmm1, xmm0
xorps xmm1, xmm3
movaps xmm2, xmm1
pslld xmm1, 7
psrld xmm2, 0x19
xorps xmm2, xmm1
sub eax, 1
jne 0x401c90
mov eax, dword [ebp - 0x10]
movups xmm4, xmmword [eax]
movups xmm0, xmmword [esi + 0x10]
movups xmm3, xmmword [edi + 0x20]
movups xmm1, xmmword [edi]
paddd xmm4, xmm2
paddd xmm3, xmm7
movups xmm2, xmmword [edi + 0x30]
xorps xmm4, xmm0
paddd xmm1, xmm6
movups xmm0, xmmword [esi + 0x20]
paddd xmm2, xmm5
xorps xmm3, xmm0
movups xmm0, xmmword [esi + 0x30]
xorps xmm2, xmm0
movups xmm0, xmmword [esi]
xorps xmm1, xmm0
movups xmmword [edx], xmm1
movups xmmword [edx + 0x10], xmm4
movups xmmword [edx + 0x20], xmm3
movups xmmword [edx + 0x30], xmm2
mov ecx, dword [edi + 0x34]
add dword [edi + 0x30], 1
lea eax, [ecx + 1]
cmovne eax, ecx
mov ecx, dword [ebx + 0x14]
mov dword [edi + 0x34], eax
add edx, 0x40
mov eax, dword [ebp - 0x20]
add esi, 0x40
sub eax, 0x40
sub dword [ebp - 0x1c], 1
mov dword [ebp - 0x20], eax
jne 0x401c71
mov dword [ebp - 8], edx
mov dword [ebp - 0xc], esi
test eax, eax
je 0x402055
mov ecx, dword [ebx + 0x10]
mov eax, 0xffffffc1
sub eax, ecx
add edx, 0x3f
mov dword [ebp - 0x10], eax
mov eax, 0xfffffff0
sub eax, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 0x1c], eax
push dword [ebx + 0x14]
mov edx, edi
call fcn.00401000
add esp, 4
add dword [edi + 0x30], 1
jne 0x401e29
inc dword [edi + 0x34]
cmp dword [ebp - 0x20], 0x40
jbe 0x401ee8
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebp - 8]
lea eax, [ecx + 0x3f]
cmp edx, eax
ja 0x401e47
mov eax, dword [ebp - 4]
cmp eax, ecx
jae 0x401e55
lea eax, [esi + 0x3f]
cmp edx, eax
mov eax, dword [ebp - 4]
ja 0x401e94
cmp eax, esi
jb 0x401e94
mov edi, dword [ebp - 0x1c]
mov edx, 0x40
add edi, esi
add eax, dword [ebp - 0x10]
mov dword [ebp - 0x24], eax
mov esi, eax
nop word [eax + eax]
mov al, byte [ecx + edi + 0x10]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [ecx + esi - 1], al
sub edx, 1
jne 0x401e70
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 0x28]
mov edx, dword [ebp - 8]
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebp - 4]
jmp 0x401ecd
movups xmm0, xmmword [ecx]
movups xmm1, xmmword [esi]
xorps xmm1, xmm0
movups xmmword [edx], xmm1
movups xmm0, xmmword [ecx + 0x10]
movups xmm1, xmmword [esi + 0x10]
xorps xmm1, xmm0
movups xmmword [eax - 0x2f], xmm1
movups xmm0, xmmword [ecx + 0x20]
movups xmm1, xmmword [esi + 0x20]
xorps xmm1, xmm0
movups xmmword [eax - 0x1f], xmm1
movups xmm1, xmmword [esi + 0x30]
movups xmm0, xmmword [ecx + 0x30]
xorps xmm1, xmm0
movups xmmword [eax - 0xf], xmm1
sub dword [ebp - 0x20], 0x40
add edx, 0x40
add eax, 0x40
mov dword [ebp - 8], edx
add esi, 0x40
mov dword [ebp - 4], eax
mov dword [ebp - 0xc], esi
jmp 0x401e13
mov edi, dword [ebp - 0x20]
xor eax, eax
test edi, edi
je 0x402055
mov edx, dword [ebx + 0x10]
cmp edi, 8
jb 0x402031
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x10], eax
lea eax, [edx - 1]
add eax, edi
cmp ecx, eax
ja 0x401f1d
lea eax, [ecx - 1]
add eax, edi
cmp eax, edx
jae 0x40202f
lea eax, [edi - 1]
add eax, esi
cmp ecx, eax
ja 0x401f33
lea eax, [ecx - 1]
add eax, edi
cmp eax, esi
jae 0x40202f
cmp edi, 0x40
jb 0x401fdb
mov eax, edi
and eax, 0xffffffc0
mov dword [ebp - 4], eax
lea eax, [ecx + 0x20]
mov dword [ebp - 0x28], eax
mov eax, esi
mov edi, dword [ebp - 0x28]
sub eax, edx
mov dword [ebp - 0x1c], eax
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x10], eax
mov eax, esi
sub eax, ecx
lea ecx, [edx + 0x10]
mov dword [ebp - 0x24], eax
xor eax, eax
nop word [eax + eax]
movups xmm0, xmmword [ecx - 0x10]
mov edx, dword [ebp - 0x1c]
lea ecx, [ecx + 0x40]
movups xmm1, xmmword [eax + esi]
lea edi, [edi + 0x40]
xorps xmm1, xmm0
movups xmmword [edi - 0x60], xmm1
movups xmm1, xmmword [ecx + edx - 0x40]
mov edx, dword [ebp - 0x10]
movups xmm0, xmmword [ecx - 0x40]
xorps xmm1, xmm0
movups xmmword [ecx + edx - 0x40], xmm1
mov edx, dword [ebp - 0x24]
movups xmm0, xmmword [ecx - 0x30]
movups xmm1, xmmword [edi + edx - 0x40]
mov edx, dword [ebx + 0x10]
xorps xmm1, xmm0
movups xmmword [edi - 0x40], xmm1
movups xmm1, xmmword [esi + eax + 0x30]
add eax, 0x40
movups xmm0, xmmword [ecx - 0x20]
xorps xmm1, xmm0
movups xmmword [edi - 0x30], xmm1
cmp eax, dword [ebp - 4]
jb 0x401f70
mov edi, dword [ebp - 0x20]
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x10], eax
mov eax, edi
and al, 0x3f
cmp al, 8
jb 0x402026
mov eax, dword [ebp - 0x10]
and edi, 0xfffffff8
mov dword [ebp - 0x24], edi
lea edi, [eax + edx]
mov dword [ebp - 0x28], edi
mov edi, esi
sub edi, edx
sub ecx, edx
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x1c], edi
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x10], ecx
nop
movq xmm1, qword [esi + edx]
lea edx, [edx + 8]
movq xmm0, qword [edx - 8]
add eax, 8
xorps xmm1, xmm0
movq qword [ecx + edx - 8], xmm1
cmp eax, dword [ebp - 0x24]
jb 0x402000
mov esi, dword [ebp - 0xc]
mov edx, dword [ebx + 0x10]
jmp 0x402029
mov eax, dword [ebp - 0x10]
cmp eax, edi
jae 0x402055
jmp 0x402031
xor eax, eax
lea ecx, [eax + edx]
sub esi, edx
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 8]
sub ecx, edx
mov edx, dword [ebp - 0x28]
sub edi, eax
mov al, byte [esi + edx]
lea edx, [edx + 1]
xor al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub edi, 1
jne 0x402043
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret