Function at 0x405d81
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]
mov ebx, 0x67eb2f9b
mov esi, 0x67ab2fdb
xor esi, ebx
mov edi, 0x4c2adc4a
xor edi, 0x4c2adc62
xor esi, edi
push 0x36841eea
mov ecx, 0x36841eea
pop edx
xor ecx, edx
push 0x777903cd
mov ebx, 0x7779d2cd
pop edx
xor ebx, edx
xor ecx, ebx
xor esi, ecx
mov ebx, 0
xor ebx, esi
xor edi, edi
add edi, ebx
mov ebx, 0x4883751f
xor ebx, 0x4883757e
sub edi, ebx
mov ebx, 1
mov ecx, 0
xor ebx, ecx
sub edi, ebx
mov eax, dword [edi + 0x62]
mov ecx, 0xd6ed85c
mov ebx, 0x50a66426
xor ebx, ecx
mov ecx, 0x5dc8bc7a
xor ebx, ecx
mov edx, 0x7fd74ed3
mov edi, 0x7fd74ed3
xor edi, edx
mov edx, 0x6e66c392
mov ecx, 0x6e66c392
xor ecx, edx
xor edi, ecx
xor ebx, edi
mov ecx, ebx
mov edx, 0xfffffffc
add esp, edx
mov dword [esp], ecx
xor esi, esi
add esi, esp
push esi
pop edx
mov ebx, 0
xor ebx, edx
mov esi, ebx
push esi
mov ebx, 0x5c5ab2e8
xor ebx, 0x5852fead
push 0x7cc6acd6
mov edx, 0x5d2bdd4
pop ecx
xor edx, ecx
xor ebx, edx
add esp, 0xfffffffc
mov ecx, esp
mov dword [ecx], ebx
mov ecx, 0x26d58ff
xor ecx, 0x22e8ca7b
mov esi, 0x7399f302
xor esi, 0x2e003c81
xor esi, ecx
pop edi
xor esi, edi
mov ebx, 0xfffffffc
add esp, ebx
mov ecx, esp
mov dword [ecx], esi
mov esi, 0x164b41bd
xor esi, 0x1b98fb57
push esi
mov edi, 0x5166c983
xor edi, 0x459ad9b2
pop edx
xor edi, edx
add esp, 0xfffffffc
mov esi, esp
mov dword [esi], edi
push 0x290f42d
mov edi, 0x620f893e
pop esi
xor edi, esi
push edi
mov ecx, 0x41081535
xor ecx, 0x38b85cfd
pop edx
xor ecx, edx
pop ebx
xor ecx, ebx
mov esi, 0xfffffffc
add esp, esi
mov edx, 0
xor edx, esp
mov dword [edx], ecx
push 0x3d984940
mov ecx, 0x2a8eedc8
pop edx
xor ecx, edx
push ecx
mov edi, 0x456de2a3
xor edi, 0x6659d209
pop ebx
xor edi, ebx
mov ecx, 0x63d03000
mov esi, 0x102e0400
xor ecx, esi
xor edi, ecx
mov ebx, edi
xor ebx, 0xffffffff
and ebx, 0x479cb022
and edi, 0xb8634fdd
or edi, ebx
mov ebx, 0xfffffffc
add esp, ebx
xor ecx, ecx
add ecx, esp
mov dword [ecx], edi
call eax
pop edi
push 0x12879f72
mov eax, 0x407b7da5
pop esi
xor eax, esi
push eax
mov esi, 0x728ce93
mov ebx, 0x55d42c44
xor ebx, esi
pop edx
xor ebx, edx
push 0x1f7ed45c
mov ecx, 0x38d55a2a
pop edi
xor ecx, edi
mov edx, 0x1110e79c
xor ecx, edx
xor ecx, 0x36bb6acf
xor ebx, ecx
push 0x356902ac
mov edx, 0x4de74581
pop edi
xor edx, edi
push edx
mov ecx, 0x126a74c7
xor ecx, 0x67de017c
pop esi
xor ecx, esi
mov esi, 0x3e0448a8
mov edx, 0x269c731f
xor edx, esi
push 0x2b5f9e54
mov eax, 0x3ebddc94
pop esi
xor eax, esi
xor eax, edx
xor eax, ecx
mov edx, 0x501bb3ce
mov ecx, 0x505b334f
xor ecx, edx
push 0x70360420
mov edi, 0x70360c60
pop edx
xor edi, edx
xor ecx, edi
mov edi, 0x66b80eb7
xor edi, 0x372207d8
push edi
mov edi, 0x1b09a5e7
mov esi, 0x4a93a88c
xor esi, edi
pop edx
xor esi, edx
xor ecx, esi
mov esi, 0
xor esi, ebx
push esi
pop edx
mov esi, 4
mov edi, 0
xor esi, edi
sub esp, esi
mov dword [esp], edx
push 0x169aeff2
mov esi, 0x169aeff6
pop edi
xor esi, edi
sub esp, esi
mov edx, esp
mov dword [edx], ecx
xor ebx, ebx
mov bl, byte [eax]
add ecx, ebx
mov bl, byte [ecx]
mov esi, 0x24c1bc6c
xor esi, 0x8e47bf71
push esi
push 0x42bc2e82
mov edx, 0xd3f1348
pop esi
xor edx, esi
pop edi
xor edx, edi
mov edi, ecx
add esp, 0xfffffffc
mov dword [esp], edi
pop esi
sub esi, 0
je 0x405fbd
pop ecx
mov byte [eax], bl
mov edx, 0x10dd402
mov esi, 0x2009c4
xor edx, esi
mov esi, 0x12dddc7
xor edx, esi
sub eax, edx
pop ebx
push 0x3d06976e
mov edx, 0x7207cf40
pop esi
xor edx, esi
mov edi, 0xb0ca131d
xor edx, edi
xor edx, 0x34b4cc
add ebx, edx
xor edx, edx
add edx, ebx
xor edi, edi
add edi, edx
or edi, 0
jne 0x405fbd
mov edi, 0x56186cf8
xor edi, 0x6029b59d
mov eax, edi
xor eax, 0xffffffff
and eax, 0x456603bf
and edi, 0xba99fc40
or edi, eax
mov eax, 0x16e74cea
xor eax, 0xea6db9f
xor edi, eax
mov ebx, edi
xor ebx, 0xffffffff
and ebx, 0x6b560512
and edi, 0x94a9faed
or edi, ebx
call edi
pop edx
pop edx
ret