Function at 0x4157f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov edx, dword [esp + 0x60]
mov ebp, dword [esp + 0x5c]
mov ecx, dword [ebp + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ecx + eax + 2], 0
lea eax, [eax + 2]
jne 0x415810
sar eax, 1
mov ebx, dword [edx + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x415830
sar ecx, 1
lea edx, [eax + ecx]
add edx, 0x1b
test edx, edx
jns 0x41584e
mov eax, 0xffffffff
jmp 0x415857
add eax, ecx
lea eax, [eax*2 + 0x36]
push eax
call fcn.00409a50
add esp, 4
mov esi, eax
mov dword [esp + 8], 0xfe31fc27
mov dword [esp + 0xc], 0xc262c050
mov dword [esp + 0x10], 0xc669c462
mov dword [esp + 0x14], 0xca0cc827
mov dword [esp + 0x18], 0xce79cc73
mov dword [esp + 0x1c], 0xd27fd06a
mov dword [esp + 0x20], 0xd67cd460
mov dword [esp + 0x24], 0xda77d878
mov dword [esp + 0x28], 0xde0edc3b
mov dword [esp + 0x2c], 0xa215a07a
mov dword [esp + 0x30], 0xa60ca417
mov dword [esp + 0x34], 0xaa0ea809
mov dword [esp + 0x38], 0xae71ac18
mov word [esp + 0x3c], 0xb0af
mov dword [esp + 0x3e], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x39
ja 0x415920
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
add edx, 0xebd79b
xor edx, ecx
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
add dl, 0xa0
mov ecx, dword [esp]
mov byte [esp + ecx + 8], dl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x3a
jb 0x4158f0
mov ecx, dword [ebp + 4]
movzx edx, word [ecx]
mov edi, esi
test dx, dx
je 0x415951
add ecx, 2
mov edi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], dx
add edi, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x415940
mov word [edi], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x415981
lea edx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x415970
mov word [edi], 0
movzx ecx, word [ebx]
test cx, cx
je 0x4159b1
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x4159a0
mov word [edi], 0
mov ebp, dword [ebp]
mov eax, 0xfffffffe
nop
nop
cmp word [ebp + eax + 2], 0
lea eax, [eax + 2]
jne 0x4159c0
sar eax, 1
mov ecx, dword [esp + 0x5c]
mov edx, dword [ecx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [edx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x4159e0
inc eax
sar ecx, 1
mov edx, ecx
and edx, eax
add edx, edx
mov edi, dword [esp + 0x60]
mov ebx, dword [edi]
mov edi, 0xfffffffe
nop
cmp word [ebx + edi + 2], 0
lea edi, [edi + 2]
jne 0x415a00
xor ecx, eax
sar edi, 1
add ecx, edx
lea eax, [edi + ecx]
add eax, 0xd
test eax, eax
jns 0x415a22
mov eax, 0xffffffff
jmp 0x415a2b
add ecx, edi
lea eax, [ecx*2 + 0x1a]
push eax
call fcn.00409a50
add esp, 4
mov edi, eax
movzx ecx, word [ebp]
test cx, cx
je 0x415a62
add ebp, 2
mov eax, edi
nop
nop
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 0x415a50
mov word [eax], 0x2f
mov dword [esp + 8], 0xed47040
mov dword [esp + 0xc], 0xa870c85
mov dword [esp + 0x10], 0x6f508f2
mov dword [esp + 0x14], 0x2f40488
mov dword [esp + 0x18], 0x1eed00f0
mov dword [esp + 0x1c], 0x1a2a1c90
mov dword [esp + 0x20], 0x1819
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x1b
ja 0x415ae0
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 8]
add ecx, 0x7bfdf7be
xor ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x1c
jb 0x415ab0
add eax, 2
mov ecx, dword [esp + 0x5c]
mov ecx, dword [ecx + 8]
movzx edx, word [ecx]
test dx, dx
je 0x415b11
add ecx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], dx
add eax, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x415b00
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x415b41
lea edx, [esp + 0xa]
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 0x415b30
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x415b71
add ebx, 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 [ebx]
add ebx, 2
test cx, cx
jne 0x415b60
mov word [eax], 0
mov dword [esp + 8], 0x3e3d3cd9
mov word [esp + 0xc], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x415bf2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
lea edx, [eax + ecx]
add edx, 0x25baa3d7
add eax, 0x25baa3d7
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
not ecx
and ecx, 0xe4
and eax, 0x1b
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x415ba0
lea eax, [esp + 8]
push 0
push 0
push 0
push 0xc00000
push eax
push esi
push edi
push dword [esp + 0x74]
call fcn.0041a1a0
add esp, 0x20
mov ebx, eax
jmp dword [0x445c4c]