Function at 0x408150
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x284
mov eax, dword [0x495574]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x254], ecx
mov dword [ebp - 0x274], eax
push edi
mov edi, edx
mov edx, dword [ebp + 0x14]
mov dword [ebp - 0x26c], edx
cmp esi, 0x400
jbe 0x4081a4
pop edi
pop esi
mov eax, 0xffffff9c
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0044c2a6
mov esp, ebp
pop ebp
ret
lea eax, [ecx - 1]
cmp eax, 2
ja 0x40842a
push 0xa0
lea eax, [edx + 0x120]
mov dword [edx + 0x1c8], ecx
xorps xmm0, xmm0
mov dword [edx + 0x1c4], esi
push 0
mov dword [edx + 0x1c0], 0x10
push eax
movups xmmword [edx], xmm0
mov dword [ebp - 0x270], eax
call fcn.0044e9c0
mov eax, dword [ebp - 0x254]
and eax, 3
mov dword [ebp - 0x254], eax
shl eax, 4
push 0xa0
mov dword [ebp - 0x258], eax
lea eax, [ebp - 0x110]
push 0
push eax
call fcn.0044e9c0
lea eax, [ebp - 0x110]
mov edx, esi
push eax
mov ecx, edi
call fcn.00409530
mov edx, dword [ebp - 0x254]
lea esi, [ebp - 0x110]
mov ecx, 0x28
lea edi, [ebp - 0x250]
rep movsd dword es:[edi], dword [esi]
lea eax, [ebp - 0x250]
mov ecx, ebx
push eax
lea edx, [edx*4 + 4]
call fcn.004095e0
mov esi, dword [ebp - 0x258]
mov eax, 0xcccccccd
add esp, 0x20
lea ecx, [esi + 0x12]
mul ecx
mov eax, edx
shr eax, 4
add eax, 1
mov dword [ebp - 0x268], eax
je 0x4083a7
mov edx, 1
mov dword [ebp - 0x260], 0
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x25c], edx
mov dword [ebp - 0x264], eax
mov eax, edx
mov dword [ebp - 0x1c], 0
shr eax, 0x18
lea esi, [ebp - 0x250]
mov byte [ebp - 0x18], al
lea edi, [ebp - 0x1b0]
mov eax, edx
mov byte [ebp - 0x15], dl
shr eax, 0x10
mov ecx, 0x28
mov byte [ebp - 0x17], al
xorps xmm0, xmm0
mov eax, edx
mov ebx, 0x3e8
shr eax, 8
mov byte [ebp - 0x16], al
mov eax, 4
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebp - 0x1b0]
mov edx, eax
push ecx
lea ecx, [ebp - 0x18]
movups xmmword [ebp - 0x284], xmm0
call fcn.004095e0
lea eax, [ebp - 0x1b0]
mov edx, 0x14
push eax
lea ecx, [ebp - 0x18]
call fcn.004096e0
movups xmm0, xmmword [ebp - 0x18]
add esp, 8
mov eax, 0x10
movups xmm1, xmmword [ebp - 0x284]
pxor xmm1, xmm0
movups xmmword [ebp - 0x2c], xmm1
nop dword [eax]
mov cl, byte [ebp + eax - 0x18]
xor byte [ebp + eax - 0x2c], cl
inc eax
cmp eax, 0x14
jb 0x408320
lea esi, [ebp - 0x110]
mov ecx, 0x28
lea edi, [ebp - 0x1b0]
rep movsd dword es:[edi], dword [esi]
sub ebx, 1
je 0x40834c
movups xmm0, xmmword [ebp - 0x2c]
jmp 0x4082d5
mov esi, dword [ebp - 0x260]
xor edx, edx
mov ebx, dword [ebp - 0x264]
mov ecx, esi
mov edi, dword [ebp - 0x258]
lea eax, [edi + 0x12]
cmp ecx, eax
jae 0x408377
mov al, byte [ebx + ecx]
inc edx
mov byte [ebp + ecx - 0x70], al
inc ecx
cmp edx, 0x14
jb 0x408362
mov edx, dword [ebp - 0x25c]
add esi, 0x14
inc edx
mov dword [ebp - 0x260], esi
sub ebx, 0x14
mov dword [ebp - 0x25c], edx
mov dword [ebp - 0x264], ebx
lea eax, [edx - 1]
cmp eax, dword [ebp - 0x268]
jb 0x408293
mov esi, edi
mov ebx, dword [ebp - 0x254]
mov edx, dword [ebp - 0x26c]
add edx, 0x20
lea eax, [ebx*8 - 8]
cmp eax, 0xf0
ja case.0x4083cb.9
movzx eax, byte [eax + 0x408450]
jmp dword [eax*4 + 0x408440]
lea ecx, [ebp - 0x70]
call fcn.004097e0
jmp case.0x4083cb.9
lea ecx, [ebp - 0x70]
call fcn.00409bb0
jmp case.0x4083cb.9
lea ecx, [ebp - 0x70]
call fcn.00409fb0
push dword [ebp - 0x270]
lea ecx, [ebp - 0x68]
lea edx, [ebx*8 + 8]
lea ecx, [ecx + ebx*8]
call fcn.00409530
mov ecx, dword [ebp - 0x274]
add esp, 4
mov ax, word [ebp + esi - 0x60]
pop edi
pop esi
mov word [ecx], ax
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0044c2a6
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
mov eax, 0xffffff9b
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0044c2a6
mov esp, ebp
pop ebp
ret