Function at 0x407551
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc4
push ebx
mov dword [ebp - 0x24], ecx
mov edx, 0x401248
mov al, 0x74
push esi
sub al, 0x30
cmp al, 9
ja 0x40757b
inc edx
mov al, byte [edx]
test al, al
jne 0x407566
mov esi, dword [0x44d09c]
jmp 0x407587
mov esi, dword [0x44d2d0]
xor esi, 0xddeb7790
push 0xf
and esi, 0x997090e6
mov dword [ebp - 0x1c], 0x41
pop edx
mov dword [0x44d09c], esi
mov ebx, edx
mov dword [ebp - 0x18], 0x3b
xor eax, eax
mov dword [ebp - 0x14], 0xffffff92
sub ebx, dword [ebp + eax*4 - 0x1c]
inc eax
cmp eax, 3
jl 0x4075af
push 0x1b
mov dword [ebp - 0x2c], ebx
xor eax, eax
pop ecx
mov dword [ebp - 0x1c], 0x62
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], 0xffffff78
add ecx, dword [ebp + eax*4 - 0x1c]
inc eax
cmp eax, 3
jl 0x4075d2
movzx eax, bl
mov dword [ebp - 0x54], ecx
mov dword [ebp - 8], eax
cmp eax, ecx
jge 0x40796c
mov dword [ebp - 0x64], 0x3f
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x5c], 0x51
mov dword [ebp - 0x58], 0xffffff61
movups xmm0, xmmword [ebp - 0x64]
push edi
xorps xmm1, xmm1
psubd xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd ecx, xmm1
cmp cl, bl
jae 0x407953
sub bl, cl
mov dword [ebp - 0x70], 0x39
movzx eax, bl
mov ebx, dword [ebp - 8]
mov dword [ebp - 0x6c], 0x5d
mov dword [ebp - 0x68], 0xffffff96
mov dword [ebp - 0x7c], 0x2a
mov dword [ebp - 0x78], 0x53
mov dword [ebp - 0x74], 0xffffff49
mov dword [ebp - 0x18], 0x60
mov dword [ebp - 0x14], 0xffffff68
mov dword [ebp - 0x88], 0x55
mov dword [ebp - 0x84], 0x4f
mov dword [ebp - 0x80], 0xffffff4c
mov dword [ebp - 0xa4], 0xe
mov dword [ebp - 0xa0], 0x46
mov dword [ebp - 0x9c], 0x4a
mov dword [ebp - 0x98], 0xffffff21
mov dword [ebp - 0xb4], 0x20
mov dword [ebp - 0xb0], 0x60
mov dword [ebp - 0xac], 0x11
mov dword [ebp - 0xa8], 0xffffff7a
mov dword [ebp - 0x28], eax
xor esi, 0x5c5d1fd4
mov ecx, esi
push 0x30
xor ecx, 0xf78cb33a
xor eax, eax
pop edx
sub edx, dword [ebp + eax*4 - 0x70]
inc eax
cmp eax, 3
jl 0x4076f6
push 0x3a
mov dword [ebp - 8], edx
xor eax, eax
pop edx
add edx, dword [ebp + eax*4 - 0x7c]
imul ecx, ecx, 0x7d9ab11
inc eax
cmp eax, 3
jl 0x407708
push 0x39
mov dword [ebp - 0x10], edx
xor eax, eax
mov dword [0x44d2d0], ecx
pop edx
add edx, dword [ebp + eax*4 - 0x18]
inc eax
cmp eax, 2
jl 0x407726
push 0x20
mov dword [ebp - 0xc], edx
xor eax, eax
pop edx
mov dword [ebp - 0x40], 0x54
mov dword [ebp - 0x3c], 0x37
mov dword [ebp - 0x38], 0x4e
mov dword [ebp - 0x34], 0x41
mov dword [ebp - 0x30], 0xffffff02
sub edx, dword [ebp + eax*4 - 0x40]
xor esi, 0x3a89b864
inc eax
cmp eax, 5
jl 0x40775b
push 0x14
mov dword [ebp - 0x20], edx
xor eax, eax
pop edx
add edx, dword [ebp + eax*4 - 0x88]
inc eax
cmp eax, 3
jl 0x407773
push 0x45
mov dword [ebp - 0x48], edx
xor eax, eax
pop edx
add edx, dword [ebp + eax*4 - 0xa4]
and esi, 0xb658dc37
inc eax
cmp eax, 4
jl 0x407788
push 0x6e
mov dword [ebp - 0x50], edx
mov edx, 0x4014d0
pop edi
lea eax, [edi - 0x30]
cmp ax, 9
ja 0x4077be
add edx, 2
movzx eax, word [edx]
mov edi, eax
test ax, ax
jne 0x4077a6
jmp 0x4077ca
imul ecx, esi, 0x51a1a3b4
mov dword [0x44d2d0], ecx
or ecx, 0x70daa856
mov dword [0x44d09c], ecx
call fcn.00403e10
movups xmm0, xmmword [ebp - 0xb4]
mov edi, dword [ebp - 0x24]
xorps xmm1, xmm1
mov esi, dword [0x44d09c]
psubd xmm1, xmm0
mov dword [ebp - 0x44], esi
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add eax, 0xc
mov dword [ebp - 0x4c], eax
mov eax, ebx
imul eax, dword [ebp - 8]
add eax, dword [ebp - 0x10]
mov al, byte [eax + edi]
mov byte [ebp - 1], al
mov eax, dword [ebp - 0xc]
movzx edx, al
mov dword [ebp - 8], edx
cmp edx, dword [ebp - 0x20]
jge 0x407934
and esi, 0x2ee66e91
mov dword [ebp - 0xc4], 0x62
mov dword [ebp - 0xc0], 0x5c
mov dword [ebp - 0xbc], 0x64
mov dword [ebp - 0xb8], 0xffffff0a
movups xmm2, xmmword [ebp - 0xc4]
mov dword [0x44d2d0], esi
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0x94], 0xa
mov dword [ebp - 0x90], 0xf
mov dword [ebp - 0x8c], 0xffffffa8
push 0x2c
pop ecx
push 0x30
pop edx
mov dword [ebp - 0x40], 0x19
xor eax, eax
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x38], 0x37
mov dword [ebp - 0x34], 0x15
mov dword [ebp - 0x30], 0xffffff93
sub ecx, dword [ebp + eax*4 - 0x40]
inc eax
cmp eax, 5
jl 0x4078bb
push 0x40
mov dword [ebp - 0x10], ecx
xor eax, eax
pop edi
add edi, dword [ebp + eax*4 - 0x94]
inc eax
cmp eax, 3
jl 0x4078cd
xorps xmm1, xmm1
mov ecx, ebx
imul ecx, dword [ebp - 0x10]
psubd xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
sub ecx, edi
add ecx, dword [ebp - 8]
paddd xmm1, xmm0
mov edi, dword [ebp - 0x24]
movd eax, xmm1
add eax, edx
mov edx, ebx
imul edx, eax
add edx, dword [ebp - 8]
mov al, byte [edx + edi]
mov byte [ecx + edi], al
mov eax, dword [ebp - 0xc]
inc al
mov dword [ebp - 0xc], eax
movzx eax, al
mov dword [ebp - 8], eax
cmp eax, esi
jl 0x407894
mov esi, dword [ebp - 0x44]
mov cl, byte [ebp - 1]
mov eax, ebx
imul eax, dword [ebp - 0x48]
sub eax, dword [ebp - 0x4c]
add eax, dword [ebp - 0x50]
sub dword [ebp - 0x28], 1
mov byte [eax + edi], cl
jne 0x4076e3
mov ebx, dword [ebp - 0x2c]
movups xmm0, xmmword [ebp - 0x64]
inc bl
movzx eax, bl
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 8], eax
cmp eax, dword [ebp - 0x54]
jl 0x40760a
pop edi
pop esi
pop ebx
leave
ret