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]
btr dword [edi - 0x2e], 0x84
and eax, 0xf1edf281
pop edi
add edx, dword [edx - 0x47]
inc ecx
or dword [eax + 0x2888ba40], 0xd1310e52
pop esi
xor ecx, esi
mov edx, ecx
push edx
push 0x42fbea71
mov edx, 0x70fd3249
pop esi
xor edx, esi
push edx
mov edx, 0x2525726f
mov ebx, 0x7f62f16c
xor ebx, edx
pop ecx
xor ebx, ecx
pop edi
xor ebx, edi
mov esi, ebx
mov edi, 0x65ca7b2b
xor edi, 0x65ca7b70
sub esi, edi
mov ecx, 0x504f15a1
xor ecx, 0xafb0ea5e
add esi, ecx
mov eax, dword [esi + 0x5c]
mov ecx, 0x48253820
mov edi, 0x24408090
xor ecx, edi
push ecx
mov ecx, 0x495ee386
mov edx, 0x698bcf51
xor edx, ecx
pop esi
xor edx, esi
mov ecx, 0x15ebd079
mov ebx, 0x595b441e
xor ebx, ecx
xor edx, ebx
mov ebx, 4
sub esp, ebx
mov esi, 0
xor esi, esp
mov dword [esi], edx
xor esi, esi
add esi, esp
mov ecx, 0xa4b5a52
mov ebx, 0xa4b5a56
xor ebx, ecx
sub esp, ebx
mov dword [esp], esi
mov esi, 0x69a84eb8
xor esi, 0x3d904f9d
mov ebx, 0x48a336dd
xor esi, ebx
add esp, 0xfffffffc
mov ebx, esp
mov dword [ebx], esi
mov edx, 0x219120
mov esi, 0x10924601
xor edx, esi
mov ebx, 0x6fb5bf4b
xor edx, ebx
xor edx, 0x639d5fd2
pop edi
xor edx, edi
push edx
pop esi
mov ebx, esi
add esp, 0xfffffffc
mov dword [esp], ebx
mov ebx, 0x19721168
xor ebx, 0x508ebc64
mov ecx, 0x7d028c15
mov edi, 0x34feb319
xor edi, ecx
xor edi, ebx
push 0x2e284466
mov esi, 0x2e284066
pop ecx
xor esi, ecx
mov ebx, 0x800
mov ecx, 0
xor ebx, ecx
xor esi, ebx
xor edi, esi
mov ebx, 0
xor ebx, edi
mov ecx, 0xfffffffc
add esp, ecx
mov dword [esp], ebx
mov ebx, 0x75291317
xor ebx, 0x50d0fe49
push ebx
mov edx, 0x4009b00
mov ebx, 0x25f40b2
xor edx, ebx
pop edi
xor edx, edi
add esp, 0xfffffffc
mov ebx, esp
mov dword [ebx], edx
mov ebx, 0x9026508
mov edx, 0x200220
xor ebx, edx
push ebx
mov ecx, 0x40dec408
xor ecx, 0x6a1a85cc
pop edi
xor ecx, edi
pop esi
xor ecx, esi
mov edx, 0
xor edx, ecx
mov edi, 4
sub esp, edi
mov dword [esp], edx
call eax
pop ecx
push 0x243aa22d
mov edi, 0x677891ea
pop eax
xor edi, eax
push edi
mov edi, 0x619f9ce
mov esi, 0x4faeba22
xor esi, edi
pop ecx
xor esi, ecx
add esp, 0xfffffffc
mov edi, esp
mov dword [edi], esi
mov edi, 0x591cf6a4
mov edx, 0x594cc7a2
xor edx, edi
mov ecx, 0x74f8209f
xor ecx, 0x7e5d6297
xor edx, ecx
pop ebx
xor edx, ebx
mov ebx, 0x6a927769
mov ecx, 0x4e823162
xor ecx, ebx
mov ebx, 0x35825cd1
mov eax, 0x3e0aed41
xor eax, ebx
xor ecx, eax
mov ebx, ecx
push ebx
push 0x16503bbe
mov esi, 0x563e4478
pop ecx
xor esi, ecx
mov eax, 0x6fb6c3e0
xor esi, eax
pop edi
xor esi, edi
mov ebx, 0x218209
mov eax, 0x79000c00
xor ebx, eax
mov ecx, 0x2060
mov eax, 0x48e0000
xor ecx, eax
xor ebx, ecx
mov ecx, 0x2613c807
xor ecx, 0x6da4ad63
push ecx
push 0x4deca618
mov edi, 0x7bb4e1f6
pop ecx
xor edi, ecx
pop eax
xor edi, eax
xor edi, ebx
mov ebx, 0
xor ebx, edx
mov eax, 0
xor eax, ebx
mov ebx, 0xfffffffc
add esp, ebx
mov dword [esp], eax
mov ebx, 0
xor ebx, edi
mov eax, 0
xor eax, ebx
xor ebx, ebx
add ebx, eax
add esp, 0xfffffffc
mov ecx, esp
mov dword [ecx], ebx
xor edx, edx
mov dl, byte [esi]
add edi, edx
mov dl, byte [edi]
pop edi
mov byte [esi], dl
mov ebx, 0x1a68f33a
xor ebx, 0x618b32cd
mov ecx, 0x673b3ddd
mov eax, 0xe32703d5
xor eax, ecx
xor eax, ebx
add esi, eax
pop edx
mov eax, 0x2ea49cc1
xor eax, 0x2ea49cc1
mov ebx, 0x4b1fe0f4
xor ebx, 0x4b1fe0f5
xor eax, ebx
sub edx, eax
cmp edx, 0
jne 0x405fbc
mov esi, 0x10000510
mov ebx, 0x48140200
xor esi, ebx
mov ecx, 0x2d47c7b7
xor esi, ecx
add esp, 0xfffffffc
mov edx, esp
mov dword [edx], esi
push 0x25405f3b
mov edx, 0x76f1a48d
pop ecx
xor edx, ecx
push edx
mov edi, 0x24223000
mov ecx, 0x2804388
xor edi, ecx
pop ebx
xor edi, ebx
pop eax
xor edi, eax
call edi
pop esi
pop esi
ret