Function at 0x415100
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x3c
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x58]
mov edi, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + edi + 2], 0
lea edi, [edi + 2]
jne 0x415120
mov ebp, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + eax + 2], 0
lea eax, [eax + 2]
jne 0x415140
sar edi, 1
sar eax, 1
lea ecx, [edi + eax]
add ecx, 2
test ecx, ecx
jns 0x415160
mov eax, 0xffffffff
jmp 0x415169
add eax, edi
lea eax, [eax*2 + 4]
push eax
call fcn.00408bc0
add esp, 4
movzx ecx, word [ebp]
mov dword [esp + 0xc], eax
test cx, cx
je 0x4151a2
add ebp, 2
mov eax, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x415190
mov word [eax], 0
mov word [esp + 0x10], 0x1fa2
xor ecx, ecx
mov dl, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x10]
mov ebp, ecx
or ebp, 0xad51116e
xor ebp, ebx
mov ebx, 0x70
sub ebx, ebp
not ebp
and ebp, 1
and ebx, 0xfe
or ebx, ebp
not ebx
lea ebx, [ebx + ebp*2]
mov byte [esp + ecx + 0x10], bl
mov ecx, 1
test dl, 1
mov edx, 0
jne 0x4151c0
movzx ecx, word [esp + 0x10]
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
test cx, cx
je 0x415231
lea edx, [esi + 2]
nop
nop
nop
nop
nop
nop
nop
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 0x415220
mov word [eax], 0
lea eax, [esp + 8]
push 0x60
push 7
push 0x120089
push eax
push dword [esp + 0x1c]
call fcn.0043d9b0
add esp, 0x14
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x54]
mov ebp, dword [eax]
mov eax, 0xfffffffe
nop
cmp word [ebp + eax + 2], 0
lea eax, [eax + 2]
jne 0x415260
mov ecx, dword [esp + 0x58]
mov ebx, dword [ecx]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x415280
sar eax, 1
sar ecx, 1
add edi, eax
lea eax, [ecx + edi]
add eax, 3
test eax, eax
jns 0x4152a2
mov eax, 0xffffffff
jmp 0x4152ab
add edi, ecx
lea eax, [edi*2 + 6]
push eax
call fcn.00408bc0
add esp, 4
movzx ecx, word [ebp]
mov dword [esp + 0x24], eax
test cx, cx
je 0x4152e2
add ebp, 2
mov eax, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x4152d0
mov word [eax], 0x2f
add eax, 2
movzx ecx, word [ebx]
test cx, cx
je 0x415313
add ebx, 2
mov ebp, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x415300
jmp 0x415317
mov ebp, dword [esp + 0x24]
mov word [eax], 0x2f
add eax, 2
movzx ecx, word [esi]
test cx, cx
je 0x415343
add esi, 2
mov ebx, dword [esp + 0x28]
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x415330
jmp 0x415347
mov ebx, dword [esp + 0x28]
mov word [eax], 0
mov dword [esp + 0x10], 0x347372b2
mov eax, 0x5decc76d
mov ecx, 0x90ba00b9
nop
nop
movzx edx, byte [esp + ecx + 0x6f45ff57]
lea esi, [eax + 0x115937d9]
mov edi, ecx
or edi, edx
or esi, edx
sub edi, esi
add edi, eax
mov edx, edi
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
add dl, 0x10
mov byte [esp + ecx + 0x6f45ff57], dl
dec eax
inc ecx
cmp eax, 0x5decc769
jne 0x415360
xor eax, eax
cmp ebx, dword [esp + 0x10]
sete al
jmp dword [eax*4 + 0x442f80]