Function at 0x405d6c
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 [eax - 0x3b], ebp
aam 0xbb
push esi
mov edx, 0x45df0a87
pop ebx
xor edx, ebx
mov ebx, edx
xor ebx, 0xffffffff
and ebx, 0x1364de6a
and edx, 0xec9b2195
or edx, ebx
mov ebx, 0x22070002
mov ecx, 0x142043ac
xor ebx, ecx
mov edi, 0x1f6508a6
xor edi, 0x29029a48
xor edi, ebx
xor edx, edi
mov ecx, edx
mov ebx, 0
xor ebx, ecx
mov ecx, 0x74
add ebx, ecx
push 0x82149321
mov ecx, 0x7deb6cde
pop esi
xor ecx, esi
add ebx, ecx
mov eax, dword [ebx - 0x73]
mov esi, 0x408256
mov edx, 0x420a3401
xor esi, edx
push esi
mov ecx, 0x7d8b813c
xor ecx, 0x3fc1376b
pop edi
xor ecx, edi
mov ebx, 0
mov edx, 0
xor ebx, edx
mov edi, 0x6e9d9948
xor edi, 0x6e9d9948
xor ebx, edi
xor ecx, ebx
mov esi, 4
sub esp, esi
mov edx, 0
xor edx, esp
mov dword [edx], ecx
mov edx, esp
push 0x75036fa5
mov ebx, 0x75036fa1
pop ecx
xor ebx, ecx
sub esp, ebx
mov dword [esp], edx
push 0x77e018dc
mov edx, 0xf16c86d
pop esi
xor edx, esi
push edx
mov ebx, 0x4dc270b3
xor ebx, 0x240c2665
pop ecx
xor ebx, ecx
xor edi, edi
add edi, ebx
mov esi, edi
xor esi, 0xffffffff
and esi, 0xffffffff
and edi, 0
or edi, esi
and edi, 0x11388627
and ebx, 0xeec779d8
or ebx, edi
push ebx
pop ecx
mov edx, ecx
add esp, 0xfffffffc
mov dword [esp], edx
mov ecx, 0xe8c0f9c
mov edx, 0x775abb26
xor edx, ecx
mov ecx, edx
xor ecx, 0xffffffff
and ecx, 0x7303ffa1
and edx, 0x8cfc005e
or edx, ecx
mov ecx, edx
push ecx
push 0x358f1909
mov edi, 0x371a8c13
pop edx
xor edi, edx
mov ecx, 0x5f630ff6
xor ecx, 0x57234ff7
xor edi, ecx
pop ebx
xor edi, ebx
xor ecx, ecx
add ecx, edi
mov edx, ecx
add esp, 0xfffffffc
mov dword [esp], edx
mov edx, 0x20104904
mov esi, 0x438136c3
xor edx, esi
push edx
push 0x355fc08c
mov ebx, 0x48f43e99
pop edx
xor ebx, edx
pop ecx
xor ebx, ecx
push 0x481d5ab5
mov ecx, 0x5667cb67
pop edx
xor ecx, edx
xor ebx, ecx
mov ecx, 0xfffffffc
add esp, ecx
push esp
pop edi
mov dword [edi], ebx
call eax
pop eax
push 0xd4b62c9
mov edx, 0x776054d8
pop edi
xor edx, edi
mov esi, edx
xor esi, 0xffffffff
and esi, 0x3b1f9477
and edx, 0xc4e06b88
or edx, esi
mov edi, 0x2840168e
mov ecx, 0x7a20140
xor edi, ecx
xor edx, edi
mov esi, edx
xor esi, 0xffffffff
and esi, 0x6ed6b68d
and edx, 0x91294972
or edx, esi
mov ebx, 0x24014100
mov esi, 0x2a08c18
xor ebx, esi
mov esi, ebx
xor esi, 0xffffffff
and esi, 0x1c9f2969
and ebx, 0xe360d696
or ebx, esi
mov eax, 0
xor eax, ebx
mov ecx, 0xffffffff
xor eax, ecx
and eax, 0x3a7e813b
and ebx, 0xc5817ec4
or ebx, eax
mov edi, 0x37313b76
xor edi, 0x3a7225c5
push edi
mov esi, 0x479f7ceb
xor esi, 0x4a9c6e59
pop eax
xor esi, eax
mov eax, 0x2a105ec
xor eax, 0x72cce050
push eax
mov ecx, 0x92bde27
xor ecx, 0x7946bb6d
pop edi
xor ecx, edi
xor esi, ecx
mov eax, 0
mov edi, 0
xor eax, edi
xor eax, edx
mov edi, 0x563b1f46
xor edi, 0xa9c4e0ba
add esp, edi
mov dword [esp], eax
xor edi, edi
add edi, esi
push 0xc64678de
mov eax, 0x39b98722
pop ecx
xor eax, ecx
add esp, eax
mov dword [esp], edi
xor edx, edx
mov dl, byte [ebx]
add esi, edx
mov dl, byte [esi]
mov edi, 0x37b6c57b
xor edi, 0x346f8d37
mov ecx, 0x4001000c
mov eax, 0x108c080
xor ecx, eax
xor ecx, edi
mov eax, 0x7fa18c5a
xor eax, 0xdf6cdc41
xor ecx, eax
test esi, esi
je 0x405fb7
pop esi
mov byte [ebx], dl
mov ecx, 0x5e6c8869
xor ecx, 0x86d03bb
push ecx
push 0x12218bdc
mov eax, 0x4420000f
pop ecx
xor eax, ecx
pop edi
xor eax, edi
sub ebx, eax
pop edx
mov edi, 0x3fc5b2f5
mov ecx, 0x3fc5b2f4
xor ecx, edi
sub edx, ecx
xor ecx, ecx
add ecx, edx
mov edi, 4
sub esp, edi
mov dword [esp], ecx
pop eax
add eax, 0
jne 0x405fb7
mov ecx, 0x1080b804
mov edx, 0x682b4388
xor ecx, edx
mov ebx, 0x3c2018
mov edx, 0x26000241
xor ebx, edx
xor ebx, ecx
mov esi, 0x8800
mov eax, 0x29092199
xor esi, eax
mov eax, 0x77de126a
xor esi, eax
xor esi, ebx
call esi
pop esi
pop esi
ret