Function at 0x41773e
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x90
push ebx
push ebp
push esi
push edi
xor eax, eax
mov dword [esp + 0x44], edx
lea edi, [esp + 0x50]
mov ebp, ecx
stosd dword es:[edi], eax
mov esi, 0x800
push esi
mov dword [esp + 0x40], ebp
stosd dword es:[edi], eax
stosd dword es:[edi], eax
call fcn.0040570b
push esi
mov edi, eax
call fcn.0040570b
pop ecx
mov ebx, eax
xor esi, esi
mov dword [esp + 0x50], ebx
pop ecx
test edi, edi
je 0x41794e
test ebx, ebx
je 0x41794e
push 0x400
push edi
mov dword [esp + 0x48], esi
push esi
jmp 0x417936
push 0x5c
pop eax
push dword [esp + 0x44]
mov word [esp + 0x38], ax
xor eax, eax
push ebx
mov word [esp + 0x3e], ax
call fcn.00405dde
lea eax, [esp + 0x3c]
push eax
push ebx
call fcn.00405bcb
push edi
push ebx
call fcn.00405bcb
add esp, 0x18
lea eax, [esp + 0x30]
mov edx, 0x68407afb
push eax
push ebx
push 0x80000001
push 4
pop ecx
call fcn.00412cbc
call eax
test eax, eax
jne 0x417926
mov dword [esp + 0x10], 0xaeb0acb2
mov eax, esi
mov dword [esp + 0x14], 0xa9bfbfbc
mov dword [esp + 0x18], 0xaaacaaad
mov dword [esp + 0x1c], 0xacddaaaa
mov dword [esp + 0x20], 0xbab1b1bb
mov dword [esp + 0x24], 0xa9aaa9a9
mov dword [esp + 0x28], 0xbaabbbad
mov dword [esp + 0x2c], 0xafb0afaf
movq xmm1, qword [esp + eax + 0x10]
xorps xmm0, xmm0
punpcklbw xmm1, xmm0
psubw xmm1, xmmword [0x420f70]
pand xmm1, xmmword [0x420f80]
movups xmmword [esp + eax*2 + 0x5c], xmm1
add eax, 8
cmp eax, 0x20
jl 0x41782a
xor eax, eax
mov word [esp + 0x9c], ax
lea eax, [esp + 0x5c]
push eax
push edi
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
jne 0x4179c9
push 0x200
call fcn.0040570b
mov ebp, eax
pop ecx
test ebp, ebp
je 0x41790f
push 0x100
push ebp
push esi
push dword [esp + 0x3c]
mov edx, 0x1bdd7fb
push 4
pop ecx
call fcn.00412cbc
call eax
test eax, eax
jne 0x417908
mov ebx, esi
lea eax, [esp + 0x38]
mov edx, 0x68407afb
push eax
push ebp
push dword [esp + 0x38]
push 4
pop ecx
call fcn.00412cbc
call eax
test eax, eax
jne 0x4178e5
mov ecx, dword [esp + 0x38]
lea edx, [esp + 0x50]
call fcn.004179d9
push dword [esp + 0x38]
mov edx, 0x76485fc5
push 4
pop ecx
call fcn.00412cbc
call eax
push 0x100
push ebp
inc ebx
mov edx, 0x1bdd7fb
push ebx
push dword [esp + 0x3c]
push 4
pop ecx
call fcn.00412cbc
call eax
test eax, eax
je 0x4178a8
mov ebx, dword [esp + 0x4c]
push ebp
call fcn.004056f0
pop ecx
mov ebp, dword [esp + 0x3c]
push dword [esp + 0x30]
mov edx, 0x76485fc5
push 4
pop ecx
call fcn.00412cbc
call eax
mov eax, dword [esp + 0x40]
push 0x400
inc eax
push edi
mov dword [esp + 0x48], eax
push eax
push ebp
push 4
mov edx, 0x1bdd7fb
pop ecx
call fcn.00412cbc
call eax
test eax, eax
je 0x417798
push ebx
call fcn.004056f0
push edi
call fcn.004056f0
pop ecx
pop ecx
mov ecx, dword [esp + 0x50]
test ecx, ecx
je 0x4179be
mov dword [esp + 0x10], 0x8b838fa7
mov dword [esp + 0x14], 0x90a1cd8e
mov dword [esp + 0x18], 0x8c878687
mov dword [esp + 0x1c], 0x8e838b96
mov dword [esp + 0x20], 0x9a96cc91
mov byte [esp + 0x24], 0x96
mov al, byte [esp + esi + 0x10]
xor al, 0xe2
movzx eax, al
mov word [esp + esi*2 + 0x5c], ax
inc esi
cmp esi, 0x15
jl 0x417991
mov edx, dword [esp + 0x58]
xor eax, eax
mov word [esp + 0x86], ax
lea eax, [esp + 0x5c]
push eax
call fcn.00418de4
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret
mov ecx, dword [esp + 0x30]
mov edx, ebx
call fcn.0041773e
jmp 0x417913