Function at 0x40f2d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xce8
mov ecx, dword [0x440c74]
mov dword [esp + 0xc8], 0x6baffbb6
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd0], 0
mov word [esp + 0xd4], 0
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 0xd
ja 0x40f385
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x20]
movzx esi, byte [esp + eax + 0xc8]
add edx, 0xf1877292
mov eax, edx
and eax, esi
xor edx, esi
lea edx, [edx + eax*2]
add eax, eax
mov esi, edx
xor esi, eax
not eax
and eax, edx
add eax, eax
sub eax, esi
mov dword [esp + 0x2d8], eax
mov eax, dword [esp + 0x2d8]
add al, 2
mov edx, dword [esp + 0x20]
mov byte [esp + edx + 0xc8], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 0xe
jb 0x40f330
mov edx, dword [str.test784__]
mov dword [esp + 0x2d8], 0x70b8a8a9
mov dword [esp + 0x2dc], 0xb8adaabc
mov dword [esp + 0x2e0], 0xb88db6a4
mov dword [esp + 0x2e4], 0xb8a5a4b1
mov dword [esp + 0x2e8], 0xa97ebebf
mov dword [esp + 0x2ec], 0x5363afb9
mov dword [esp + 0x2f0], 0x8f464d4c
mov dword [esp + 0x2f4], 0x175b858d
mov word [esp + 0x2f8], 0
mov dword [esp + 0x258], 0
mov eax, dword [esp + 0x258]
cmp eax, 0x21
ja 0x40f46f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x258]
mov esi, dword [esp + 0x258]
movzx edi, byte [esp + esi + 0x2d8]
lea esi, [eax + edi]
add esi, 0x36403f89
add eax, 0x36403f89
and eax, edi
add eax, eax
mov edi, esi
not edi
and edi, eax
not eax
and eax, esi
sub eax, edi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
add al, 0x41
mov esi, dword [esp + 0x258]
mov byte [esp + esi + 0x2d8], al
inc dword [esp + 0x258]
mov eax, dword [esp + 0x258]
cmp eax, 0x22
jb 0x40f410
movzx ebx, byte [esp + 0x2d8]
lea eax, [esp + 0x258]
test bl, bl
je 0x40f49b
lea esi, [esp + 0x2d9]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40f490
mov byte [eax], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40f4bb
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x40f4b0
mov byte [eax], 0
movzx edx, byte [esp + 0xc8]
test dl, dl
je 0x40f4eb
lea esi, [esp + 0xc9]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40f4e0
mov byte [eax], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40f50b
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [ecx]
inc ecx
test dl, dl
jne 0x40f500
mov byte [eax], 0
lea ecx, [esp + 0x258]
mov dword [esp + 0x2d8], 0xdb4dd99b
mov dword [esp + 0x2dc], 0xd75ad542
mov dword [esp + 0x2e0], 0xd344d14d
mov dword [esp + 0x2e4], 0xcf9bcd40
mov dword [esp + 0x2e8], 0xcb43c964
mov dword [esp + 0x2ec], 0xc75bc554
mov dword [esp + 0x2f0], 0xc3a2c18a
mov dword [esp + 0x2f4], 0x3fae3d9d
mov dword [esp + 0x2f8], 0x3bae39a8
mov dword [esp + 0x2fc], 0x379535ad
mov dword [esp + 0x300], 0x33be3191
mov dword [esp + 0x304], 0x2fb92db5
mov dword [esp + 0x308], 0x2b7d29be
mov dword [esp + 0x30c], 0x277325ac
mov dword [esp + 0x310], 0x23ad21af
mov dword [esp + 0x314], 0x1f4b1d93
mov dword [esp + 0x318], 0x1b8d1986
mov dword [esp + 0x31c], 0x17831586
mov dword [esp + 0x320], 0x139f1145
mov dword [esp + 0x324], 0xf9a0d9e
mov dword [esp + 0x328], 0xb9c0995
mov dword [esp + 0x32c], 0x79105a7
mov dword [esp + 0x330], 0x39f019c
mov dword [esp + 0x334], 0x7f0b7de0
mov dword [esp + 0x338], 0x7b7a7902
mov byte [esp + 0x340], 0
mov dword [esp + 0x33c], 0
mov dword [esp + 0x20], 0
mov edx, dword [esp + 0x20]
cmp edx, 0x68
ja 0x40f69a
nop
nop
nop
nop
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x20]
movzx esi, byte [esp + esi + 0x2d8]
lea edi, [edx + 0x64]
and edi, esi
add edx, esi
add edi, edi
sub edx, edi
add edx, 0xcab98c64
mov dword [esp + 0xc8], edx
mov edx, dword [esp + 0xc8]
add dl, 0x44
mov esi, dword [esp + 0x20]
mov byte [esp + esi + 0x2d8], dl
inc dword [esp + 0x20]
mov edx, dword [esp + 0x20]
cmp edx, 0x69
jb 0x40f650
sub eax, ecx
mov dword [esp + 0xc8], 0x836b85b7
mov dword [esp + 0xcc], 0x8f778172
mov word [esp + 0xd0], 0x8d8e
mov dword [esp + 0xd2], 0
mov dword [esp + 0xd6], 0
mov dword [esp + 0xda], 0
mov byte [esp + 0xde], 0
mov dword [esp + 0x1f0], 0
mov edx, dword [esp + 0x1f0]
cmp edx, 0x16
ja 0x40f76f
nop
nop
nop
nop
mov edx, dword [esp + 0x1f0]
mov esi, dword [esp + 0x1f0]
movzx edi, byte [esp + esi + 0xc8]
lea ebx, [edx - 0x2c026fbf]
lea esi, [edx + edi]
add esi, 0xd3fd9041
and ebx, edi
add edx, 0x41
and edx, edi
add edx, ebx
mov edi, esi
not edi
and edi, edx
not edx
and edx, esi
sub edx, edi
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x20]
mov esi, edx
or esi, 0x38
and edx, 0x38
add edx, esi
inc dl
mov esi, dword [esp + 0x1f0]
mov byte [esp + esi + 0xc8], dl
inc dword [esp + 0x1f0]
mov edx, dword [esp + 0x1f0]
cmp edx, 0x17
jb 0x40f700
lea edx, [esp + 0xc0]
lea esi, [esp + 0xb4]
lea edi, [esp + 0x2d8]
lea ebx, [esp + 0xc8]
push edx
push esi
push eax
push ecx
push edi
push ebx
push 0x448824
call fcn.0040b860
add esp, 0x1c
movzx eax, al
mov eax, dword [eax*4 + 0x441a7c]
mov ecx, 0xc7fc5b80
xor ecx, dword [0x441a84]
add eax, ecx
inc eax
jmp eax