Function at 0x405d88
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 0x405d5b
mov eax, dword [ebp + 0xc]
cmp eax, 2
jge 0x405d51
mov eax, 2
cmp eax, 0x12
jle 0x405d5b
mov eax, 0x12
mov dword [ebp + 0xc], eax
push eax
mov eax, 0x270f
cmp byte [ebp + 0x10], 2
jb 0x405d6d
mov eax, dword [ebp + 8]
push eax
lea eax, [ebp - 0x1c]
call fcn.004062ca
mov edi, dword [ebp - 4]
movzx eax, word [ebp - 0x1c]
sub eax, 0x7fff
cmp eax, 2
jae 0x405d97
lea edi, [ecx + 0x2762119e]
xor ecx, 0x3032b8f3
push ecx
mov edx, 0x20
add byte [eax], al
mov esi, 0x1710b845
xor edx, esi
pop edi
xor edx, edi
mov ebx, 0x8a11a70
mov ecx, 0x31044101
xor ebx, ecx
mov esi, 0x39a59b11
xor ebx, esi
xor edx, ebx
mov esi, edx
mov ecx, esi
mov ebx, 0
xor ebx, ecx
mov esi, 0x43d27bef
mov ecx, 0x43d27bee
xor ecx, esi
sub ebx, ecx
mov eax, dword [ebx + 1]
push 0x6e93e3a0
mov ecx, 0x3b54c4b
pop edx
xor ecx, edx
mov ebx, 0x6d2080e8
mov edx, 0x62f03
xor ebx, edx
xor ebx, ecx
mov ecx, 0x73ba3696
xor ecx, 0x79b8235e
mov edi, 0x6980c2cd
xor edi, 0x6382d705
xor edi, ecx
xor ebx, edi
xor edx, edx
add edx, ebx
mov ecx, 4
sub esp, ecx
mov dword [esp], edx
mov ecx, esp
add esp, 0xfffffffc
mov dword [esp], ecx
pop ebx
mov edi, 0xfffffffc
add esp, edi
mov esi, 0
xor esi, esp
mov dword [esi], ebx
mov ecx, 0x8000040
mov esi, 0x20418c00
xor ecx, esi
push 0x2a8fb151
mov edx, 0x3a9db178
pop esi
xor edx, esi
xor ecx, edx
mov ebx, 0x50024608
mov edx, 0x9200002
xor ebx, edx
xor ecx, ebx
mov edx, 0x79dad573
xor ecx, edx
xor ecx, 0x18ab1f50
push ecx
pop edx
mov esi, edx
push esi
mov edx, 0x512d72c1
xor edx, 0x7d18866a
mov esi, 0x61c06250
xor edx, esi
push 0x5a1672e5
mov edi, 0x6d8d62e8
pop ebx
xor edi, ebx
xor edx, edi
mov esi, edx
xor esi, 0xffffffff
and esi, 0x7a6e12f6
and edx, 0x8591ed09
or edx, esi
mov ecx, edx
mov edi, ecx
add esp, 0xfffffffc
mov dword [esp], edi
mov edx, 0x20c496a0
mov ecx, 0xa561eae
xor ecx, edx
mov edi, 0x30451fbb
xor edi, 0x314d1f4a
xor ecx, edi
mov edx, 0
xor edx, ecx
mov esi, edx
xor esi, 0xffffffff
and esi, 0xffffffff
and edx, 0
or edx, esi
and edx, 0x2bda98ff
and ecx, 0xd4256700
or ecx, edx
mov edx, 0xfffffffc
add esp, edx
push esp
pop ebx
mov dword [ebx], ecx
call eax
pop edi
push 0x1d5f69c1
mov ebx, 0x3d5b71c1
pop edx
xor ebx, edx
push 0x7336fd91
mov edi, 0x23a7b9c9
pop edx
xor edi, edx
xor ebx, edi
mov esi, 0x24810006
mov edi, 0x310b009
xor esi, edi
xor ebx, esi
mov ecx, 0x5704ef72
xor ebx, ecx
push 0x1ff8830c
mov eax, 0x54d9e0aa
pop esi
xor eax, esi
push eax
mov edx, 0x2024c8c
mov esi, 0x18991220
xor edx, esi
pop ecx
xor edx, ecx
mov esi, 0x13ecb406
mov edi, 0x25170ceb
xor edi, esi
mov esi, 0xac091fb
xor edi, esi
xor edi, 0x6dc17179
xor edi, edx
push 0x611815ce
mov edx, 0x1141980
pop esi
xor edx, esi
mov ecx, 0x26dbe79b
xor ecx, 0x24db670a
xor edx, ecx
push 0x3b4686e
mov ecx, 0x51c30290
pop esi
xor ecx, esi
xor edx, ecx
mov eax, 0x5d166421
xor edx, eax
xor edx, 0x6d2dd91a
mov esi, ebx
mov eax, 0x25d9453
mov ecx, 0xfda26baf
xor ecx, eax
add esp, ecx
mov dword [esp], esi
mov ecx, edx
mov esi, ecx
mov eax, esi
mov ecx, 0x37d065bc
xor ecx, 0xc82f9a40
add esp, ecx
mov dword [esp], eax
xor ebx, ebx
mov bl, byte [edi]
add edx, ebx
mov bl, byte [edx]
pop edx
mov byte [edi], bl
mov ecx, 0x13c957e8
xor ecx, 0x930efd9b
push ecx
mov esi, 0x2124abb7
xor esi, 0x5e1cfe3b
pop eax
xor esi, eax
add edi, esi
pop ebx
mov eax, 0x293bcada
xor eax, 0xcd4dc7a6
push eax
mov ecx, 0x800b083
mov eax, 0x13894200
xor ecx, eax
pop esi
xor ecx, esi
add ebx, ecx
test ebx, ebx
jne 0x405f9d
mov edi, 0xb5f7a09
xor edi, 0x158b4862
push edi
mov edi, 0x782024f0
mov esi, 0x769dd99c
xor esi, edi
pop edx
xor esi, edx
mov edi, esi
push edi
mov eax, 0x11ceee73
mov edx, 0x179325f6
xor edx, eax
mov esi, 0xa4f34b3
mov ecx, 0x1c3b5270
xor ecx, esi
xor ecx, edx
pop ebx
xor ecx, ebx
call ecx
pop edx
pop edx
ret