Function at 0x4184f7
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x2c4
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x38], edi
xor esi, esi
mov dword [esp + 0x28], 0xb79887ce
mov byte [esp + 0x2c], 0xc1
mov al, byte [esp + esi + 0x28]
xor al, 0xeb
movzx eax, al
mov word [esp + esi*2 + 0x64], ax
inc esi
cmp esi, 5
jl 0x41851a
xor eax, eax
mov dword [esp + 0x30], 0x5f766f28
mov word [esp + 0x6e], ax
xor ecx, ecx
mov word [esp + 0x34], 0x6f28
mov esi, 0xff
mov byte [esp + 0x36], 0x76
movzx eax, byte [esp + ecx + 0x30]
sub ax, 3
and ax, si
mov word [esp + ecx*2 + 0x70], ax
inc ecx
cmp ecx, 7
jl 0x418550
mov ebx, dword [esp + 0x2dc]
xor eax, eax
mov word [esp + 0x7e], ax
test ebx, ebx
je 0x418921
lea eax, [esp + 0x64]
push edi
push eax
call fcn.0041b737
mov ebp, eax
mov dword [esp + 0x30], ebp
pop ecx
pop ecx
test ebp, ebp
je 0x418761
lea eax, [esp + 0x80]
xor ecx, ecx
push eax
push ebp
mov edx, 0x54e1cc7b
inc ecx
call fcn.00412ca7
call eax
xor ecx, ecx
mov esi, eax
mov edx, 0x17299c7b
mov dword [esp + 0x3c], esi
inc ecx
call fcn.00412ca7
cmp esi, 0xffffffff
je 0x418755
mov word [esp + 0x10], 0x1e1e
mov ebp, eax
push 0x2e
pop eax
mov word [esp + 0x24], ax
mov edx, 0xff
xor eax, eax
xor ecx, ecx
mov word [esp + 0x26], ax
movzx eax, byte [esp + ecx + 0x10]
add ax, 0x10
and ax, dx
mov word [esp + ecx*2 + 0x30], ax
inc ecx
cmp ecx, 2
jl 0x4185eb
xor eax, eax
mov word [esp + 0x34], ax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0xb0]
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x41872e
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0xb0]
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x41872e
test byte [esp + 0x80], 0x10
je 0x41872e
mov dword [esp + 0x14], 0xb4cbc47d
xor ecx, ecx
mov word [esp + 0x18], 0xc47d
mov edx, 0xff
mov byte [esp + 0x1a], 0xcb
movzx eax, byte [esp + ecx + 0x14]
sub ax, 0x58
and ax, dx
mov word [esp + ecx*2 + 0x44], ax
inc ecx
cmp ecx, 7
jl 0x41866a
xor eax, eax
mov word [esp + 0x52], ax
lea eax, [esp + 0xac]
push eax
lea eax, [esp + 0x48]
push edi
push eax
call fcn.0041b737
mov edi, eax
add esp, 0xc
test edi, edi
je 0x41872a
push 0x2e
pop eax
mov byte [esp + 0x1c], al
xor ecx, ecx
mov word [esp + 0x1d], 0x7867
mov byte [esp + 0x1f], 0x24
mov byte [esp + 0x20], al
mov word [esp + 0x21], 0x7867
mov al, byte [esp + ecx + 0x1c]
xor al, 0xb
movzx eax, al
mov word [esp + ecx*2 + 0x54], ax
inc ecx
cmp ecx, 7
jl 0x4186c8
xor eax, eax
mov word [esp + 0x62], ax
lea eax, [esp + 0xac]
push eax
push dword [esp + 0x44]
lea eax, [esp + 0x5c]
push eax
call fcn.0041b737
mov esi, eax
add esp, 0xc
test esi, esi
je 0x41871f
lea ecx, [ebx - 1]
mov edx, esi
push ecx
push dword [esp + 0x2dc]
mov ecx, edi
call fcn.004184f7
push esi
call fcn.004056f0
add esp, 0xc
push edi
call fcn.004056f0
mov esi, dword [esp + 0x40]
pop ecx
mov edi, dword [esp + 0x38]
lea eax, [esp + 0x80]
push eax
push esi
call ebp
test eax, eax
jne 0x4185d5
xor ecx, ecx
mov edx, 0x83fbc401
push esi
inc ecx
call fcn.00412ca7
call eax
mov ebp, dword [esp + 0x28]
push ebp
call fcn.004056f0
pop ecx
mov esi, 0xff
push dword [esp + 0x2d8]
lea eax, [esp + 0x74]
push edi
push eax
call fcn.0041b737
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x3c], ebx
test ebx, ebx
je 0x418921
lea eax, [esp + 0x80]
xor ecx, ecx
push eax
push ebx
mov edx, 0x54e1cc7b
inc ecx
call fcn.00412ca7
call eax
xor ecx, ecx
mov edx, 0x17299c7b
inc ecx
mov ebp, eax
call fcn.00412ca7
mov dword [esp + 0x28], eax
cmp ebp, 0xffffffff
je 0x41891a
mov word [esp + 0x10], 0x2929
mov ebx, eax
push 0x2e
pop eax
mov word [esp + 0x24], ax
xor eax, eax
mov word [esp + 0x26], ax
xor ecx, ecx
mov al, byte [esp + ecx + 0x10]
xor al, 7
movzx eax, al
mov word [esp + ecx*2 + 0x30], ax
inc ecx
cmp ecx, 2
jl 0x4187d2
xor eax, eax
mov word [esp + 0x34], ax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0xb0]
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x4188ee
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0xb0]
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x4188ee
test byte [esp + 0x80], 0xa7
je 0x4188ee
mov dword [esp + 0x1c], 0xc6ddd68f
xor ecx, ecx
mov word [esp + 0x20], 0xd68f
mov byte [esp + 0x22], 0xdd
movzx eax, byte [esp + ecx + 0x1c]
sub ax, 0x6a
and ax, si
mov word [esp + ecx*2 + 0x54], ax
inc ecx
cmp ecx, 7
jl 0x418849
xor eax, eax
mov word [esp + 0x62], ax
lea eax, [esp + 0xac]
push eax
lea eax, [esp + 0x58]
push edi
push eax
call fcn.0041b737
mov edi, eax
add esp, 0xc
test edi, edi
je 0x4188ea
mov dword [esp + 0x14], 0xf6aab5fc
xor ecx, ecx
mov word [esp + 0x18], 0xb5fc
mov byte [esp + 0x1a], 0xaa
mov al, byte [esp + ecx + 0x14]
xor al, 0xd9
movzx eax, al
mov word [esp + ecx*2 + 0x44], ax
inc ecx
cmp ecx, 7
jl 0x418899
xor eax, eax
mov word [esp + 0x52], ax
lea eax, [esp + 0xac]
push eax
push dword [esp + 0x44]
lea eax, [esp + 0x4c]
push eax
call fcn.0041b737
mov esi, eax
add esp, 0xc
test esi, esi
je 0x4188e3
mov edx, esi
mov ecx, edi
call fcn.0041892c
push esi
call fcn.004056f0
pop ecx
push edi
call fcn.004056f0
pop ecx
mov edi, dword [esp + 0x38]
lea eax, [esp + 0x80]
push eax
push ebp
call ebx
mov esi, 0xff
test eax, eax
jne 0x4187c1
xor ecx, ecx
mov edx, 0x83fbc401
push ebp
inc ecx
call fcn.00412ca7
call eax
mov ebx, dword [esp + 0x3c]
push ebx
call fcn.004056f0
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c4
ret