Function at 0x405d8a
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push edi
push esi
push ebx
mov dword [ebp - 4], eax
mov eax, 0x13
cmp cl, 0
jne 0x405d6b
mov eax, dword [ebp + 0xc]
cmp eax, 2
jge 0x405d61
mov eax, 2
cmp eax, 0x12
jle 0x405d6b
mov eax, 0x12
mov dword [ebp + 0xc], eax
push eax
mov eax, 0x270f
cmp byte [ebp + 0x10], 2
jb 0x405d7d
mov eax, dword [ebp + 8]
push eax
lea eax, [ebp - 0x1c]
call fcn.004062da
mov edi, dword [ebp - 4]
punpckhbw mm0, qword [ebp + esi*4 + 6]
add dword [edi + 0x50cb54c], edi
pop ecx
xor edi, ecx
mov ebx, 0x49f6fe87
xor ebx, 0x50f7f292
xor edi, ebx
mov ecx, edi
add esp, 0xfffffffc
mov dword [esp], ecx
mov ecx, 0x4d9df553
xor ecx, 0x19afc84e
push ecx
mov esi, 0xb1ceb43
xor esi, 0x42650b2b
pop ebx
xor esi, ebx
pop edx
xor esi, edx
mov ebx, 0x17865882
mov edi, 0x17865882
xor edi, ebx
xor edi, esi
mov ecx, 0x68
add edi, ecx
mov ebx, 0x2c6ac0de
xor ebx, 0xd3953f21
add edi, ebx
mov eax, dword [edi - 0x67]
push 0x1cad7312
mov esi, 0x42dd0945
pop edi
xor esi, edi
mov ecx, 0x342023d7
xor esi, ecx
xor esi, 0x5c73653c
mov edi, esi
add esp, 0xfffffffc
mov dword [esp], edi
mov edx, 0x6c20fd48
xor edx, 0x5c03ed40
mov ecx, 0x40024b0
mov esi, 0x2000804
xor ecx, esi
xor edx, ecx
pop ebx
xor edx, ebx
mov ecx, 0
xor ecx, edx
mov esi, 0xfffffffc
add esp, esi
mov dword [esp], ecx
xor ebx, ebx
add ebx, esp
mov edi, 4
sub esp, edi
xor esi, esi
add esi, esp
mov dword [esi], ebx
mov ecx, 0x18008004
mov edx, 0x1000421
xor ecx, edx
mov ebx, 0x28185831
xor ebx, 0x28095821
xor ecx, ebx
mov edi, 0x21381e5f
xor edi, 0x38299a2a
xor ecx, edi
mov ebx, 0
xor ebx, ecx
add esp, 0xfffffffc
mov edx, esp
mov dword [edx], ebx
mov esi, 0x1a7d4457
xor esi, 0x3937fc05
mov ebx, esi
xor ebx, 0xffffffff
and ebx, 0xe35e0e9
and esi, 0xf1ca1f16
or esi, ebx
mov ebx, 0x3d375b9d
xor ebx, 0x2b4fa698
xor esi, ebx
mov edi, 0x4c25746c
xor esi, edi
xor esi, 0x77224fd2
xor ebx, ebx
add ebx, esi
mov ecx, ebx
add esp, 0xfffffffc
mov dword [esp], ecx
mov edx, 0x36a000eb
xor edx, 0x54ee8dd0
push 0x6aa80e37
mov ebx, 0x8a6830c
pop esi
xor ebx, esi
xor ebx, edx
mov ecx, 0x72491215
xor ecx, 0x72491215
mov edi, 0x137f72cd
mov edx, 0x137f62cd
xor edx, edi
xor ecx, edx
xor ebx, ecx
push ebx
pop edx
mov esi, edx
push esi
call eax
pop esi
push 0x5883f8fb
mov edx, 0x108fb0fb
pop eax
xor edx, eax
mov edi, 0x1000801a
mov ebx, 0
xor edi, ebx
xor edx, edi
mov eax, edx
push eax
push 0x64e1e0d
mov ebx, 0x42c42505
pop edx
xor ebx, edx
push ebx
mov ecx, 0xf034
mov edx, 0x1c860003
xor ecx, edx
pop eax
xor ecx, eax
pop esi
xor ecx, esi
push 0x1963afb4
mov edx, 0x46b2e6b2
pop edi
xor edx, edi
push edx
push 0x9e28642
mov esi, 0x1c7bbf76
pop edx
xor esi, edx
pop ebx
xor esi, ebx
mov eax, 9
mov edi, 0x40002002
xor eax, edi
push 0x1b35ae85
mov ebx, 0x113db5a1
pop edx
xor ebx, edx
xor eax, ebx
xor eax, esi
mov edi, 0x69eb3e3
xor edi, 0x116c23c7
push edi
mov esi, 0x3e937346
xor esi, 0x1427e488
pop edx
xor esi, edx
mov edi, esi
mov edx, edi
mov edi, 0xffffffff
xor edx, edi
and edx, 0x3d068b47
and esi, 0xc2f974b8
or esi, edx
mov edi, 0
xor edi, ecx
mov edx, edi
xor edi, edi
add edi, edx
mov ebx, 0xfffffffc
add esp, ebx
mov dword [esp], edi
mov edx, esi
push edx
pop ebx
mov edx, 0xd80285d
xor edx, 0xf27fd7a1
add esp, edx
mov dword [esp], ebx
xor ecx, ecx
mov cl, byte [eax]
add esi, ecx
mov cl, byte [esi]
pop esi
mov byte [eax], cl
dec eax
pop ecx
mov ebx, 0x1dd10450
xor ebx, 0x951577c6
push ebx
push 0x113010bc
mov edx, 0x660b9cd5
pop ebx
xor edx, ebx
pop edi
xor edx, edi
add ecx, edx
cmp ecx, 0
jne 0x405fb2
push 0x735456e4
mov eax, 0x31008628
pop edi
xor eax, edi
mov edx, 0x5a022ff6
xor edx, 0x1856bad2
xor edx, eax
mov eax, 0x43be53c3
xor eax, 0x51e5d82b
mov esi, 0x3b051026
xor esi, 0x291e99df
xor esi, eax
xor edx, esi
call edx
pop edi
pop edi
ret