Function at 0x4178d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x198
mov dword [esp + 0x10], 0x33d83107
mov dword [esp + 0x14], 0x3fc93dcf
mov dword [esp + 0x18], 0x3b3a39ce
mov word [esp + 0x1c], 0
mov byte [esp + 0x1e], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x10]
mov esi, eax
and esi, 0xc
xor esi, 0x42f77f0c
mov edx, eax
and edx, 3
sub edx, esi
mov esi, edx
and esi, ecx
mov ebx, esi
and ebx, 0xfffffffd
mov edi, esi
or edi, 0xfffffffd
inc edi
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
sub edi, esi
add edx, ecx
lea ecx, [edi + edx]
add ecx, 0x4ed57b3b
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0xf
jne 0x417910
mov dword [esp + 0x2c], 0xffa09f0
mov dword [esp + 0x30], 0x3f20df8
mov dword [esp + 0x34], 0x73501ce
mov dword [esp + 0x38], 0x1be60537
mov dword [esp + 0x3c], 0x1ff919eb
mov dword [esp + 0x40], 0x13ee1dfd
mov dword [esp + 0x44], 0x17e511e8
mov dword [esp + 0x48], 0x2bde15e3
mov dword [esp + 0x4c], 0x2f2e29e6
mov word [esp + 0x50], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x2c]
lea edx, [eax + 0x42]
and edx, ecx
mov edi, edx
or edi, 0xfffffffd
inc edi
mov esi, edx
and esi, 0xfffffffd
imul esi, edi
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
sub esi, edx
add ecx, eax
add ecx, esi
add ecx, 0xfcca8f42
mov edx, ecx
and edx, 0x35
xor ecx, 0xb5
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax + 0x2c], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x26
jb 0x4179c0
movzx ecx, word [esp + 0x2c]
lea eax, [esp + 0x154]
test cx, cx
je 0x417a43
lea edx, [esp + 0x2e]
mov edi, dword [ebp + 0x10]
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x417a30
jmp 0x417a46
mov edi, dword [ebp + 0x10]
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
mov ebx, dword [ebp + 0xc]
je 0x417a71
lea edx, [edi + 2]
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 0x417a60
mov word [eax], 0
movzx ecx, word [esp + 0x10]
test cx, cx
je 0x417aa1
lea edx, [esp + 0x12]
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 0x417a90
mov word [eax], 0
mov esi, dword [ebx]
mov dword [esp + 0x2c], 0xdfdcdc3a
mov byte [esp + 0x30], 0x3c
mov word [esp + 0x31], 0
mov byte [esp + 0x33], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x2c]
mov edi, eax
and edi, 4
xor edi, 0xa111d8c
mov ecx, eax
and ecx, 3
sub ecx, edi
xor ecx, edx
mov edx, ecx
and edx, 0xbb
and ecx, 0x44
xor ecx, 0x45
sub edx, ecx
inc dl
mov byte [esp + eax + 0x2c], dl
inc eax
cmp eax, 8
jne 0x417ad0
movzx eax, byte [esp + 0x2c]
test al, al
je 0x417b2b
lea ecx, [esp + 0x2d]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x417b20
mov byte [esi], 0
lea eax, [esp + 0x130]
lea ecx, [esp + 0x28]
lea edx, [esp + 0x154]
push eax
push ecx
push edx
call fcn.0040b0e0
add esp, 0xc
movzx eax, al
mov eax, dword [eax*4 + 0x442d34]
mov ecx, 0xbfbc8722
xor ecx, dword [0x442d3c]
add eax, ecx
inc eax
jmp eax