Function at 0x405d9d
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
cmp eax, 2
jae 0x405da7
lea esi, [eax + eax*2 - 0x40bfa2c8]
into
clc
jg 0x405de3
xor edi, 0x417f788e
inc ecx
push 0xd54f7e5
mov ecx, 0xd54b6e5
pop edx
xor ecx, edx
xor edi, ecx
mov ebx, 0x1000
mov ecx, 8
xor ebx, ecx
mov edx, 0x700889f0
xor edx, 0x704889d0
xor ebx, edx
xor edi, ebx
mov ebx, edi
push ebx
pop ecx
dec ecx
mov eax, dword [ecx + 1]
mov edi, 0x25c5ccb4
xor edi, 0x49ff9235
mov ecx, 0x2c1a4600
mov edx, 0x40201881
xor ecx, edx
dec dword [ecx - 0x47]
add byte [esi + 0x1a], al
sub al, 0xba
sbb dword [eax], 0xd1314020
xor ecx, edi
mov edi, 0x42022014
mov edx, 0x284050e9
xor edi, edx
mov esi, 0x6842508c
mov ebx, 0x2002071
xor esi, ebx
xor esi, edi
xor ecx, esi
xor edi, edi
add edi, ecx
mov edx, edi
push edx
mov ebx, 0
mov edx, 0
xor ebx, edx
xor ebx, esp
mov ecx, 0
xor ecx, ebx
mov edx, ecx
push edx
mov ecx, 0x20400049
mov edx, 0x9080d84
xor ecx, edx
mov edx, 0x125d02fb
mov edi, 0x12e922e9
xor edi, edx
xor ecx, edi
add esp, 0xfffffffc
mov edx, esp
mov dword [edx], ecx
mov ecx, 0x71e9dbda
xor ecx, 0x4f10584d
mov ebx, 0x12048c08
mov edx, 0x5012200
xor ebx, edx
xor ebx, ecx
pop esi
xor ebx, esi
mov ecx, ebx
mov edx, ecx
mov ecx, 4
sub esp, ecx
mov dword [esp], edx
push 0x2b384275
mov ebx, 0x2b38c875
pop esi
xor ebx, esi
mov esi, 0x409ca96e
mov edx, 0x409cb96e
xor edx, esi
xor ebx, edx
mov esi, 0x20aab587
mov ecx, 0x20aab187
xor ecx, esi
mov esi, 0x4bf8d976
mov edx, 0x4bf8d976
xor edx, esi
xor ecx, edx
xor ebx, ecx
mov esi, 0xfffffffc
add esp, esi
mov edx, 0
xor edx, esp
mov dword [edx], ebx
push 0x23e2d89b
mov ebx, 0x9c37782
pop ecx
xor ebx, ecx
mov ecx, 0x3891c74d
xor ebx, ecx
xor ebx, 0x663e3505
mov ecx, ebx
add esp, 0xfffffffc
mov dword [esp], ecx
push 0x745662c
mov ebx, 0x2f6899f2
pop ecx
xor ebx, ecx
mov edi, 0xbf5aeb1
xor edi, 0x57161c3e
xor edi, ebx
pop esi
xor edi, esi
push edi
pop ebx
mov ecx, 4
sub esp, ecx
mov dword [esp], ebx
call eax
pop ecx
mov ebx, 0x53ba4848
mov eax, 0x4a784848
xor eax, ebx
mov edi, 0x2f804d30
xor edi, 0x2f80b934
xor eax, edi
mov edx, 0x2b5cb82b
mov edi, 0x358cc8bc
xor edi, edx
xor eax, edi
mov esi, 0x7a30d43c
xor eax, esi
xor eax, 0x7d22538a
mov esi, 0x699c4b35
xor esi, 0x2fcbdc32
mov ecx, 0x677f6ce6
xor esi, ecx
mov ebx, 0x64a19886
xor ebx, 0x607233a5
mov ecx, 0x2b201885
xor ebx, ecx
xor ebx, 0xe9b03fa
xor ebx, esi
mov ecx, 0x77fa8265
xor ecx, 0x77ca872b
mov esi, 0x800011
mov edx, 0xd071000
xor esi, edx
xor ecx, esi
mov edx, 0x2e01f29c
mov edi, 0x2706f8e7
xor edi, edx
xor ecx, edi
mov edx, ecx
xor edx, 0xffffffff
and edx, 0x4f093bb
and ecx, 0xfb0f6c44
or ecx, edx
mov edx, 4
mov esi, 0
xor edx, esi
sub esp, edx
mov edx, esp
push edx
pop edi
mov dword [edi], eax
xor esi, esi
add esi, ecx
mov edx, 0x3afe5370
xor edx, 0xc501ac8c
add esp, edx
mov dword [esp], esi
xor eax, eax
mov al, byte [ebx]
add ecx, eax
mov al, byte [ecx]
xor edx, edx
add edx, ecx
add edx, 0
pop ecx
mov byte [ebx], al
dec ebx
pop eax
mov edi, 0x4e228e0a
mov esi, 0x471e5c06
xor esi, edi
mov edx, 0x93cd20d
xor esi, edx
sub eax, esi
cmp eax, 0
jne 0x405fab
mov edi, 0x2c52dd5a
mov edx, 0x4c07283c
xor edx, edi
mov eax, 0x2f39475a
xor edx, eax
xor edx, 0x1dc8b93f
push edx
pop esi
mov edi, 0xffffffff
xor esi, edi
and esi, 0x52e4439a
and edx, 0xad1bbc65
or edx, esi
call edx
pop esi
pop esi
ret