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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x41e008]
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 0x402f1e
test edi, edi
je 0x402f1e
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x402f1e
test eax, eax
je 0x402f1e
test edx, edx
je 0x402f1e
cmp dword [ebp + 0x14], 1
je 0x402d2f
cmp dword [ebp + 0x14], 0
je 0x401fef
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00413d41
mov esp, ebp
pop ebp
ret
cmp ebx, edi
je 0x402683
cmp ecx, 0x10
jb 0x40206f
nop dword [eax]
push eax
mov edx, edi
mov ecx, ebx
call fcn.00401a20
add esp, 4
test eax, eax
jne 0x402f08
lea eax, [esi + 0xf]
cmp edi, eax
ja 0x402040
lea eax, [edi + 0xf]
cmp eax, esi
jb 0x402040
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 0x402030
jmp 0x40204d
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 0x402000
test ecx, ecx
je 0x402667
test ebx, ebx
je 0x402f08
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, dword [ebp - 0x2c]
shr eax, 0x18
xor ecx, dword [eax*4 + 0x416ca0]
mov eax, dword [ebp - 0x20]
movzx eax, al
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4163a0]
xor ecx, dword [eax*4 + 0x4167a0]
mov eax, dword [ebp - 0x20]
mov edi, ecx
shr eax, 0x18
mov dword [ebp - 0x1c], ecx
xor edi, dword [eax*4 + 0x416ca0]
movzx eax, bl
xor edi, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
mov dword [ebp - 0x1c], edi
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, ebx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x416ca0]
mov edi, dword [ebp - 0x18]
movzx eax, dl
shr ebx, 0x10
shr edx, 0x18
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, dword [ebp - 0x2c]
xor ecx, dword [edx*4 + 0x416ca0]
movzx eax, al
xor ecx, dword [eax*4 + 0x417cc8]
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 0x402415
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 + 0x4167a0]
mov edx, dword [ebp - 0x1c]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, esi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x416ca0]
movzx eax, dl
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4163a0]
xor ecx, dword [eax*4 + 0x4167a0]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x416ca0]
movzx eax, bl
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
mov ecx, dword [ebp - 0x38]
xor ebx, dword [eax*4 + 0x4163a0]
mov eax, ecx
shr eax, 0x18
shr ecx, 0x10
movzx ecx, cl
xor ebx, dword [eax*4 + 0x416ca0]
mov eax, dword [ebp - 0x18]
movzx eax, al
xor ebx, dword [eax*4 + 0x417cc8]
xor ebx, dword [edi + 8]
movzx eax, dl
mov edx, dword [ecx*4 + 0x4167a0]
xor edx, dword [eax*4 + 0x4163a0]
mov eax, dword [ebp - 0x18]
shr eax, 0x18
xor edx, dword [eax*4 + 0x416ca0]
mov eax, esi
movzx eax, al
xor edx, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, edi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x416ca0]
mov eax, dword [ebp - 0x2c]
movzx eax, al
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4163a0]
xor ecx, dword [eax*4 + 0x4167a0]
mov eax, dword [ebp - 0x2c]
mov esi, ecx
shr eax, 0x18
mov dword [ebp - 0x1c], ecx
xor esi, dword [eax*4 + 0x416ca0]
movzx eax, bl
xor esi, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, ebx
shr eax, 0x18
shr ebx, 0x10
xor ecx, dword [eax*4 + 0x416ca0]
movzx eax, dl
shr edx, 0x18
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, dword [ebp - 0x3c]
xor ecx, dword [edx*4 + 0x416ca0]
movzx eax, al
xor ecx, dword [eax*4 + 0x417cc8]
xor ecx, dword [edi + 0x1c]
add edi, 0x20
sub dword [ebp - 0x24], 1
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x20], edi
jne 0x402210
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 + 0x416ba0]
mov eax, dword [ebp - 0x28]
shr eax, 0x18
movzx eax, byte [eax + 0x416ba0]
shl eax, 8
xor ecx, eax
mov eax, ebx
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
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 + 0x416ba0]
mov eax, edx
shr eax, 0x18
movzx eax, byte [eax + 0x416ba0]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x18]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
xor ecx, eax
movzx eax, bl
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
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 + 0x416ba0]
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax + 0x416ba0]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x28]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
xor ecx, eax
mov eax, dword [ebp - 0x18]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
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 + 0x416ba0]
mov eax, dword [ebp - 0x18]
shr eax, 0x18
movzx eax, byte [eax + 0x416ba0]
shl eax, 8
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
xor ecx, eax
mov eax, dword [ebp - 0x28]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
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 0x402664
mov edx, dword [ebp - 0x34]
cmp ebx, 0x40
jb 0x402647
lea ecx, [edx - 1]
lea eax, [ebp + ebx - 0x15]
add ecx, ebx
cmp edx, eax
ja 0x4025ca
lea eax, [ebp - 0x14]
cmp ecx, eax
jae 0x402647
lea eax, [ebx - 1]
add eax, esi
cmp edx, eax
ja 0x4025d7
cmp ecx, esi
jae 0x402647
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 0x4025f0
cmp edi, ebx
jae 0x402664
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 0x402652
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.00413d41
mov esp, ebp
pop ebp
ret
cmp ecx, 0x10
jb 0x402700
sub esi, edi
nop word [eax + eax]
movups xmm2, xmmword [ebx]
push eax
mov edx, edi
mov ecx, ebx
call fcn.00401a20
add esp, 4
test eax, eax
jne 0x402f08
mov edx, dword [ebp - 0x40]
lea eax, [edx + 0xf]
cmp edi, eax
ja 0x4026d3
lea eax, [edi + 0xf]
cmp eax, edx
jb 0x4026d3
mov ecx, edi
mov edx, 0x10
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edx, 1
jne 0x4026c0
mov edx, dword [ebp - 0x40]
jmp 0x4026e0
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 0x402690
test ecx, ecx
je 0x402670
movups xmm1, xmmword [ebx]
movups xmmword [ebp - 0x54], xmm1
movups xmmword [ebp - 0x14], xmm1
test edi, edi
je 0x402f08
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, dword [ebp - 0x2c]
shr eax, 0x18
xor ecx, dword [eax*4 + 0x416ca0]
mov eax, dword [ebp - 0x30]
movzx eax, al
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4163a0]
xor ecx, dword [eax*4 + 0x4167a0]
mov eax, dword [ebp - 0x30]
mov esi, ecx
shr eax, 0x18
mov dword [ebp - 0x1c], ecx
xor esi, dword [eax*4 + 0x416ca0]
movzx eax, bl
xor esi, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
mov esi, dword [ebp - 0x18]
movzx eax, al
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, ebx
shr eax, 0x18
shr ebx, 0x10
xor ecx, dword [eax*4 + 0x416ca0]
movzx eax, dl
shr edx, 0x18
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, dword [ebp - 0x2c]
xor ecx, dword [edx*4 + 0x416ca0]
movzx eax, al
xor ecx, dword [eax*4 + 0x417cc8]
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 0x402ac4
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 + 0x4167a0]
mov edx, dword [ebp - 0x1c]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, esi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x416ca0]
movzx eax, dl
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4163a0]
xor ecx, dword [eax*4 + 0x4167a0]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x416ca0]
movzx eax, bl
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
mov ecx, dword [ebp - 0x38]
xor ebx, dword [eax*4 + 0x4163a0]
mov eax, ecx
shr eax, 0x18
shr ecx, 0x10
movzx ecx, cl
xor ebx, dword [eax*4 + 0x416ca0]
mov eax, dword [ebp - 0x28]
movzx eax, al
xor ebx, dword [eax*4 + 0x417cc8]
xor ebx, dword [edi + 8]
movzx eax, dl
mov edx, dword [ecx*4 + 0x4167a0]
xor edx, dword [eax*4 + 0x4163a0]
mov eax, dword [ebp - 0x28]
shr eax, 0x18
xor edx, dword [eax*4 + 0x416ca0]
mov eax, esi
movzx eax, al
mov esi, dword [ebp - 0x24]
xor edx, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, esi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x416ca0]
mov eax, dword [ebp - 0x30]
movzx eax, al
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4163a0]
xor ecx, dword [eax*4 + 0x4167a0]
mov eax, dword [ebp - 0x30]
mov edi, ecx
shr eax, 0x18
mov dword [ebp - 0x1c], ecx
xor edi, dword [eax*4 + 0x416ca0]
movzx eax, bl
xor edi, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, ebx
shr eax, 0x18
shr ebx, 0x10
xor ecx, dword [eax*4 + 0x416ca0]
movzx eax, dl
shr edx, 0x18
xor ecx, dword [eax*4 + 0x417cc8]
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 + 0x4167a0]
xor ecx, dword [eax*4 + 0x4163a0]
mov eax, esi
xor ecx, dword [edx*4 + 0x416ca0]
movzx eax, al
xor ecx, dword [eax*4 + 0x417cc8]
xor ecx, dword [edi + 0x1c]
add edi, 0x20
sub dword [ebp - 0x3c], 1
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x18], edi
jne 0x4028c5
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 + 0x416ba0]
mov eax, dword [ebp - 0x20]
shr eax, 0x18
movzx eax, byte [eax + 0x416ba0]
shl eax, 8
xor ecx, eax
mov eax, ebx
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
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 + 0x416ba0]
mov eax, edx
shr eax, 0x18
movzx eax, byte [eax + 0x416ba0]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x28]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
xor ecx, eax
movzx eax, bl
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
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 + 0x416ba0]
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax + 0x416ba0]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x20]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
xor ecx, eax
mov eax, dword [ebp - 0x28]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
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 + 0x416ba0]
mov eax, dword [ebp - 0x28]
shr eax, 0x18
movzx eax, byte [eax + 0x416ba0]
shl eax, 8
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
xor ecx, eax
mov eax, dword [ebp - 0x20]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x416ba0]
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 0x402d04
mov esi, dword [ebp - 0x40]
cmp ebx, 0x40
jb 0x402ce0
lea eax, [ebx - 1]
lea edx, [ebx - 1]
add eax, esi
add edx, edi
cmp edi, eax
ja 0x402c75
cmp edx, esi
jae 0x402ce0
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 0x402c90
mov edi, dword [ebp - 0x34]
cmp ecx, ebx
jae 0x402d07
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 0x402cf3
mov edi, dword [ebp - 0x34]
mov esi, dword [ebp - 0x40]
cmp ebx, 0x10
jae 0x402d26
mov eax, 0x10
lea ecx, [ebp - 0x14]
sub eax, ebx
lea edx, [edi + ebx]
push eax
add ecx, ebx
push ecx
push edx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movups xmm0, xmmword [ebp - 0x54]
jmp 0x40266d
cmp ecx, 0x10
jb 0x402dc1
lea eax, [esi + 0xf]
cmp edi, eax
ja 0x402d46
lea eax, [edi + 0xf]
cmp eax, esi
jae 0x402d54
lea eax, [ebx + 0xf]
cmp edi, eax
ja 0x402d7d
lea eax, [edi + 0xf]
cmp eax, ebx
jb 0x402d7d
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 0x402d66
mov edi, dword [ebp - 0x34]
jmp 0x402d8a
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.004014c0
add esp, 4
test eax, eax
jne 0x402f08
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 0x402d38
test ecx, ecx
je 0x402667
xor edx, edx
test ecx, ecx
je 0x402ec8
cmp ecx, 0x40
jb 0x402e91
lea eax, [esi - 1]
add eax, ecx
cmp edi, eax
ja 0x402df2
lea eax, [edi - 1]
add eax, ecx
cmp eax, esi
jae 0x402e91
lea eax, [ebx - 1]
add eax, ecx
cmp edi, eax
ja 0x402e08
lea eax, [edi - 1]
add eax, ecx
cmp eax, ebx
jae 0x402e91
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 0x402e30
mov esi, dword [ebp - 0x44]
mov ecx, dword [ebp + 8]
cmp edx, ecx
jae 0x402ec8
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 0x402eb0
mov edi, dword [ebp - 0x34]
mov ecx, dword [ebp + 8]
cmp ecx, 0x10
jae 0x402eee
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 0x402ee0
push dword [ebp - 0x18]
mov edx, edi
mov ecx, edi
call fcn.004014c0
add esp, 4
test eax, eax
jne 0x402f08
mov esi, edi
jmp 0x402667
pop edi
pop esi
mov eax, 0xfffffffd
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00413d41
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.00413d41
mov esp, ebp
pop ebp
ret