Function at 0x405d89
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]
mov esi, 0x22288000
mov edi, 0xc15250e
xor esi, edi
mov ecx, 0x20292406
mov ebx, 0xe140108
xor ecx, ebx
xor ecx, esi
push 0x2bb03c08
mov edx, 0x2bf02d08
pop esi
xor edx, esi
mov edi, 0x4060
mov ebx, 8
xor edi, ebx
xor edx, edi
xor ecx, edx
mov ebx, ecx
push ebx
pop edx
sub edx, 2
mov eax, dword [edx + 2]
mov ecx, 0x40140401
mov esi, 0x5c16224
xor ecx, esi
mov ebx, 0x45d56625
xor ecx, ebx
mov ebx, 0x4867b6d0
mov edx, 0x30b9efb9
xor edx, ebx
mov esi, 0x78de5969
xor edx, esi
xor ecx, edx
add esp, 0xfffffffc
mov ebx, esp
mov dword [ebx], ecx
push esp
pop ecx
xor ebx, ebx
add ebx, ecx
mov esi, 0
xor esi, ebx
add esp, 0xfffffffc
mov dword [esp], esi
mov ecx, 0x44048000
mov edx, 0x28620259
xor ecx, edx
mov ebx, 0x42332480
mov edx, 0x9800125
xor ebx, edx
xor ebx, ecx
mov edx, 0x2a52afc3
mov ecx, 0xd87087f
xor ecx, edx
xor ebx, ecx
xor ecx, ecx
add ecx, ebx
mov edx, ecx
push edx
mov ecx, 0x2f42e25
xor ecx, 0x62d4ada0
mov edi, 0x10f905e
mov esi, 0x141fd024
xor esi, edi
xor ecx, esi
mov edi, ecx
push edi
mov esi, 0x2be53a
xor esi, 0x506f66cd
mov ecx, 0xe0367de
mov edx, 0x2b77b9d6
xor edx, ecx
xor edx, esi
pop ebx
xor edx, ebx
mov esi, 0xfffffffc
add esp, esi
push esp
pop ecx
mov dword [ecx], edx
mov edx, 0x3c6f893d
mov ebx, 0x6c641a92
xor ebx, edx
mov esi, ebx
xor esi, 0xffffffff
and esi, 0x39e9f15b
and ebx, 0xc6160ea4
or ebx, esi
mov edx, ebx
add esp, 0xfffffffc
mov dword [esp], edx
push 0x548cc461
mov ecx, 0x3c2ea661
pop esi
xor ecx, esi
push 0x482c855e
mov ebx, 0x492c95aa
pop edx
xor ebx, edx
xor ecx, ebx
pop edi
xor ecx, edi
mov edx, ecx
mov esi, 0xfffffffc
add esp, esi
mov dword [esp], edx
call eax
pop edx
mov edi, 0x6efd686e
xor edi, 0x213d2391
push edi
mov edi, 0x2686be80
mov eax, 0x6946f75f
xor eax, edi
pop edx
xor eax, edx
push 0x7c01e2a0
mov ecx, 0x2dd7e63b
pop edi
xor ecx, edi
mov esi, 0x54b53e82
xor ecx, esi
xor ecx, 0x5633b1c
xor eax, ecx
mov edx, 0x7036db93
xor edx, 0x44390cbd
push edx
push 0xe50a06d
mov ebx, 0x3a1f7d53
pop edx
xor ebx, edx
pop ecx
xor ebx, ecx
push 0x3cd2b4e3
mov edx, 0xefed552
pop esi
xor edx, esi
push edx
push 0x648ee241
mov edi, 0x56a2c395
pop edx
xor edi, edx
pop ecx
xor edi, ecx
xor ebx, edi
mov edi, 0x16218280
mov ecx, 0x104012e
xor edi, ecx
mov ecx, edi
xor ecx, 0xffffffff
and ecx, 0x5061f725
and edi, 0xaf9e08da
or edi, ecx
mov ecx, 0x199093ee
xor ecx, 0x5e946bb7
xor edi, ecx
add esp, 0xfffffffc
mov edx, esp
mov dword [edx], eax
pop ecx
mov edx, 0
xor edx, ecx
mov esi, edx
add esp, 0xfffffffc
mov dword [esp], esi
push 0x193ece46
mov edx, 0x193ece46
pop ecx
xor edx, ecx
xor edx, edi
mov ecx, 4
sub esp, ecx
push esp
pop esi
mov dword [esi], edx
xor eax, eax
mov al, byte [ebx]
add edi, eax
mov al, byte [edi]
pop edi
mov byte [ebx], al
mov edx, 0x404c7718
xor edx, 0x72de69ff
mov ecx, 0x6ef4cb73
xor ecx, 0xa3992a6b
xor ecx, edx
add ebx, ecx
pop eax
mov edx, 0x52530baf
xor edx, 0x6bd7bf24
push edx
mov ecx, 0x4808a
mov edx, 0x39803400
xor ecx, edx
pop esi
xor ecx, esi
sub eax, ecx
xor edx, edx
add edx, eax
add edx, eax
jne 0x405f78
push 0x3a9a29d9
mov edi, 0x3fdf276a
pop esi
xor edi, esi
push edi
mov ebx, 0x9a2f14c
mov esi, 0x64c0020
xor ebx, esi
pop eax
xor ebx, eax
mov edi, ebx
push edi
push 0x783bcca6
mov edx, 0x70314424
pop esi
xor edx, esi
mov ebx, 0x2e13000
mov esi, 0xc
xor ebx, esi
xor edx, ebx
pop ecx
xor edx, ecx
call edx
pop esi
pop esi
ret