Function at 0x417580
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x98
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0x20], 0x73c56d30
mov dword [esp + 0x24], 0x77c571c4
mov dword [esp + 0x28], 0x7bdb75c2
mov dword [esp + 0x2c], 0x7fdb79d3
mov dword [esp + 0x30], 0x43e67d20
mov dword [esp + 0x34], 0x47ec41e5
mov dword [esp + 0x38], 0x4bff45e5
mov dword [esp + 0x3c], 0x4ffa49e4
lea eax, [esp + 0x40]
mov word [esp + 0x40], 0x4d4c
mov dword [esp + 0x42], 0
mov dword [esp + 0x46], 0
mov byte [esp + 0x4a], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x2a
ja 0x417650
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x20]
mov esi, 0x31
sub esi, ecx
add ecx, 0x804011ce
xor esi, ecx
and esi, edx
xor esi, ecx
mov dword [esp + 0x70], esi
mov ecx, dword [esp + 0x70]
add cl, 0x5e
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x20], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x2b
jb 0x417610
lea edi, [esp + 0x70]
lea edx, [esp + 0x20]
mov ecx, 8
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x90]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov edi, dword [ebx + 4]
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax], 0
lea eax, [eax + 2]
jne 0x417680
lea ecx, [edi + eax]
add ecx, 0xfffffffe
add eax, edi
mov edx, 1
sub edx, eax
and edx, edi
mov eax, edi
not eax
and eax, ecx
sub eax, edx
cmp eax, 0xffffffdd
jge 0x4176af
mov eax, 0xffffffff
jmp 0x4176b2
add eax, 0x22
push eax
call fcn.00408a30
add esp, 4
mov esi, eax
movzx ecx, word [edi]
test cx, cx
je 0x4176e1
add edi, 2
mov eax, esi
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x4176d0
mov word [eax], 0
movzx ecx, word [esp + 0x70]
test cx, cx
je 0x417711
lea edx, [esp + 0x72]
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 0x417700
mov word [eax], 0
mov eax, dword [ebp + 8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], esi
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebx
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], 0x93e191e1
mov dword [esp + 0x24], 0x9fab9de8
mov dword [esp + 0x28], 0x9be099f1
mov dword [esp + 0x2c], 0xa7cba5e6
mov dword [esp + 0x30], 0xa3dda1d0
mov dword [esp + 0x34], 0xafddadc9
mov dword [esp + 0x38], 0xab9da9d8
mov dword [esp + 0x3c], 0xb781b59f
mov dword [esp + 0x40], 0xb3d6b19c
mov dword [esp + 0x44], 0xbfc1bdcd
mov dword [esp + 0x48], 0xbbcab9d1
mov dword [esp + 0x4c], 0xc7b5c5f7
mov dword [esp + 0x50], 0xc3bcc1b0
mov dword [esp + 0x54], 0xcfb4cdad
mov dword [esp + 0x58], 0xcb83c9b2
mov dword [esp + 0x5c], 0xd793d5a6
mov dword [esp + 0x60], 0xd3d0d1fc
mov byte [esp + 0x6c], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x4c
ja 0x41782e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x20]
mov edx, 0xec
sub edx, eax
add eax, 0x173ece13
xor edx, eax
and edx, ecx
xor edx, eax
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x1c]
add al, 0x7b
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x4d
jb 0x4177f0
lea eax, [esp + 8]
push eax
push 0x417b80
lea eax, [esp + 0x28]
push eax
push esi
call fcn.00418210
add esp, 0x10
jmp dword [0x43adfc]