Function at 0x40efc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov dword [esp + 0xc], 0x5e0a3a3f
mov dword [esp + 0x10], 0x3234080c
lea ebx, [esp + 0x14]
mov byte [esp + 0x14], 0x94
mov dword [esp + 0x15], 0
mov dword [esp + 0x18], 0
mov eax, 0xe563e9e5
mov ecx, 0x958fa794
mov esi, 0x6a70586c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x1a9c1627]
mov edx, eax
and edx, edi
add edx, edx
mov ebp, edx
sub ebp, edi
add ebp, ecx
or ebp, 1
add ebp, edi
sub edi, edx
add edi, eax
sub ebp, edx
add ebp, esi
xor edi, 1
lea edx, [edi + ebp*2]
add dl, 0x86
mov byte [esp + eax + 0x1a9c1627], dl
inc eax
dec ecx
inc esi
cmp eax, 0xe563e9f5
jne 0x40f010
lea edi, [esp + 0x77]
lea eax, [esp + 0xc]
mov ecx, 2
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x7f]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx eax, byte [esp + 0x14]
mov byte [esp + 0x7f], al
mov dword [esp + 0xc], 0x51ff4f09
mov dword [esp + 0x10], 0x55e653fe
mov dword [esp + 0x14], 0x59f857f3
mov dword [esp + 0x18], 0x5d355bec
mov dword [esp + 0x1c], 0xa1e55f08
mov dword [esp + 0x20], 0xa505a310
mov dword [esp + 0x24], 0xa9c6a7de
mov dword [esp + 0x28], 0xad1aab0b
mov dword [esp + 0x2c], 0xb102af1c
mov dword [esp + 0x30], 0xb517b31b
mov dword [esp + 0x34], 0xb902b717
mov dword [esp + 0x38], 0xbd0bbb13
mov dword [esp + 0x3c], 0x81cfbf12
mov dword [esp + 0x40], 0x85ed8338
mov dword [esp + 0x44], 0x893f873d
mov dword [esp + 0x48], 0x8de58b31
mov dword [esp + 0x4c], 0x913f8f2a
mov dword [esp + 0x50], 0x953d9322
mov dword [esp + 0x54], 0x992197fb
mov dword [esp + 0x58], 0x9d369b2a
mov dword [esp + 0x5c], 0xe1309f3b
mov dword [esp + 0x60], 0xe553e345
mov dword [esp + 0x64], 0xe941e740
mov dword [esp + 0x68], 0xede5eb4c
mov dword [esp + 0x6c], 0xf1eeefe6
mov word [esp + 0x70], 0
mov ecx, 0xb50f68ed
mov edi, 0x4af09712
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x4af0971f]
mov eax, ecx
and eax, edx
add eax, eax
mov ebx, edx
sub ebx, eax
add ebx, ecx
or ebx, edi
lea eax, [edx + ebx*2]
lea ebp, [ecx + eax]
add eax, ecx
add eax, 2
mov esi, eax
xor esi, 0x21
or eax, 0x5e
and eax, esi
lea esi, [ebp*2 + 4]
add bl, bl
add bl, dl
add al, al
add al, bl
mov edx, esi
and dl, 0xbc
sub al, dl
movzx eax, al
add eax, ecx
add al, 0x61
mov byte [esp + ecx + 0x4af0971f], al
inc ecx
dec edi
cmp ecx, 0xb50f6953
jne 0x40f150
mov dword [esp + 0x80], 0xc165c715
mov dword [esp + 0x84], 0xcd69c350
mov dword [esp + 0x88], 0xcfcc
mov byte [esp + 0x8c], 0
mov ecx, 0xb1
mov edx, 0x4e
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x31]
mov eax, edx
xor eax, ecx
and eax, esi
xor eax, ecx
add al, 0x8b
mov byte [esp + ecx - 0x31], al
inc ecx
dec edx
cmp ecx, 0xbe
jne 0x40f1e0
lea eax, [esp + 8]
lea ecx, [esp + 0x80]
push 0
push eax
push 8
lea eax, [esp + 0x83]
push eax
lea eax, [esp + 0x1c]
push eax
push ecx
push dword [esp + 0xbc]
call fcn.0040ff30
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40f539
mov word [esp + 0xc], 0x3e3d
mov byte [esp + 0xe], 0x8a
mov word [esp + 0xf], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x23
xor al, byte [esp + ebx + 0xc]
add al, 0x51
mov byte [esp + ebx + 0xc], al
inc ebx
cmp ebx, 5
jne 0x40f250
xor ecx, ecx
mov ebp, dword [esp + 8]
nop
nop
nop
nop
nop
nop
movsx eax, byte [ebp + ecx]
movzx edx, byte [esp + ecx + 0xc]
test eax, eax
je 0x40f283
inc ecx
cmp al, dl
je 0x40f270
movsx ecx, dl
mov edx, ecx
xor edx, eax
not ecx
and ecx, eax
add ecx, ecx
mov bl, 1
cmp ecx, edx
je 0x40f530
mov dword [esp + 0xc], 0x455b5849
mov dword [esp + 0x10], 0xf54c424b
mov word [esp + 0x14], 0
mov ecx, 0x8bccc655
mov eax, 0x743339aa
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x743339b7]
mov esi, eax
and esi, 0x44002188
mov edi, ecx
and edi, 0x8100c677
or edi, esi
xor edi, edx
mov edx, edi
and edx, 0x56
xor edi, 0xde
lea edx, [edi + edx*2]
inc dl
mov byte [esp + ecx + 0x743339b7], dl
inc ecx
dec eax
cmp ecx, 0x8bccc65f
jne 0x40f2c0
movzx eax, byte [esp + 0xc]
mov ecx, ebp
test al, al
je 0x40f346
lea edx, [esp + 0xc]
mov esi, ebp
mov ecx, ebp
jmp 0x40f327
movzx eax, byte [edx]
test al, al
je 0x40f346
mov ah, byte [esi]
test ah, ah
je 0x40f52e
inc esi
inc edx
lea edi, [ecx + 1]
cmp ah, al
je 0x40f33e
mov ecx, edi
mov esi, edi
je 0x40f320
lea edx, [esp + 0xc]
jmp 0x40f320
test ecx, ecx
je 0x40f52e
mov dword [esp + 4], ebp
mov dword [esp + 0xc], 0x7269746e
mov dword [esp + 0x10], 0x5949895b
mov dword [esp + 0x14], 0x818c5655
mov dword [esp + 0x18], 0x565a405a
mov dword [esp + 0x1c], 0xa9846847
mov word [esp + 0x20], 0
mov byte [esp + 0x22], 0
mov ecx, 0xb
mov edx, 0x5364e0a4
movzx edi, byte [esp + ecx + 1]
mov eax, edx
or eax, edi
lea esi, [edx - 0x5364e080]
and esi, 0x36
mov ebp, ecx
and ebp, 9
or ebp, esi
xor ebp, edi
xor ebp, 0x76
and ebp, edi
not eax
or eax, ebp
mov esi, eax
and esi, 1
or eax, 1
add eax, esi
add al, 0x38
mov byte [esp + ecx + 1], al
inc ecx
dec edx
cmp ecx, 0x22
jne 0x40f390
movzx ecx, byte [esp + 0xc]
mov eax, dword [esp + 4]
mov dword [esp], eax
test cl, cl
je 0x40f418
lea esi, [esp + 0xc]
mov edx, esi
mov eax, dword [esp + 4]
mov ebp, eax
mov dword [esp], eax
jmp 0x40f3f7
movzx ecx, byte [edx]
test cl, cl
je 0x40f418
movzx eax, byte [ebp]
test al, al
je 0x40f4bb
inc ebp
inc edx
mov edi, dword [esp]
inc edi
cmp al, cl
je 0x40f412
mov dword [esp], edi
mov ebp, edi
je 0x40f3f0
mov edx, esi
jmp 0x40f3f0
xor ecx, ecx
cmp dword [esp], 0
je 0x40f4bb
mov word [esp + 0xc], 0xfbde
mov byte [esp + 0xe], 0x3e
mov word [esp + 0xf], 0
xor edx, edx
mov ebp, dword [esp + 4]
nop
nop
nop
movzx esi, byte [esp + edx + 0xc]
mov edi, ecx
and edi, 4
mov eax, edx
xor eax, 0x5d89124a
add eax, edi
xor eax, esi
add eax, 0x2c52a48d
mov esi, eax
xor esi, 0x11
and eax, 0x6e
add eax, eax
sub eax, esi
add al, 0x12
mov byte [esp + edx + 0xc], al
inc edx
add ecx, 2
cmp edx, 5
jne 0x40f440
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x40f4c3
mov edi, dword [esp]
add edi, 0x13
lea edx, [esp + 0xc]
mov esi, edi
mov dword [esp], edi
jmp 0x40f49b
movzx ecx, byte [edx]
test cl, cl
mov ebp, dword [esp + 4]
je 0x40f4d1
movzx eax, byte [esi]
test al, al
je 0x40f52e
inc esi
inc edx
lea ebp, [edi + 1]
cmp al, cl
je 0x40f4b3
mov edi, ebp
mov esi, ebp
je 0x40f490
lea edx, [esp + 0xc]
jmp 0x40f490
xor ebx, ebx
mov ebp, dword [esp + 4]
jmp 0x40f530
mov byte [0x450d50], 1
mov eax, 0x450d52
jmp 0x40f54c
test edi, edi
je 0x40f52e
mov byte [0x450d50], 1
mov dword [esp + 0xc], 0
mov eax, 0x450d52
mov ebp, dword [esp]
cmp ebp, edi
jae 0x40f54c
xor esi, esi
cmp byte [ebp], 0
je 0x40f546
lea eax, [esp + 0xc]
push eax
push edi
push ebp
call fcn.00410ec0
add esp, 0xc
movzx edx, word [esp + 0xc]
lea ecx, [esi + 2]
mov word [esi + 0x450d52], dx
cmp esi, 0x1fb
ja 0x40f526
add ebp, eax
mov esi, ecx
cmp ebp, edi
jb 0x40f4f2
lea eax, [ecx + 0x450d52]
jmp 0x40f54c
xor ebx, ebx
push ebp
call fcn.0043f660
add esp, 4
mov eax, ebx
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [esi + 0x450d52]
mov word [eax], 0
mov ebp, dword [esp + 8]
jmp 0x40f530