Function at 0x4181c1
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x430
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov esi, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [eax + esi + 2], 0
lea esi, [esi + 2]
jne 0x418150
sar esi, 1
lea edi, [esp + 0x78]
push edi
push 0
push 0
push esi
push eax
push 0
call dword [0x44d264]
mov dword [esp + 0xf0], 0x1464769
mov dword [esp + 0xf4], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x91
xor dl, byte [esp + ecx + 0xf0]
add dl, 0x2b
mov byte [esp + ecx + 0xf0], dl
inc ecx
cmp ecx, 8
jne case.default.0x4181ba
xor ecx, ecx
cmp eax, dword [esp + 0xf0]
setne cl
xor ebx, ebx
jmp dword [ecx*4 + 0x446970]
mov ebx, dword [esp + 0x78]
test ebx, ebx
jns 0x4181d0
mov eax, 0xffffffff
jmp 0x4181d3
lea eax, [ebx + ebx]
push eax
call fcn.00408250
add esp, 4
push edi
push ebx
mov dword [esp + 0x34], eax
push eax
push esi
mov eax, dword [ebp + 0xc]
push dword [eax + 4]
push 0
call dword [0x44d264]
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x446978]
xor ebx, ebx
jmp dword [0x446980]
push dword [esp + 0x2c]
jmp 0x41b0ef
mov eax, dword [esp + 0x78]
mov ecx, eax
add ecx, 0xd
jns 0x418221
mov eax, 0xffffffff
jmp 0x418228
lea eax, [eax*2 + 0x1a]
push eax
call fcn.00408250
add esp, 4
mov edi, eax
mov dword [esp + 0xf0], 0x71a27fd0
mov dword [esp + 0xf4], 0x75c773d3
mov dword [esp + 0xf8], 0x499677c0
mov dword [esp + 0xfc], 0x4ded4b9e
mov dword [esp + 0x100], 0x41fb4ffe
mov dword [esp + 0x104], 0x45f343fb
mov dword [esp + 0x108], 0x594647fa
mov word [esp + 0x10c], 0
mov byte [esp + 0x10e], 0
mov eax, 0x18a58e15
mov ecx, 0xea
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x18a58d25]
mov esi, eax
or esi, edx
not edx
or edx, ecx
and edx, esi
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
add dl, 0x96
mov byte [esp + eax - 0x18a58d25], dl
inc eax
dec ecx
cmp eax, 0x18a58e34
jne 0x4182a0
mov edx, dword [esp + 0x2c]
movzx ecx, word [edx]
mov eax, edi
test cx, cx
je 0x418301
add edx, 2
mov eax, edi
nop
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 0x4182f0
mov word [eax], 0
movzx ecx, word [esp + 0xf0]
test cx, cx
je 0x418331
lea edx, [esp + 0xf2]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x418320
mov word [eax], 0
lea eax, [esp + 0x290]
push 0x60
push 3
push 0x120089
push eax
push edi
call fcn.00440510
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x446988]
lea eax, [esp + 0x30]
push 0
push eax
push dword [esp + 0x298]
call fcn.00440830
add esp, 0xc
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x446990]
mov eax, dword [esp + 0x290]
mov dword [esp + 0xf0], 0xb8bbba85
mov word [esp + 0xf4], 0
mov byte [esp + 0xf6], 0
mov ecx, 0xdf
mov edx, 0x20
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x11]
mov esi, ebx
not esi
or esi, edx
or ebx, ecx
and ebx, esi
add bl, 0xa5
mov byte [esp + ecx + 0x11], bl
inc ecx
dec edx
cmp ecx, 0xe6
jne 0x418570
mov ecx, dword [0x44d268]
test ecx, ecx
je case.0x4181ba.5
mov edx, dword [esp + 0xf0]
xor esi, esi
mov ebx, dword [0x44d26c]
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebx + esi*8], 0x1b6183f2
je 0x4185c0
inc esi
cmp ecx, esi
jne 0x4185b0
jmp case.0x4181ba.5
mov ecx, dword [ebx + esi*8 + 4]
cmp ecx, edx
jne 0x4185d4
jmp dword [0x4469c0]
push eax
push 4
push ecx
push dword [0x44d270]
call fcn.0043de40
add esp, 0x10
jmp dword [0x4469c0]
call fcn.00408260
add esp, 4
xor ebx, ebx
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret