Function at 0x4184e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa8
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x10], 0xdb6ed97c
mov dword [esp + 0x14], 0xd775d543
mov dword [esp + 0x18], 0xd346d171
mov dword [esp + 0x1c], 0xcf73cd2c
mov dword [esp + 0x20], 0xcb46c940
mov dword [esp + 0x24], 0xc750c559
mov dword [esp + 0x28], 0xc35bc153
mov dword [esp + 0x2c], 0xbf28bd2b
mov dword [esp + 0x30], 0xbb09b958
mov dword [esp + 0x34], 0xb73ab529
mov dword [esp + 0x38], 0xb32bb13c
mov dword [esp + 0x3c], 0xaf31ad3a
mov dword [esp + 0x40], 0xab0ea93b
lea eax, [esp + 0x44]
mov word [esp + 0x44], 0xa5a4
mov dword [esp + 0x46], 0
mov dword [esp + 0x4a], 0
mov byte [esp + 0x4e], 0
mov dword [esp + 0x50], 0
mov ecx, dword [esp + 0x50]
cmp ecx, 0x3e
ja 0x4185dc
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x50]
movzx edx, byte [esp + edx + 0x10]
lea esi, [ecx + edx]
add esi, 0xa99eeea4
add ecx, 0xa99eeea4
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, esi
not ecx
and ecx, esi
add ecx, ecx
sub ecx, edx
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x6c]
add cl, 0x84
mov edx, dword [esp + 0x50]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 0x50]
mov ecx, dword [esp + 0x50]
cmp ecx, 0x3f
jb 0x418590
lea edi, [esp + 0x6c]
lea edx, [esp + 0x10]
mov ecx, 0xd
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xa0]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov esi, dword [ebx + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x418610
sar eax, 1
mov ecx, dword [ebp + 0x10]
mov edi, dword [ecx + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x418630
sar ecx, 1
lea edx, [eax + ecx]
add edx, 0x1b
test edx, edx
jns 0x41864e
mov eax, 0xffffffff
jmp 0x418655
add eax, ecx
add eax, eax
add eax, 0x36
push eax
call fcn.00408b20
add esp, 4
movzx ecx, word [esi]
mov dword [esp + 8], eax
test cx, cx
je 0x418691
add esi, 2
mov eax, dword [esp + 8]
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 [esi]
add esi, 2
test cx, cx
jne 0x418680
mov word [eax], 0
movzx ecx, word [esp + 0x6c]
test cx, cx
je 0x4186c1
lea edx, [esp + 0x6e]
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 0x4186b0
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x4186f1
add edi, 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 [edi]
add edi, 2
test cx, cx
jne 0x4186e0
mov word [eax], 0
mov dword [esp + 0x10], 0xebcf95e7
mov dword [esp + 0x14], 0xef5ce962
mov dword [esp + 0x18], 0xe35eed55
mov dword [esp + 0x1c], 0xe75fe157
mov dword [esp + 0x20], 0xfb56e557
mov dword [esp + 0x24], 0xff89f94f
lea eax, [esp + 0x28]
mov word [esp + 0x28], 0xfdfe
mov dword [esp + 0x2a], 0
mov dword [esp + 0x2e], 0
mov dword [esp + 0x32], 0
mov byte [esp + 0x36], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x26
ja 0x4187b1
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx esi, byte [esp + edx + 0x10]
lea edx, [ecx + esi]
add edx, 0xdb91a73d
add ecx, 0xdb91a73d
and ecx, esi
add ecx, ecx
mov esi, edx
not esi
and esi, ecx
not ecx
and ecx, edx
sub ecx, esi
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x50]
mov edx, ecx
xor edx, 0x54
and ecx, 0x54
lea ecx, [edx + ecx*2]
inc cl
mov edx, dword [esp]
mov byte [esp + edx + 0x10], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x27
jb 0x418760
lea edi, [esp + 0x50]
lea edx, [esp + 0x10]
mov ecx, 6
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x68]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov esi, dword [ebx]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x4187e0
mov edi, dword [ebx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x418800
mov edx, dword [ebp + 0x10]
mov ebx, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x418820
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0xe
test eax, eax
jns 0x418844
mov eax, 0xffffffff
jmp 0x41884c
add ecx, edx
lea eax, [ecx + ecx]
add eax, 0x1c
push eax
call fcn.00408b20
add esp, 4
movzx ecx, word [esi]
mov dword [esp + 0xc], eax
test cx, cx
je 0x418881
add esi, 2
mov eax, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x418870
mov word [eax], 0x2f
add eax, 2
movzx ecx, word [edi]
test cx, cx
je 0x4188b3
add edi, 2
mov esi, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x4188a0
jmp 0x4188b7
mov esi, dword [esp + 8]
mov word [eax], 0
movzx ecx, word [esp + 0x50]
test cx, cx
je 0x4188e1
lea edx, [esp + 0x52]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4188d0
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x418911
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 0x418900
mov word [eax], 0
mov dword [esp + 0x10], 0xebd4d5e8
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 7
ja 0x41897d
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + 0xdd]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0x387042dd
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xf5
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 8
jb 0x418940
push 0
push 0
push 0
push 0xc00000
lea eax, [esp + 0x20]
push eax
push esi
push dword [esp + 0x24]
push dword [ebp + 8]
call fcn.0041ae60
add esp, 0x20
mov ebx, eax
jmp dword [0x4441ec]