Function at 0x40f810
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x24], eax
mov eax, dword [0x440080]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov ecx, dword [0x441564]
mov eax, dword [0x441560]
xor esi, esi
sub esi, 1
mov edx, ecx
add edx, esi
imul ecx, edx
and ecx, 1
cmp ecx, 0
sete cl
and cl, 1
mov byte [ebp - 0x1a], cl
cmp eax, 0xa
setl al
and al, 1
mov byte [ebp - 0x19], al
mov dword [ebp - 0x20], 0xeb9a97e3
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x2c], eax
sub eax, 0xa53bf412
je 0x40f940
jmp 0x40f87d
mov eax, dword [ebp - 0x2c]
sub eax, 0xb711bf91
je 0x40fad1
jmp 0x40f890
mov eax, dword [ebp - 0x2c]
sub eax, 0xb7a89c56
je 0x40faef
jmp 0x40f8a3
mov eax, dword [ebp - 0x2c]
sub eax, 0xcc19d395
je 0x40f9d3
jmp 0x40f8b6
mov eax, dword [ebp - 0x2c]
sub eax, 0xe5bf60ae
je 0x40fa21
jmp 0x40f8c9
mov eax, dword [ebp - 0x2c]
sub eax, 0xeb9a97e3
je 0x40f91a
jmp 0x40f8dc
mov eax, dword [ebp - 0x2c]
sub eax, 0xfdd1ccec
je 0x40fadd
jmp 0x40f8ef
mov eax, dword [ebp - 0x2c]
sub eax, 0x1ddf0d05
je 0x40fb03
jmp 0x40f902
mov eax, dword [ebp - 0x2c]
sub eax, 0x7d927191
je 0x40f9c7
jmp 0x40f915
jmp 0x40fb47
mov al, byte [ebp - 0x1a]
mov cl, byte [ebp - 0x19]
mov dl, al
and dl, cl
xor al, cl
or dl, al
mov eax, 0xb7a89c56
mov ecx, 0xa53bf412
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x20], eax
jmp 0x40fb47
mov ecx, dword [ebp - 0x28]
push eax
mov eax, esp
mov dword [ebp - 0x18], eax
push eax
mov eax, esp
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x18]
mov dword [eax], ecx
mov ecx, dword [0x441564]
mov eax, dword [0x441560]
mov edx, ecx
add edx, 0x8d192e31
sub edx, 1
sub edx, 0x8d192e31
imul ecx, edx
and ecx, 1
cmp ecx, 0
sete bl
cmp eax, 0xa
setl dh
mov al, bl
xor al, 0xff
mov ah, dh
xor ah, 0xff
mov cl, 1
xor cl, 0
mov dl, al
and dl, 0
and bl, cl
mov ch, ah
and ch, 0
and dh, cl
or dl, bl
or ch, dh
xor dl, ch
or al, ah
xor al, 0xff
or cl, 0
and al, cl
or dl, al
mov eax, 0xb7a89c56
mov ecx, 0x7d927191
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x20], eax
jmp 0x40fb47
mov dword [ebp - 0x20], 0xcc19d395
jmp 0x40fb47
mov eax, dword [0x441564]
mov ecx, dword [0x441560]
mov edx, eax
sub edx, 0x6b212232
sub edx, 1
add edx, 0x6b212232
imul eax, edx
and eax, 1
cmp eax, 0
sete al
cmp ecx, 0xa
setl cl
mov dl, al
and dl, cl
xor al, cl
or dl, al
mov eax, 0x1ddf0d05
mov ecx, 0xe5bf60ae
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x20], eax
jmp 0x40fb47
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x14]
mov dword [eax], ecx
mov edx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
pop eax
push eax
mov eax, eax
xor eax, 0x85
nop
mov ecx, dword [edx]
mov edi, dword [esi]
not byte [edi]
pop eax
push eax
mov eax, eax
xor eax, 0x85
nop
add byte [edi], 0x64
sub byte [edi], 0x88
pop eax
push eax
mov eax, eax
xor eax, 0x85
nop
imul byte [edi]
inc edi
loop 0x40fa3d
mov ecx, dword [0x441564]
mov eax, dword [0x441560]
mov edx, ecx
sub edx, 0x2b433a45
sub edx, 1
add edx, 0x2b433a45
imul ecx, edx
and ecx, 1
cmp ecx, 0
sete bl
cmp eax, 0xa
setl dh
mov al, bl
xor al, 0xff
mov ah, dh
xor ah, 0xff
mov cl, 1
xor cl, 1
mov dl, al
and dl, 0xff
and bl, cl
mov ch, ah
and ch, 0xff
and dh, cl
or dl, bl
or ch, dh
xor dl, ch
or al, ah
xor al, 0xff
or cl, 1
and al, cl
or dl, al
mov eax, 0x1ddf0d05
mov ecx, 0xb711bf91
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x20], eax
jmp 0x40fb47
mov dword [ebp - 0x20], 0xfdd1ccec
jmp 0x40fb47
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00429490
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [ebp - 0x28]
push eax
mov eax, esp
mov dword [eax], ecx
mov dword [ebp - 0x20], 0xa53bf412
jmp 0x40fb47
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x14]
mov dword [eax], ecx
mov edx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
pop eax
push eax
mov eax, eax
xor eax, 0x85
nop
mov ecx, dword [edx]
mov edi, dword [esi]
not byte [edi]
pop eax
push eax
mov eax, eax
xor eax, 0x85
nop
add byte [edi], 0x64
sub byte [edi], 0x88
pop eax
push eax
mov eax, eax
xor eax, 0x85
nop
imul byte [edi]
inc edi
loop 0x40fb1f
mov dword [ebp - 0x20], 0xe5bf60ae
jmp 0x40f867