Function at 0x40ed00
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x88
mov edx, dword [esp + 0x9c]
mov dword [esp + 8], 0xae764241
mov dword [esp + 0xc], 0x42407c78
lea ebp, [esp + 0x10]
mov byte [esp + 0x10], 0xd8
mov dword [esp + 0x11], 0
mov dword [esp + 0x14], 0
xor eax, eax
xor ecx, ecx
nop
nop
movzx esi, byte [esp + ecx + 8]
mov edi, ecx
xor edi, 0x59bba6a8
mov ebx, eax
and ebx, 0xe
sub ebx, edi
xor ebx, esi
mov esi, ebx
and esi, 0x1d
xor ebx, 0x9d
lea ebx, [ebx + esi*2]
add bl, 0xe5
mov byte [esp + ecx + 8], bl
inc ecx
add eax, 2
cmp ecx, 0x10
jne 0x40ed40
lea eax, [esp + 0x7f]
lea esi, [esp + 8]
mov ebx, esi
mov ecx, 2
mov edi, eax
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x87]
xor ebx, ebx
xor ecx, ecx
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
movzx ecx, byte [esp + 0x10]
mov byte [esp + 0x87], cl
mov dword [esp + 8], 0x79eb7b41
mov dword [esp + 0xc], 0x7dea7fea
mov dword [esp + 0x10], 0x71e073e7
mov dword [esp + 0x14], 0x752577e4
mov dword [esp + 0x18], 0x69e56bc0
mov dword [esp + 0x1c], 0x6df56ff8
mov dword [esp + 0x20], 0x61026322
mov dword [esp + 0x24], 0x65f667c7
mov dword [esp + 0x28], 0x59c65bf4
mov dword [esp + 0x2c], 0x5dfb5fc7
mov dword [esp + 0x30], 0x51c653fb
mov dword [esp + 0x34], 0x55c757cf
mov dword [esp + 0x38], 0x491b4bc6
mov dword [esp + 0x3c], 0x4d1d4fc0
mov dword [esp + 0x40], 0x41cb43c5
mov dword [esp + 0x44], 0x451547c9
mov dword [esp + 0x48], 0xb92bbbde
mov dword [esp + 0x4c], 0xbd2dbf2e
mov dword [esp + 0x50], 0xb139b3ef
mov dword [esp + 0x54], 0xb52ab726
mov dword [esp + 0x58], 0xa938ab2f
mov dword [esp + 0x5c], 0xad3faf0d
mov dword [esp + 0x60], 0xa139a308
mov dword [esp + 0x64], 0xa5d5a704
mov dword [esp + 0x68], 0x999a9bda
movzx ecx, byte [esp + 8]
xor cl, 0x19
add cl, 0xc5
mov byte [esp + 8], cl
mov dword [esp + 0x6c], 0xf353f187
mov dword [esp + 0x70], 0xff57fd4c
mov word [esp + 0x74], 0xf9f8
mov dword [esp + 0x76], 0
mov word [esp + 0x7a], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, ebx
add cl, 0x54
xor cl, byte [esp + ebx + 0x6c]
add cl, 0x5c
mov byte [esp + ebx + 0x6c], cl
inc ebx
cmp ebx, 0x10
jne 0x40eeb0
lea ecx, [esp + 4]
lea edi, [esp + 0x6c]
push 0
push ecx
push 8
push eax
push esi
push edi
push edx
call fcn.0040f820
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40f159
mov word [esp + 8], 0xa29f
mov byte [esp + 0xa], 0xa
mov word [esp + 0xb], 0
nop
nop
nop
nop
movzx ecx, byte [esp + ebx + 8]
lea eax, [ebx + ebx]
mov edx, eax
and edx, 8
mov edi, ebx
xor edi, 0x38a9333c
lea ebp, [edi + edx]
lea esi, [edi + edx]
add esi, 0xe4138856
mov edi, 0x8df63c29
sub edi, ebp
and edi, 0x75
mov edx, esi
and edx, 0xa
or edx, edi
xor edx, 0xa
mov edi, 0x8df63ca9
sub edi, ebp
and edi, edx
or esi, ecx
not ecx
or ecx, edi
and ecx, esi
add cl, 0x60
mov byte [esp + ebx + 8], cl
and eax, 2
xor ebx, 1
add ebx, eax
cmp ebx, 5
jb 0x40ef00
xor eax, eax
mov esi, dword [esp + 4]
movzx ecx, byte [esi + eax]
movzx edx, byte [esp + eax + 8]
test cl, cl
je 0x40ef72
inc eax
cmp cl, dl
je 0x40ef60
mov bl, 1
cmp cl, dl
je 0x40f150
mov dword [esp + 8], 0xebf9e4f7
mov dword [esp + 0xc], 0x53e0e6fd
mov eax, 0x9dffc772
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x62003896]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x5a
mov byte [esp + eax + 0x62003896], cl
inc eax
cmp eax, 0x9dffc77a
jne 0x40efa0
movzx eax, byte [esp + 8]
mov ecx, esi
test al, al
je 0x40f007
lea edx, [esp + 8]
mov ebp, esi
mov ecx, esi
jmp 0x40efe7
movzx eax, byte [edx]
test al, al
je 0x40f007
mov ah, byte [ebp]
test ah, ah
je 0x40f084
inc ebp
inc edx
lea edi, [ecx + 1]
cmp ah, al
je 0x40efff
mov ecx, edi
mov ebp, edi
je 0x40efe0
lea edx, [esp + 8]
jmp 0x40efe0
test ecx, ecx
je 0x40f084
mov dword [esp + 9], 0xcbf2f9f4
mov dword [esp + 0xd], 0xf589f939
mov dword [esp + 0x11], 0x8a213cf6
mov dword [esp + 0x15], 0xe796eae0
mov word [esp + 0x19], 0x24d8
mov byte [esp + 0x1b], 0x19
mov word [esp + 0x1c], 0
mov byte [esp + 8], 0xbe
lea edx, [esp + 8]
mov al, 0xbe
mov ecx, esi
mov esi, edx
mov edi, ecx
mov dword [esp], ecx
jmp 0x40f067
movzx eax, byte [esi]
test al, al
je 0x40f08b
mov ah, byte [edi]
test ah, ah
je 0x40f14b
inc edi
inc esi
lea ebp, [ecx + 1]
cmp ah, al
je 0x40f07e
mov ecx, ebp
mov edi, ebp
je 0x40f060
mov esi, edx
jmp 0x40f060
xor ebx, ebx
jmp 0x40f150
test ecx, ecx
je 0x40f14b
mov esi, ecx
mov word [esp + 8], 0x6942
mov byte [esp + 0xa], 0x2a
mov dword [esp + 0xb], 0
mov byte [esp + 0xf], 0
mov eax, 0x73727287
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x7372727f]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x5d
mov byte [esp + eax - 0x7372727f], cl
inc eax
cmp eax, 0x7372728f
jne 0x40f0c0
mov ecx, esi
add ecx, 0x13
movzx edx, byte [esp + 8]
test dl, dl
je 0x40f122
lea edi, [esp + 8]
mov eax, ecx
mov esi, ecx
jmp 0x40f107
movzx edx, byte [edi]
test dl, dl
je 0x40f126
mov dh, byte [eax]
test dh, dh
je 0x40f14b
inc eax
inc edi
lea ebp, [esi + 1]
cmp dh, dl
je 0x40f11a
mov esi, ebp
mov eax, ebp
je 0x40f100
lea edi, [esp + 8]
jmp 0x40f100
mov esi, ecx
jmp 0x40f12a
test esi, esi
je 0x40f14b
mov byte [0x447c54], 1
push esi
push ecx
push 0x100
push 0x447c56
call fcn.0040ea90
add esp, 0x10
mov esi, dword [esp + 4]
jmp 0x40f150
xor ebx, ebx
mov esi, dword [esp]
push esi
call fcn.00436f60
add esp, 4
mov eax, ebx
add esp, 0x88
pop esi
pop edi
pop ebx
pop ebp
ret