Function at 0x413c60
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x38
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
mov ebx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ebx + 2], 0
lea ebx, [ebx + 2]
jne 0x413c80
mov esi, dword [ebp + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x413ca0
sar ebx, 1
mov ecx, eax
sar ecx, 1
and eax, 2
xor ecx, 1
add eax, ebx
add eax, ecx
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
test eax, eax
jns 0x413cd1
mov eax, 0xffffffff
jmp 0x413cd3
add eax, eax
push eax
call fcn.00407fc0
add esp, 4
movzx ecx, word [esi]
mov dword [esp + 0xc], eax
test cx, cx
je 0x413d01
add esi, 2
mov eax, dword [esp + 0xc]
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x413cf0
mov word [eax], 0x5c
add eax, 2
mov edx, dword [esp + 0x58]
movzx ecx, word [edx]
test cx, cx
je 0x413d31
add edx, 2
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x413d20
mov word [eax], 0
lea eax, [esp + 8]
push 0x60
push 7
push 0x120089
push eax
push dword [esp + 0x1c]
call fcn.0043bda0
add esp, 0x14
mov dword [esp + 0x30], eax
mov esi, dword [edi]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x413d60
mov edx, eax
and edx, 2
mov ebp, dword [ebp]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x413d80
sar eax, 1
xor eax, 1
sar ecx, 1
add ebx, edx
add ebx, eax
lea eax, [ecx + ebx]
add eax, 2
test eax, eax
jns 0x413da7
mov eax, 0xffffffff
jmp 0x413db0
add ebx, ecx
lea eax, [ebx*2 + 4]
push eax
call fcn.00407fc0
add esp, 4
movzx ecx, word [esi]
mov edx, eax
test cx, cx
je 0x413de1
add esi, 2
mov edx, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x413dd0
mov word [edx], 0x2f
add edx, 2
movzx ecx, word [ebp]
test cx, cx
mov dword [esp + 0x24], eax
je 0x413e12
add ebp, 2
nop
nop
nop
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x413e00
mov word [edx], 0
mov word [esp + 0x14], 0xa5cb
xor ecx, ecx
mov al, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x14]
mov ebx, ecx
or ebx, 0x84
mov ebp, ecx
xor ebp, 0xcede497b
mov edi, ebx
xor edi, esi
add edi, ebp
and ebp, esi
sub edi, ebp
or ebx, esi
and ebx, edi
add bl, 0xe0
mov byte [esp + ecx + 0x14], bl
mov ecx, 1
test al, 1
mov eax, 0
jne 0x413e30
movzx ecx, word [esp + 0x14]
mov word [edx], cx
add edx, 2
mov eax, dword [esp + 0x58]
movzx ecx, word [eax]
test cx, cx
je 0x413ea1
add eax, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [eax]
add eax, 2
test cx, cx
jne 0x413e90
mov word [edx], 0
mov dword [esp + 0x14], 0x79b8b7f5
mov eax, 0x1de8a255
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x1de8a241]
lea ecx, [eax - 0x1de8a1cf]
and ecx, edx
mov edi, ecx
and edi, 2
mov ebx, ecx
or ebx, 0xfffffffd
inc ebx
mov esi, ecx
and esi, 0xffffff8d
imul esi, ebx
or ecx, 2
imul ecx, edi
add esi, edx
sub esi, ecx
add esi, eax
mov ecx, esi
and ecx, 1
xor esi, 1
lea ecx, [esi + ecx*2]
mov byte [esp + eax - 0x1de8a241], cl
inc eax
cmp eax, 0x1de8a259
jne 0x413ec0
xor eax, eax
mov esi, dword [esp + 0x30]
cmp esi, dword [esp + 0x14]
sete al
jmp dword [eax*4 + 0x441ff8]