Function at 0x402030
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x450008]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, edx
mov dword [ebp - 0x30], ecx
mov edx, dword [ebp + 0x10]
mov ebx, ecx
mov dword [ebp - 0x34], edi
mov esi, edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x44], esi
test ebx, ebx
je 0x402fde
test edi, edi
je 0x402fde
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x402fde
test eax, eax
je 0x402fde
test edx, edx
je 0x402fde
cmp dword [ebp + 0x14], 1
je 0x402def
cmp dword [ebp + 0x14], 0
je 0x4020af
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00416291
mov esp, ebp
pop ebp
ret
cmp ebx, edi
je 0x402743
cmp ecx, 0x10
jb 0x40212f
nop dword [eax]
push eax
mov edx, edi
mov ecx, ebx
call fcn.00401ae0
add esp, 4
test eax, eax
jne 0x402fc8
lea eax, [esi + 0xf]
cmp edi, eax
ja 0x402100
lea eax, [edi + 0xf]
cmp eax, esi
jb 0x402100
mov ecx, edi
sub esi, edi
mov edx, 0x10
nop dword [eax]
mov al, byte [ecx + esi]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edx, 1
jne 0x4020f0
jmp 0x40210d
movups xmm1, xmmword [edi]
movups xmm0, xmmword [esi]
pxor xmm1, xmm0
movups xmmword [edi], xmm1
mov ecx, dword [ebp + 8]
mov esi, ebx
mov eax, dword [ebp - 0x18]
sub ecx, 0x10
add ebx, 0x10
mov dword [ebp - 0x44], esi
add edi, 0x10
mov dword [ebp + 8], ecx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x34], edi
cmp ecx, 0x10
jae 0x4020c0
test ecx, ecx
je 0x402727
test ebx, ebx
je 0x402fc8
mov eax, dword [ebx]
mov ecx, eax
rol eax, 8
mov edi, dword [ebp - 0x18]
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
mov eax, dword [ebx + 4]
xor ecx, dword [edi]
mov dword [ebp - 0x2c], ecx
mov ecx, eax
rol eax, 8
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
mov eax, dword [ebx + 8]
mov ebx, eax
xor ecx, dword [edi + 4]
rol eax, 8
and eax, 0xff00ff
ror ebx, 8
and ebx, 0xff00ff00
mov dword [ebp - 0x20], ecx
or ebx, eax
mov eax, dword [ebp - 0x30]
xor ebx, dword [edi + 8]
mov eax, dword [eax + 0xc]
mov edx, eax
rol eax, 8
and eax, 0xff00ff
ror edx, 8
and edx, 0xff00ff00
or edx, eax
xor edx, dword [edi + 0xc]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, dword [ebp - 0x2c]
shr eax, 0x18
xor ecx, dword [eax*4 + 0x448d80]
mov eax, dword [ebp - 0x20]
movzx eax, al
xor ecx, dword [eax*4 + 0x449da8]
mov eax, edi
xor ecx, dword [eax + 0x10]
mov eax, edx
shr eax, 8
mov dword [ebp - 0x28], ecx
movzx ecx, al
mov eax, dword [ebp - 0x2c]
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x448480]
xor ecx, dword [eax*4 + 0x448880]
mov eax, dword [ebp - 0x20]
mov edi, ecx
shr eax, 0x18
mov dword [ebp - 0x1c], ecx
xor edi, dword [eax*4 + 0x448d80]
movzx eax, bl
xor edi, dword [eax*4 + 0x449da8]
mov eax, dword [ebp - 0x18]
xor edi, dword [eax + 0x14]
mov eax, dword [ebp - 0x20]
shr eax, 0x10
movzx ecx, al
mov eax, dword [ebp - 0x2c]
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x448880]
mov dword [ebp - 0x1c], edi
xor ecx, dword [eax*4 + 0x448480]
mov eax, ebx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x448d80]
mov edi, dword [ebp - 0x18]
movzx eax, dl
shr ebx, 0x10
shr edx, 0x18
xor ecx, dword [eax*4 + 0x449da8]
xor ecx, dword [edi + 0x18]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x38], ecx
shr eax, 8
movzx eax, al
movzx ecx, bl
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, dword [ebp - 0x2c]
xor ecx, dword [edx*4 + 0x448d80]
movzx eax, al
xor ecx, dword [eax*4 + 0x449da8]
lea eax, [edi + 0x20]
xor ecx, dword [edi + 0x1c]
mov dword [ebp - 0x20], eax
mov eax, dword [edi + 0xf0]
mov edi, dword [ebp - 0x20]
sar eax, 1
sub eax, 1
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x24], eax
je 0x4024d5
nop
mov ebx, dword [ebp - 0x38]
mov eax, ecx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov esi, dword [ebp - 0x28]
mov ecx, dword [ecx*4 + 0x448880]
mov edx, dword [ebp - 0x1c]
xor ecx, dword [eax*4 + 0x448480]
mov eax, esi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x448d80]
movzx eax, dl
xor ecx, dword [eax*4 + 0x449da8]
xor ecx, dword [edi]
mov eax, dword [ebp - 0x18]
shr eax, 8
mov dword [ebp - 0x3c], ecx
movzx ecx, al
mov eax, esi
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x448480]
xor ecx, dword [eax*4 + 0x448880]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x448d80]
movzx eax, bl
xor ecx, dword [eax*4 + 0x449da8]
mov eax, edx
xor ecx, dword [edi + 4]
shr eax, 0x10
mov dword [ebp - 0x2c], ecx
movzx ecx, al
mov eax, esi
shr eax, 8
movzx eax, al
shr edx, 8
mov ebx, dword [ecx*4 + 0x448880]
mov ecx, dword [ebp - 0x38]
xor ebx, dword [eax*4 + 0x448480]
mov eax, ecx
shr eax, 0x18
shr ecx, 0x10
movzx ecx, cl
xor ebx, dword [eax*4 + 0x448d80]
mov eax, dword [ebp - 0x18]
movzx eax, al
xor ebx, dword [eax*4 + 0x449da8]
xor ebx, dword [edi + 8]
movzx eax, dl
mov edx, dword [ecx*4 + 0x448880]
xor edx, dword [eax*4 + 0x448480]
mov eax, dword [ebp - 0x18]
shr eax, 0x18
xor edx, dword [eax*4 + 0x448d80]
mov eax, esi
movzx eax, al
xor edx, dword [eax*4 + 0x449da8]
xor edx, dword [edi + 0xc]
mov edi, dword [ebp - 0x3c]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, edi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x448d80]
mov eax, dword [ebp - 0x2c]
movzx eax, al
xor ecx, dword [eax*4 + 0x449da8]
mov eax, dword [ebp - 0x20]
xor ecx, dword [eax + 0x10]
mov eax, edx
mov dword [ebp - 0x28], ecx
shr eax, 8
movzx ecx, al
mov eax, edi
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x448480]
xor ecx, dword [eax*4 + 0x448880]
mov eax, dword [ebp - 0x2c]
mov esi, ecx
shr eax, 0x18
mov dword [ebp - 0x1c], ecx
xor esi, dword [eax*4 + 0x448d80]
movzx eax, bl
xor esi, dword [eax*4 + 0x449da8]
mov dword [ebp - 0x1c], esi
mov eax, esi
mov esi, dword [ebp - 0x20]
xor eax, dword [esi + 0x14]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x2c]
shr eax, 0x10
movzx ecx, al
mov eax, edi
shr eax, 8
mov edi, esi
movzx eax, al
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, ebx
shr eax, 0x18
shr ebx, 0x10
xor ecx, dword [eax*4 + 0x448d80]
movzx eax, dl
shr edx, 0x18
xor ecx, dword [eax*4 + 0x449da8]
xor ecx, dword [edi + 0x18]
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x38], ecx
shr eax, 8
movzx ecx, bl
movzx eax, al
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, dword [ebp - 0x3c]
xor ecx, dword [edx*4 + 0x448d80]
movzx eax, al
xor ecx, dword [eax*4 + 0x449da8]
xor ecx, dword [edi + 0x1c]
add edi, 0x20
sub dword [ebp - 0x24], 1
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x20], edi
jne 0x4022d0
mov esi, dword [ebp - 0x44]
mov eax, ecx
mov ebx, dword [ebp - 0x38]
shr eax, 0x10
movzx eax, al
mov edx, dword [ebp - 0x1c]
movzx ecx, byte [eax + 0x448c80]
mov eax, dword [ebp - 0x28]
shr eax, 0x18
movzx eax, byte [eax + 0x448c80]
shl eax, 8
xor ecx, eax
mov eax, ebx
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
xor ecx, dword [edi]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x28]
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax + 0x448c80]
mov eax, edx
shr eax, 0x18
movzx eax, byte [eax + 0x448c80]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x18]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
movzx eax, bl
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
xor ecx, dword [edi + 4]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [ebp - 0x10], eax
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax + 0x448c80]
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax + 0x448c80]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x28]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
mov eax, dword [ebp - 0x18]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
xor ecx, dword [edi + 8]
mov eax, ecx
ror eax, 8
and eax, 0xff00ff00
rol ecx, 8
and ecx, 0xff00ff
shr ebx, 0x10
or eax, ecx
shr edx, 8
mov dword [ebp - 0xc], eax
movzx eax, bl
mov ebx, dword [ebp + 8]
movzx ecx, byte [eax + 0x448c80]
mov eax, dword [ebp - 0x18]
shr eax, 0x18
movzx eax, byte [eax + 0x448c80]
shl eax, 8
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
mov eax, dword [ebp - 0x28]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
xor ecx, dword [edi + 0xc]
xor edi, edi
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [ebp - 8], eax
test ebx, ebx
je 0x402724
mov edx, dword [ebp - 0x34]
cmp ebx, 0x40
jb 0x402707
lea ecx, [edx - 1]
lea eax, [ebp + ebx - 0x15]
add ecx, ebx
cmp edx, eax
ja 0x40268a
lea eax, [ebp - 0x14]
cmp ecx, eax
jae 0x402707
lea eax, [ebx - 1]
add eax, esi
cmp edx, eax
ja 0x402697
cmp ecx, esi
jae 0x402707
mov ecx, ebx
lea eax, [edx + 0x10]
mov ebx, esi
and ecx, 0xffffffc0
sub ebx, edx
mov dword [ebp - 0x24], ebx
mov ebx, dword [ebp + 8]
nop dword [eax]
movups xmm0, xmmword [ebp + edi - 0x14]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + edi]
pxor xmm1, xmm0
movups xmm0, xmmword [ebp + edi - 4]
movups xmmword [edx + edi], xmm1
mov edx, dword [ebp - 0x24]
movups xmm1, xmmword [eax + edx - 0x40]
mov edx, dword [ebp - 0x34]
pxor xmm1, xmm0
movups xmm0, xmmword [ebp + edi + 0xc]
movups xmmword [eax - 0x40], xmm1
movups xmm1, xmmword [esi + edi + 0x20]
pxor xmm1, xmm0
movups xmm0, xmmword [ebp + edi + 0x1c]
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [esi + edi + 0x30]
add edi, 0x40
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edi, ecx
jb 0x4026b0
cmp edi, ebx
jae 0x402724
lea eax, [ebp - 0x14]
sub esi, eax
sub edx, eax
lea ecx, [ebp - 0x14]
add ecx, edi
inc edi
mov al, byte [ecx + esi]
xor al, byte [ecx]
mov byte [ecx + edx], al
cmp edi, ebx
jb 0x402712
mov esi, dword [ebp - 0x30]
movups xmm0, xmmword [esi]
mov esi, dword [ebp - 0x40]
movups xmmword [esi], xmm0
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00416291
mov esp, ebp
pop ebp
ret
cmp ecx, 0x10
jb 0x4027c0
sub esi, edi
nop word [eax + eax]
movups xmm2, xmmword [ebx]
push eax
mov edx, edi
mov ecx, ebx
call fcn.00401ae0
add esp, 4
test eax, eax
jne 0x402fc8
mov edx, dword [ebp - 0x40]
lea eax, [edx + 0xf]
cmp edi, eax
ja 0x402793
lea eax, [edi + 0xf]
cmp eax, edx
jb 0x402793
mov ecx, edi
mov edx, 0x10
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edx, 1
jne 0x402780
mov edx, dword [ebp - 0x40]
jmp 0x4027a0
movups xmm1, xmmword [edi]
movups xmm0, xmmword [edx]
pxor xmm1, xmm0
movups xmmword [edi], xmm1
mov ecx, dword [ebp + 8]
add edi, 0x10
mov eax, dword [ebp - 0x18]
sub ecx, 0x10
add ebx, 0x10
mov dword [ebp + 8], ecx
sub esi, 0x10
mov dword [ebp - 0x34], edi
movups xmmword [edx], xmm2
cmp ecx, 0x10
jae 0x402750
test ecx, ecx
je 0x402730
movups xmm1, xmmword [ebx]
movups xmmword [ebp - 0x54], xmm1
movups xmmword [ebp - 0x14], xmm1
test edi, edi
je 0x402fc8
mov esi, dword [ebp - 0x18]
movaps xmm0, xmm1
movd eax, xmm1
psrldq xmm0, 4
mov ecx, eax
rol eax, 8
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
movd eax, xmm0
xor ecx, dword [esi]
movaps xmm0, xmm1
mov dword [ebp - 0x2c], ecx
mov ecx, eax
psrldq xmm0, 8
rol eax, 8
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
movd eax, xmm0
xor ecx, dword [esi + 4]
movaps xmm0, xmm1
psrldq xmm0, 0xc
mov ebx, eax
mov dword [ebp - 0x30], ecx
rol eax, 8
and eax, 0xff00ff
ror ebx, 8
and ebx, 0xff00ff00
or ebx, eax
movd eax, xmm0
xor ebx, dword [esi + 8]
mov edx, eax
rol eax, 8
and eax, 0xff00ff
ror edx, 8
and edx, 0xff00ff00
or edx, eax
xor edx, dword [esi + 0xc]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, dword [ebp - 0x2c]
shr eax, 0x18
xor ecx, dword [eax*4 + 0x448d80]
mov eax, dword [ebp - 0x30]
movzx eax, al
xor ecx, dword [eax*4 + 0x449da8]
mov eax, esi
xor ecx, dword [eax + 0x10]
mov eax, edx
shr eax, 8
mov dword [ebp - 0x20], ecx
movzx ecx, al
mov eax, dword [ebp - 0x2c]
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x448480]
xor ecx, dword [eax*4 + 0x448880]
mov eax, dword [ebp - 0x30]
mov esi, ecx
shr eax, 0x18
mov dword [ebp - 0x1c], ecx
xor esi, dword [eax*4 + 0x448d80]
movzx eax, bl
xor esi, dword [eax*4 + 0x449da8]
mov eax, dword [ebp - 0x18]
xor esi, dword [eax + 0x14]
mov eax, dword [ebp - 0x30]
shr eax, 0x10
movzx ecx, al
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x1c], esi
shr eax, 8
mov ecx, dword [ecx*4 + 0x448880]
mov esi, dword [ebp - 0x18]
movzx eax, al
xor ecx, dword [eax*4 + 0x448480]
mov eax, ebx
shr eax, 0x18
shr ebx, 0x10
xor ecx, dword [eax*4 + 0x448d80]
movzx eax, dl
shr edx, 0x18
xor ecx, dword [eax*4 + 0x449da8]
xor ecx, dword [esi + 0x18]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x38], ecx
shr eax, 8
movzx eax, al
movzx ecx, bl
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, dword [ebp - 0x2c]
xor ecx, dword [edx*4 + 0x448d80]
movzx eax, al
xor ecx, dword [eax*4 + 0x449da8]
lea eax, [esi + 0x20]
xor ecx, dword [esi + 0x1c]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0xf0]
sar eax, 1
sub eax, 1
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x3c], eax
je 0x402b84
mov edi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x38]
mov eax, ecx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov esi, dword [ebp - 0x20]
mov ecx, dword [ecx*4 + 0x448880]
mov edx, dword [ebp - 0x1c]
xor ecx, dword [eax*4 + 0x448480]
mov eax, esi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x448d80]
movzx eax, dl
xor ecx, dword [eax*4 + 0x449da8]
xor ecx, dword [edi]
mov eax, dword [ebp - 0x28]
shr eax, 8
mov dword [ebp - 0x24], ecx
movzx ecx, al
mov eax, esi
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x448480]
xor ecx, dword [eax*4 + 0x448880]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x448d80]
movzx eax, bl
xor ecx, dword [eax*4 + 0x449da8]
mov eax, edx
xor ecx, dword [edi + 4]
shr eax, 0x10
mov dword [ebp - 0x30], ecx
movzx ecx, al
mov eax, esi
shr eax, 8
movzx eax, al
shr edx, 8
mov ebx, dword [ecx*4 + 0x448880]
mov ecx, dword [ebp - 0x38]
xor ebx, dword [eax*4 + 0x448480]
mov eax, ecx
shr eax, 0x18
shr ecx, 0x10
movzx ecx, cl
xor ebx, dword [eax*4 + 0x448d80]
mov eax, dword [ebp - 0x28]
movzx eax, al
xor ebx, dword [eax*4 + 0x449da8]
xor ebx, dword [edi + 8]
movzx eax, dl
mov edx, dword [ecx*4 + 0x448880]
xor edx, dword [eax*4 + 0x448480]
mov eax, dword [ebp - 0x28]
shr eax, 0x18
xor edx, dword [eax*4 + 0x448d80]
mov eax, esi
movzx eax, al
mov esi, dword [ebp - 0x24]
xor edx, dword [eax*4 + 0x449da8]
xor edx, dword [edi + 0xc]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, esi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x448d80]
mov eax, dword [ebp - 0x30]
movzx eax, al
xor ecx, dword [eax*4 + 0x449da8]
mov eax, edx
xor ecx, dword [edi + 0x10]
mov dword [ebp - 0x20], ecx
shr eax, 8
movzx ecx, al
mov eax, esi
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x448480]
xor ecx, dword [eax*4 + 0x448880]
mov eax, dword [ebp - 0x30]
mov edi, ecx
shr eax, 0x18
mov dword [ebp - 0x1c], ecx
xor edi, dword [eax*4 + 0x448d80]
movzx eax, bl
xor edi, dword [eax*4 + 0x449da8]
mov dword [ebp - 0x1c], edi
mov eax, edi
mov edi, dword [ebp - 0x18]
xor eax, dword [edi + 0x14]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x30]
shr eax, 0x10
movzx ecx, al
mov eax, esi
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, ebx
shr eax, 0x18
shr ebx, 0x10
xor ecx, dword [eax*4 + 0x448d80]
movzx eax, dl
shr edx, 0x18
xor ecx, dword [eax*4 + 0x449da8]
xor ecx, dword [edi + 0x18]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x38], ecx
shr eax, 8
movzx ecx, bl
movzx eax, al
mov ecx, dword [ecx*4 + 0x448880]
xor ecx, dword [eax*4 + 0x448480]
mov eax, esi
xor ecx, dword [edx*4 + 0x448d80]
movzx eax, al
xor ecx, dword [eax*4 + 0x449da8]
xor ecx, dword [edi + 0x1c]
add edi, 0x20
sub dword [ebp - 0x3c], 1
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x18], edi
jne 0x402985
mov edi, dword [ebp - 0x34]
mov eax, ecx
mov ebx, dword [ebp - 0x38]
shr eax, 0x10
movzx eax, al
mov edx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
movzx ecx, byte [eax + 0x448c80]
mov eax, dword [ebp - 0x20]
shr eax, 0x18
movzx eax, byte [eax + 0x448c80]
shl eax, 8
xor ecx, eax
mov eax, ebx
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
xor ecx, dword [esi]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [edi], eax
mov eax, dword [ebp - 0x20]
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax + 0x448c80]
mov eax, edx
shr eax, 0x18
movzx eax, byte [eax + 0x448c80]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x28]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
movzx eax, bl
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
xor ecx, dword [esi + 4]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [edi + 4], eax
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax + 0x448c80]
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax + 0x448c80]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x20]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
mov eax, dword [ebp - 0x28]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
xor ecx, dword [esi + 8]
mov eax, ecx
ror eax, 8
and eax, 0xff00ff00
rol ecx, 8
and ecx, 0xff00ff
shr ebx, 0x10
or eax, ecx
shr edx, 8
mov dword [edi + 8], eax
movzx eax, bl
mov ebx, dword [ebp + 8]
movzx ecx, byte [eax + 0x448c80]
mov eax, dword [ebp - 0x28]
shr eax, 0x18
movzx eax, byte [eax + 0x448c80]
shl eax, 8
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
mov eax, dword [ebp - 0x20]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x448c80]
xor ecx, eax
xor ecx, dword [esi + 0xc]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
xor ecx, ecx
mov dword [edi + 0xc], eax
test ebx, ebx
je 0x402dc4
mov esi, dword [ebp - 0x40]
cmp ebx, 0x40
jb 0x402da0
lea eax, [ebx - 1]
lea edx, [ebx - 1]
add eax, esi
add edx, edi
cmp edi, eax
ja 0x402d35
cmp edx, esi
jae 0x402da0
mov edx, ebx
mov eax, edi
mov ebx, esi
and edx, 0xffffffc0
sub ebx, edi
mov dword [ebp - 0x24], ebx
mov ebx, dword [ebp + 8]
mov edi, dword [ebp - 0x24]
nop dword [eax]
movups xmm0, xmmword [eax]
lea eax, [eax + 0x40]
movups xmm1, xmmword [eax + edi - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [esi + ecx + 0x10]
pxor xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm0, xmmword [eax - 0x20]
movups xmm1, xmmword [esi + ecx + 0x20]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
movups xmm0, xmmword [eax - 0x10]
movups xmm1, xmmword [esi + ecx + 0x30]
add ecx, 0x40
pxor xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
cmp ecx, edx
jb 0x402d50
mov edi, dword [ebp - 0x34]
cmp ecx, ebx
jae 0x402dc7
sub esi, edi
lea edx, [edi + ecx]
mov dword [ebp - 0x24], esi
mov esi, ebx
mov edi, dword [ebp - 0x24]
sub esi, ecx
mov al, byte [edx + edi]
lea edx, [edx + 1]
xor byte [edx - 1], al
sub esi, 1
jne 0x402db3
mov edi, dword [ebp - 0x34]
mov esi, dword [ebp - 0x40]
cmp ebx, 0x10
jae 0x402de6
mov eax, 0x10
lea ecx, [ebp - 0x14]
sub eax, ebx
lea edx, [edi + ebx]
push eax
add ecx, ebx
push ecx
push edx
call fcn.00419220
add esp, 0xc
movups xmm0, xmmword [ebp - 0x54]
jmp 0x40272d
cmp ecx, 0x10
jb 0x402e81
lea eax, [esi + 0xf]
cmp edi, eax
ja 0x402e06
lea eax, [edi + 0xf]
cmp eax, esi
jae 0x402e14
lea eax, [ebx + 0xf]
cmp edi, eax
ja 0x402e3d
lea eax, [edi + 0xf]
cmp eax, ebx
jb 0x402e3d
mov edx, ebx
mov eax, edi
sub edx, esi
mov ecx, 0x10
sub eax, esi
mov dword [ebp - 0x24], eax
mov edi, eax
mov al, byte [edx + esi]
lea esi, [esi + 1]
xor al, byte [esi - 1]
mov byte [edi + esi - 1], al
sub ecx, 1
jne 0x402e26
mov edi, dword [ebp - 0x34]
jmp 0x402e4a
movups xmm1, xmmword [ebx]
movups xmm0, xmmword [esi]
pxor xmm1, xmm0
movups xmmword [edi], xmm1
push dword [ebp - 0x18]
mov edx, edi
mov ecx, edi
call fcn.00401580
add esp, 4
test eax, eax
jne 0x402fc8
mov ecx, dword [ebp + 8]
mov esi, edi
sub ecx, 0x10
mov dword [ebp - 0x44], esi
add edi, 0x10
mov dword [ebp + 8], ecx
add ebx, 0x10
mov dword [ebp - 0x34], edi
cmp ecx, 0x10
jae 0x402df8
test ecx, ecx
je 0x402727
xor edx, edx
test ecx, ecx
je 0x402f88
cmp ecx, 0x40
jb 0x402f51
lea eax, [esi - 1]
add eax, ecx
cmp edi, eax
ja 0x402eb2
lea eax, [edi - 1]
add eax, ecx
cmp eax, esi
jae 0x402f51
lea eax, [ebx - 1]
add eax, ecx
cmp edi, eax
ja 0x402ec8
lea eax, [edi - 1]
add eax, ecx
cmp eax, ebx
jae 0x402f51
mov eax, ecx
mov ecx, ebx
sub ecx, esi
and eax, 0xffffffc0
mov dword [ebp - 0x24], ecx
mov ecx, edi
sub ecx, esi
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x3c], ecx
mov eax, esi
mov esi, dword [ebp - 0x24]
mov ecx, ebx
sub ecx, edi
mov dword [ebp - 0x30], ecx
lea ecx, [edi + 0x10]
nop dword [eax]
movups xmm0, xmmword [eax]
mov edi, dword [ebp - 0x3c]
lea eax, [eax + 0x40]
movups xmm1, xmmword [eax + esi - 0x40]
lea ecx, [ecx + 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [eax + edi - 0x40], xmm1
mov edi, dword [ebp - 0x30]
movups xmm1, xmmword [edi + ecx - 0x40]
mov edi, dword [ebp - 0x34]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [ecx - 0x40], xmm1
movups xmm1, xmmword [ebx + edx + 0x20]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x10]
movups xmmword [ecx - 0x30], xmm1
movups xmm1, xmmword [ebx + edx + 0x30]
add edx, 0x40
pxor xmm1, xmm0
movups xmmword [ecx - 0x20], xmm1
cmp edx, dword [ebp - 0x2c]
jb 0x402ef0
mov esi, dword [ebp - 0x44]
mov ecx, dword [ebp + 8]
cmp edx, ecx
jae 0x402f88
sub edi, esi
lea eax, [edx + esi]
mov dword [ebp - 0x3c], edi
sub ebx, esi
mov edi, ecx
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x3c]
sub edi, edx
mov edx, eax
nop dword [eax + eax]
mov al, byte [edx + ebx]
lea edx, [edx + 1]
xor al, byte [edx - 1]
mov byte [edx + ecx - 1], al
sub edi, 1
jne 0x402f70
mov edi, dword [ebp - 0x34]
mov ecx, dword [ebp + 8]
cmp ecx, 0x10
jae 0x402fae
mov ebx, 0x10
lea edx, [edi + ecx]
sub esi, edi
sub ebx, ecx
nop dword [eax]
mov al, byte [esi + edx]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub ebx, 1
jne 0x402fa0
push dword [ebp - 0x18]
mov edx, edi
mov ecx, edi
call fcn.00401580
add esp, 4
test eax, eax
jne 0x402fc8
mov esi, edi
jmp 0x402727
pop edi
pop esi
mov eax, 0xfffffffd
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00416291
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00416291
mov esp, ebp
pop ebp
ret