Function at 0x40f8a0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x64
or ecx, 0xffffffff
xor eax, eax
push ebx
mov ebx, dword [esp + 0x78]
push ebp
push esi
push edi
mov edi, ebx
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x10]
push ecx
push ebx
push eax
call fcn.0040fb20
add esp, 0xc
test al, al
jne 0x40f8d4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x64
ret
lea ecx, [esp + 0x84]
mov edi, ebx
push ecx
or ecx, 0xffffffff
xor eax, eax
mov esi, dword [esp + 0x90]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push esi
shr ecx, 1
lea edx, [esp + 0x18]
push ecx
push edx
push str.322594843208883989832684329_1266256333417103790163558487
call fcn.0040fd00
mov eax, dword [esp + 0x98]
add esp, 0x14
cmp eax, 0xa
je 0x40f91b
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x64
ret
mov ebp, dword [esp + 0x78]
xor ebx, ebx
mov byte [esi + 0xa], 0
mov edx, esi
sub ebp, esi
mov edi, dword [esp + 0x78]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ebx, ecx
jge 0x40f94b
mov al, byte [edx + ebp]
mov cl, byte [edx]
xor cl, al
inc ebx
mov byte [edx], cl
inc edx
cmp ebx, 0xa
jl 0x40f929
mov edi, dword [esp + 0x80]
xor eax, eax
mov ecx, edi
mov dl, byte [ecx]
mov bl, byte [eax + esi]
xor bl, dl
add ecx, 3
mov byte [eax + esi], bl
inc eax
cmp eax, 8
jl 0x40f956
mov al, byte [edi + 0x16]
mov cl, byte [esi + 8]
xor cl, al
mov al, byte [esi + 9]
mov byte [esi + 8], cl
mov cl, byte [edi + 0x17]
mov edi, dword [esp + 0x7c]
xor al, cl
mov byte [esi + 9], al
xor eax, eax
mov ecx, edi
mov dl, byte [ecx]
mov bl, byte [eax + esi]
xor bl, dl
add ecx, 3
mov byte [eax + esi], bl
inc eax
cmp eax, 8
jl 0x40f987
mov al, byte [edi + 0x16]
mov cl, byte [esi + 8]
xor cl, al
mov al, byte [esi + 9]
mov byte [esi + 8], cl
mov cl, byte [edi + 0x17]
xor al, cl
lea ebp, [esi + 6]
mov byte [esi + 9], al
mov cl, al
xor eax, eax
xor edx, edx
mov al, byte [ebp]
mov dl, byte [esi + 7]
shl eax, 8
add eax, edx
xor edx, edx
mov dl, byte [esi + 8]
and ecx, 0xff
shl eax, 8
add eax, edx
mov edx, dword [esp + 0x88]
shl eax, 8
add eax, ecx
xor ecx, ecx
mov cx, word [edx]
mov edi, eax
shr edi, 0x10
cmp ecx, edi
mov dword [esp + 0x78], ebp
jbe 0x40fa05
xor eax, eax
pop edi
mov dword [esi], eax
mov dword [esi + 4], eax
mov word [esi + 8], ax
pop esi
pop ebp
pop ebx
add esp, 0x64
ret
jne 0x40fa2e
xor ebx, ebx
xor ebp, ebp
mov bp, word [edx + 2]
mov bl, ah
cmp ebp, ebx
jbe 0x40fa2a
xor ecx, ecx
pop edi
mov dword [esi], ecx
xor eax, eax
mov dword [esi + 4], ecx
mov word [esi + 8], cx
pop esi
pop ebp
pop ebx
add esp, 0x64
ret
mov ebp, dword [esp + 0x78]
cmp ecx, edi
jne 0x40fa64
xor ecx, ecx
xor edi, edi
mov di, word [edx + 2]
mov cl, ah
cmp edi, ecx
jne 0x40fa64
xor ecx, ecx
and eax, 0xff
mov cx, word [edx + 6]
cmp ecx, eax
jbe 0x40fa64
xor edx, edx
pop edi
mov dword [esi], edx
xor eax, eax
mov dword [esi + 4], edx
mov word [esi + 8], dx
pop esi
pop ebp
pop ebx
add esp, 0x64
ret
mov edi, str.__Ke
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, 1
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret