Function at 0x4187e0
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], 0x7ba479ca
mov dword [esp + 0x14], 0x7fd97dcb
mov dword [esp + 0x18], 0x73cc71dd
mov dword [esp + 0x1c], 0x77b37592
mov dword [esp + 0x20], 0x4bfc49fe
mov dword [esp + 0x24], 0x4ff24ded
mov dword [esp + 0x28], 0x43fb41fb
mov dword [esp + 0x2c], 0x47fa45f3
mov dword [esp + 0x30], 0x5b8d59a6
mov dword [esp + 0x34], 0x5fe85dfd
mov dword [esp + 0x38], 0x53eb51ea
mov dword [esp + 0x3c], 0x57ed55ec
mov dword [esp + 0x40], 0x2b8429e3
lea eax, [esp + 0x44]
mov word [esp + 0x44], 0x2d2a
mov dword [esp + 0x46], 0
mov dword [esp + 0x4a], 0
mov word [esp + 0x4e], 0
mov dword [esp + 0x50], 0
mov ecx, dword [esp + 0x50]
cmp ecx, 0x3f
ja 0x4188da
nop
nop
nop
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x50]
movzx edx, byte [esp + edx + 0x10]
lea esi, [ecx - 0x15112371]
and esi, edx
add ecx, edx
add ecx, 0xeaeedc8f
add esi, esi
sub ecx, esi
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x6c]
mov edx, ecx
or edx, 0x16
and ecx, 0x16
add ecx, edx
inc cl
mov edx, dword [esp + 0x50]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 0x50]
mov ecx, dword [esp + 0x50]
cmp ecx, 0x40
jb 0x418890
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
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x418910
mov ecx, eax
sar ecx, 1
xor ecx, 0x1b
mov edx, dword [ebp + 0x10]
mov edi, dword [edx + 4]
mov edx, 0xfffffffe
nop
nop
nop
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x418930
and eax, 0x36
add ecx, eax
sar edx, 1
mov eax, edx
and eax, ecx
xor edx, ecx
lea eax, [edx + eax*2]
test eax, eax
jns 0x418956
mov eax, 0xffffffff
jmp 0x418958
add eax, eax
push eax
call fcn.00408c40
add esp, 4
movzx ecx, word [esi]
mov dword [esp + 0xc], eax
test cx, cx
je 0x418991
add esi, 2
mov eax, dword [esp + 0xc]
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 0x418980
mov word [eax], 0
movzx ecx, word [esp + 0x6c]
test cx, cx
je 0x4189c1
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 0x4189b0
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x4189f1
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 0x4189e0
mov word [eax], 0
mov dword [esp + 0x10], 0x33ef3507
mov dword [esp + 0x14], 0xcfbc31ba
mov dword [esp + 0x18], 0xcb3ecd35
mov dword [esp + 0x1c], 0xc73fc947
mov dword [esp + 0x20], 0xc336c537
mov dword [esp + 0x24], 0xdff1c14f
lea eax, [esp + 0x28]
mov dword [esp + 8], eax
mov word [esp + 0x28], 0xddde
mov dword [esp + 0x2a], 0
mov dword [esp + 0x2e], 0
mov dword [esp + 0x32], 0
mov word [esp + 0x36], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x27
ja 0x418ac2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx esi, byte [esp + edx + 0x10]
lea ebx, [ecx + 0x712e0e79]
mov edx, ebx
mov edi, esi
not edi
or edi, ebx
and ebx, esi
xor edx, esi
mov eax, 0x8ed1f186
sub eax, ecx
or eax, esi
add ecx, esi
add ecx, eax
add ecx, edi
sub edx, ecx
lea eax, [edx + ebx*2]
add eax, 0x8ed1f185
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x50]
add al, 0xb1
mov ecx, dword [esp]
mov byte [esp + ecx + 0x10], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x28
jb 0x418a70
lea edi, [esp + 0x50]
lea eax, [esp + 0x10]
mov ecx, 6
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x68]
mov ecx, 1
mov eax, dword [esp + 8]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, dword [ebp + 0xc]
mov edi, dword [ecx]
mov eax, 0xfffffffe
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x418af0
mov esi, dword [ecx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x418b10
sar eax, 1
add eax, 0xe
mov edx, dword [ebp + 0x10]
mov ebx, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x418b30
sar ecx, 1
add eax, ecx
sar edx, 1
mov ecx, edx
and ecx, eax
xor edx, eax
lea eax, [edx + ecx*2]
test eax, eax
jns 0x418b55
mov eax, 0xffffffff
jmp 0x418b57
add eax, eax
push eax
call fcn.00408c40
add esp, 4
movzx ecx, word [edi]
mov dword [esp + 8], eax
test cx, cx
je 0x418b91
add edi, 2
mov eax, dword [esp + 8]
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 0x418b80
mov word [eax], 0x2f
add eax, 2
movzx ecx, word [esi]
test cx, cx
je 0x418bc1
add esi, 2
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 0x418bb0
mov word [eax], 0
movzx ecx, word [esp + 0x50]
test cx, cx
je 0x418bf3
lea edx, [esp + 0x52]
mov esi, dword [esp + 0xc]
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 0x418be0
jmp 0x418bf7
mov esi, dword [esp + 0xc]
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x418c21
add ebx, 2
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 0x418c10
mov word [eax], 0
mov dword [esp + 0x10], 0x7b78795c
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov byte [esp + 0x1c], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xc
ja 0x418c9e
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 + 0x10]
lea edx, [eax + ecx]
add edx, 0x9ffa362f
add eax, 0x9ffa362f
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp], edx
mov eax, dword [esp]
add al, 0xb7
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xd
jb 0x418c60
push 0
push 0
push 0
push 0xc00000
lea eax, [esp + 0x20]
push eax
push esi
push dword [esp + 0x20]
push dword [ebp + 8]
call fcn.0041ba20
add esp, 0x20
mov ebx, eax
jmp dword [0x444134]