Function at 0x40171f
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
xor dword [esp + 0xc], 0x1bd9
add edx, 0xfffffcca
push ebx
push ebp
mov ebp, ecx
mov ebx, ecx
xor ebp, 0x1844
xor ebx, 0xa46
mov eax, ebp
mov dword [esp + 0x24], ebp
xor eax, 0x1a2a
mov dword [esp + 0x1c], ebx
xor ecx, 0x1989
push esi
push edi
cmp ecx, eax
jg 0x401a94
mov edi, dword [esp + 0x28]
xor ebp, ebp
mov ecx, dword [edi + 0x70]
mov eax, dword [0x49c7b4]
mov edx, dword [eax + ebp]
add ebp, 4
mov eax, dword [0x493c3c]
mov eax, dword [eax + 0x118]
xor eax, ecx
xor eax, 0xb654c
mov dword [edi + 0x70], eax
mov esi, dword [0x493c3c]
mov eax, dword [0x49c828]
add eax, 0xfffcf13a
mov ecx, dword [esi + 0xe8]
sub ecx, dword [0x49c81c]
add eax, ecx
mov dword [0x49c828], eax
mov ebx, dword [edi + 0x60]
mov ecx, dword [esi + 0xa8]
mov eax, dword [0x49c7a4]
imul ebx, edx
mov edx, ebx
shr edx, 0x10
mov byte [eax + ecx], dl
mov edx, ebx
inc dword [0x49c7a4]
mov ecx, dword [edi + 0x84]
mov eax, dword [edi + 0xa8]
shr edx, 8
mov byte [ecx + eax], dl
inc dword [edi + 0x84]
mov ecx, dword [edi + 0x84]
mov eax, dword [edi + 0xa8]
mov byte [ecx + eax], bl
inc dword [edi + 0x84]
mov eax, dword [0x493c3c]
mov eax, dword [eax + 0x2c]
xor eax, dword [edi + 0xec]
sub eax, 0x13
add dword [edi + 0xa0], eax
mov ecx, dword [0x493c3c]
mov eax, dword [edi + 0x58]
sub eax, 0xa3ce1
imul eax, dword [ecx + 0x108]
mov dword [ecx + 0x108], eax
mov eax, dword [edi]
sub dword [edi + 0x108], eax
mov eax, dword [0x49c800]
sub eax, dword [edi + 0xfc]
mov ecx, dword [0x493c3c]
add eax, 0x7a16
or dword [ecx + 0x88], eax
mov ecx, dword [0x493c3c]
mov eax, dword [edi]
add dword [ecx + 0x88], eax
mov ecx, dword [edi + 0x70]
mov eax, ecx
xor eax, dword [0x49c724]
sub eax, 0x188489
xor dword [edi + 0xb0], eax
cmp ebp, 0x6e0
jl 0x40176f
mov ecx, dword [0x493c3c]
mov ebp, dword [esp + 0x2c]
add ebp, 0xa29
mov dword [esp + 0x2c], ebp
mov eax, dword [ecx + 0xe0]
add eax, 0x7a04
mov dword [ecx + 0x60], eax
mov eax, dword [esp + 0x24]
add eax, 0xfffff74e
cmp dword [esp + 0x1c], eax
jge 0x401b02
xor esi, esi
mov dword [0x49c7b4], 0x49b558
mov ebp, esi
mov eax, dword [0x493c3c]
mov eax, dword [eax + 0xa0]
xor eax, 0x1509f5
add dword [edi + 0xcc], eax
mov ecx, dword [0x493c3c]
mov eax, dword [edi]
or dword [ecx + 0x70], eax
mov eax, dword [edi + 0x94]
mov ecx, dword [edi + 0x84]
mov ebx, dword [eax + ebp]
add ebp, 4
mov eax, dword [0x493c3c]
imul ebx, dword [eax + 0x60]
mov eax, dword [edi + 0xa8]
mov edx, ebx
shr edx, 0x18
mov byte [ecx + eax], dl
mov edx, ebx
inc dword [edi + 0x84]
mov eax, dword [0x49c808]
mov ecx, dword [0x493c3c]
add eax, 0xffffffac
add eax, dword [edi + 0xb0]
mov dword [0x49c808], eax
shr edx, 0x10
mov eax, dword [ecx + 0x118]
sub eax, 0xb654c
xor dword [ecx + 0x14], eax
mov eax, dword [0x493c3c]
mov ecx, dword [eax + 0xa8]
mov eax, dword [edi + 0x84]
mov byte [ecx + eax], dl
mov eax, 0x188489
inc dword [edi + 0x84]
mov edx, ebx
mov ecx, dword [0x493c3c]
shr edx, 8
sub eax, dword [ecx + 0x70]
add dword [0x49c828], eax
mov eax, dword [ecx + 0x1c]
sub dword [0x49c804], eax
mov eax, dword [0x49c7ec]
sub eax, dword [0x49c7d0]
mov ecx, dword [edi + 0x84]
sub eax, 0xd
imul eax, dword [edi + 0xec]
mov dword [edi + 0xec], eax
mov eax, dword [edi + 0xa8]
mov byte [ecx + eax], dl
inc dword [edi + 0x84]
mov eax, dword [0x493c3c]
mov ecx, dword [eax + 0xa8]
mov eax, dword [eax + 0x84]
mov byte [ecx + eax], bl
mov eax, dword [0x493c3c]
inc dword [eax + 0x84]
mov eax, dword [edi + 0x3c]
xor eax, dword [edi + 0xa0]
xor eax, 0x10ebaf
sub dword [edi + 0x88], eax
mov eax, dword [edi + 0xe0]
add eax, 0x79f1
add eax, dword [edi + 0xfc]
imul eax, dword [edi + 0x64]
mov dword [edi + 0x64], eax
cmp ebp, 0x1140
jl 0x4018c9
mov ebp, dword [esp + 0x2c]
mov dword [edi + 0x110], 0x49c720
mov eax, dword [edi + 0xdc]
mov ecx, dword [esi + eax]
xor ecx, dword [0x49c7ac]
mov eax, dword [0x49c7fc]
mov dword [esi + eax], ecx
add esi, 4
mov eax, dword [edi + 0xf4]
add dword [edi + 0x8c], eax
mov eax, dword [edi + 0xc0]
dec eax
add dword [edi + 0xe8], eax
mov ecx, dword [0x493c3c]
mov eax, dword [edi + 0x7c]
sub eax, 0x59646
or dword [ecx + 0x1c], eax
mov eax, dword [edi + 0xa0]
sub eax, 0x1509f5
add dword [edi + 0xe4], eax
mov eax, dword [0x493c3c]
mov eax, dword [eax + 0xc0]
dec eax
add dword [edi + 0x88], eax
mov eax, dword [0x49c800]
xor eax, 0xffff85fd
sub dword [edi + 0x28], eax
cmp esi, 0x12b8c
jl 0x401a16
jmp 0x401b02
mov ecx, dword [0x493c3c]
mov esi, dword [esp + 0x28]
mov eax, dword [ecx + 0x108]
sub eax, dword [esi + 0x30]
add eax, 0x874
or edx, eax
imul eax, ebx, 0x162c
push eax
mov eax, dword [ecx + 0xe4]
or eax, 0x1196
add eax, edx
push eax
mov eax, dword [esi + 0xf0]
and eax, dword [esi + 0xb8]
add eax, 0xb9b
push eax
mov eax, dword [esi + 0xe8]
add eax, 0xc44
add eax, edx
push esi
push eax
call fcn.00418c30
mov ecx, dword [esi + 0xc4]
add esp, 0x14
add ecx, 0x109d
imul ecx, dword [0x49c82c]
sub dword [esi + 0x58], ecx
pop edi
xor ebp, 0x1dc9
pop esi
mov eax, ebp
pop ebp
pop ebx
ret