Function at 0x405d92
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]
movzx eax, word [ebp - 0x1c]
sub eax, 0x7fff
mov edx, 0x5b303600
xor edx, 0x5b303608
mov edi, 0x4000
mov ebx, 0x1040
xor edi, ebx
xor edx, edi
mov esi, 0xa980b52
xor esi, 0xaa5a8e9
mov ebx, 0x7d229b
xor esi, ebx
xor edx, esi
mov ebx, 0
mov esi, 0
xor ebx, esi
xor ebx, edx
sub ebx, 0xffffffc9
mov eax, dword [ebx - 0x37]
push 0x42ce13ed
mov esi, 0x419f334f
pop ecx
xor esi, ecx
push 0x2fc2364b
mov edi, 0x2bcca41f
pop edx
xor edi, edx
xor esi, edi
mov ebx, esi
mov ecx, 0xffffffff
xor ebx, ecx
and ebx, 0x75fb2f6
and esi, 0xf8a04d09
or esi, ebx
push esi
pop ebx
mov ecx, ebx
push ecx
mov ebx, esp
mov ecx, 0x747db528
mov edx, 0x8b824ad4
xor edx, ecx
add esp, edx
mov dword [esp], ebx
push 0x41b63bc7
mov edi, 0x6d59ccc4
pop edx
xor edi, edx
mov ebx, edi
xor ebx, 0xffffffff
and ebx, 0x27022017
and edi, 0xd8fddfe8
or edi, ebx
mov ebx, 0x63ddffc5
mov ecx, 0x68302891
xor ecx, ebx
xor edi, ecx
push edi
pop ecx
add esp, 0xfffffffc
mov ebx, esp
mov dword [ebx], ecx
mov edx, 0x68ebac66
xor edx, 0x8fba877
mov ecx, 0x50cdc41d
xor ecx, 0x47c64cbd
xor edx, ecx
push 0x20ccff71
mov ecx, 0x12d8fb33
pop esi
xor ecx, esi
xor edx, ecx
mov ebx, 0x450f16f3
xor edx, ebx
mov ecx, edx
mov ebx, ecx
mov edi, 4
sub esp, edi
mov dword [esp], ebx
mov edx, 0x7eca50a0
mov al, byte [0xb97eca50]
jmp 0x405e20
xchg edi, eax
pop esi
xor ecx, edx
mov edi, 0x11844a
mov edx, 0x200c4001
xor edi, edx
xor edi, ecx
push 0x67a9c2d9
mov ebx, 0x71a3142c
pop esi
xor ebx, esi
mov ecx, ebx
xor ecx, 0xffffffff
and ecx, 0x160ad6f5
and ebx, 0xe9f5290a
or ebx, ecx
xor edi, ebx
mov edx, 0
xor edx, edi
add esp, 0xfffffffc
mov esi, esp
mov dword [esi], edx
call eax
pop esi
push 0x3bc012fd
mov ebx, 0x2da79fdb
pop edi
xor ebx, edi
mov edx, 0x6c293e7e
xor edx, 0x2621f97a
xor edx, ebx
mov esi, 0x1804316
mov ecx, 0x2a06a400
xor esi, ecx
xor edx, esi
mov edi, 0x77e9ae11
xor edx, edi
mov ebx, 0x52dd8714
mov ecx, 0x10c00584
xor ecx, ebx
mov edi, 0x680abb0f
xor edi, 0x6c2abf6f
xor ecx, edi
mov ebx, ecx
add esp, 0xfffffffc
mov dword [esp], ebx
push 0x684a4fa9
mov esi, 0x476791f4
pop edi
xor esi, edi
mov edi, esi
xor edi, 0xffffffff
and edi, 0x69503d01
and esi, 0x96afc2fe
or esi, edi
pop eax
xor esi, eax
mov ecx, 0xa72cae8
mov eax, 0xa724aee
xor eax, ecx
push 0xdb5db26
mov edi, 0xdf5df26
pop ecx
xor edi, ecx
xor eax, edi
mov ecx, 0x5469e898
mov ebx, 0x7621cc49
xor ebx, ecx
mov ecx, 0x48e1a70b
xor ebx, ecx
xor ebx, 0x6aa98b02
xor eax, ebx
mov ebx, edx
push ebx
pop edi
push 0xdf08c8c0
mov ebx, 0x20f7373c
pop ecx
xor ebx, ecx
add esp, ebx
mov dword [esp], edi
mov ebx, 0
mov edi, 4
xor ebx, edi
sub esp, ebx
xor ecx, ecx
add ecx, esp
mov dword [ecx], eax
xor edx, edx
mov dl, byte [esi]
add eax, edx
mov dl, byte [eax]
pop eax
mov byte [esi], dl
mov edi, 0xf8dc1c9
xor edi, 0x5aadd809
push edi
mov ebx, 0x1a32ab0
xor ebx, 0x54833371
pop ecx
xor ebx, ecx
sub esi, ebx
pop edx
dec edx
mov edi, 0
xor edi, edx
add esp, 0xfffffffc
mov ebx, esp
mov dword [ebx], edi
pop ecx
xor ecx, 0
jne 0x405f90
mov eax, 0x67a91756
mov edi, 0x3279a7b1
xor edi, eax
mov ecx, 0x3ab2b58e
xor ecx, 0x720ec94b
xor ecx, edi
mov esi, ecx
mov edx, esi
mov esi, edx
xor esi, 0xffffffff
and esi, 0xffffffff
and edx, 0
or edx, esi
and edx, 0x1d2caeaa
and ecx, 0xe2d35155
or ecx, edx
call ecx
pop eax
pop eax
ret