Function at 0x4180d0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x2a0
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x20], edx
xor esi, esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x14], 0xa68996df
mov byte [esp + 0x18], 0xd0
mov al, byte [esp + esi + 0x14]
xor al, 0xfa
movzx eax, al
mov word [esp + esi*2 + 0x44], ax
inc esi
cmp esi, 5
jl 0x4180f1
push dword [esp + 0x2b4]
xor eax, eax
mov word [esp + 0x52], ax
mov al, byte [0x42ba0c]
sub al, 0x64
mov byte [0x42ba26], al
movzx eax, word [0x42ba54]
and eax, 0x79ec369f
mov dword [0x42ba0c], eax
mov eax, 0x2729
or ax, word [0x42ba04]
mov word [0x42ba44], ax
lea eax, [esp + 0x48]
push eax
call fcn.0042318b
pop ecx
pop ecx
mov ecx, dword [0x42ba60]
mov edi, eax
mov edx, ecx
mov dword [esp + 0x14], edi
xor edx, 0xc7f0af3d
add ecx, 0xffffde13
mov dword [0x42ba0c], edx
mov word [0x42ba44], cx
test edi, edi
je 0x4184cd
movzx ecx, byte [0x42ba26]
mov eax, 0xfdbc
imul ecx, eax
mov eax, dword [0x42ba40]
or eax, 0x47d8
mov word [0x42ba44], ax
mov al, dl
and al, 0x84
or edx, 0x1afa590c
mov byte [0x42ba52], al
movzx eax, al
imul eax, eax, 0x9de6a512
mov word [0x42ba54], cx
xor ecx, ecx
mov dword [0x42ba0c], edx
inc ecx
mov edx, 0x54e1cc7b
mov dword [0x42ba60], eax
lea eax, [esp + 0x60]
push eax
push edi
call fcn.0041568d
call eax
movzx ecx, word [0x42ba44]
mov ebx, eax
xor ecx, 0xe3228d60
mov dword [0x42ba0c], ecx
cmp ebx, 0xffffffff
je 0x4184aa
movzx ecx, byte [0x42ba26]
mov eax, 0x3acc
and dword [0x42ba60], 0xf65508bf
sub cx, ax
mov word [0x42ba04], cx
mov eax, 0x558c
or ax, word [0x42ba54]
or cl, 0xb5
mov byte [0x42ba26], cl
mov edx, 0x17299c7b
xor ecx, ecx
mov word [0x42ba44], ax
inc ecx
call fcn.0041568d
movzx ecx, byte [0x42ba26]
mov ebp, eax
mov edi, dword [esp + 0x20]
mov esi, 0xff
push 0x6d
pop eax
imul edx, ecx, 0xda
mov dword [esp + 0x2c], eax
mov byte [esp + 0x1c], al
mov byte [esp + 0x1d], al
mov dword [esp + 0x30], esi
push 0x2e
pop eax
mov word [esp + 0x20], ax
xor eax, eax
mov word [esp + 0x22], ax
xor ecx, ecx
movzx eax, byte [esp + ecx + 0x1c]
sub ax, 0x3f
and ax, si
mov word [esp + ecx*2 + 0x3c], ax
inc ecx
cmp ecx, 2
jl 0x41827d
xor eax, eax
add dl, 0xd3
mov word [esp + 0x40], ax
mov al, byte [0x42ba54]
sub al, 0x18
mov byte [0x42ba52], dl
mov byte [0x42ba26], al
mov eax, dword [0x42ba60]
and eax, 0xc4e11469
mov dword [0x42ba40], eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x90]
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x418475
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x90]
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x418475
movzx esi, byte [0x42ba26]
mov edx, 0xbc69
or dx, word [0x42ba54]
or esi, 0xb33a7b0c
and dword [0x42ba40], 0xd08d5162
test byte [esp + 0x60], 0x10
mov word [0x42ba04], dx
mov dword [0x42ba60], esi
je 0x418459
mov dword [esp + 0x24], 0xc9e0d992
xor ecx, ecx
mov word [esp + 0x28], 0xd992
mov byte [esp + 0x2a], 0xe0
movzx eax, byte [esp + ecx + 0x24]
sub ax, word [esp + 0x2c]
and ax, word [esp + 0x30]
mov word [esp + ecx*2 + 0x50], ax
inc ecx
cmp ecx, 7
jl 0x418348
movzx ecx, byte [0x42ba26]
xor eax, eax
mov word [esp + 0x5e], ax
lea eax, [esi - 0x1295]
mov word [0x42ba44], ax
mov eax, 0x7174
imul ecx, eax
movzx eax, dx
add eax, 0x25f51107
mov dword [0x42ba60], eax
lea eax, [esp + 0x8c]
push eax
push dword [esp + 0x2b8]
lea eax, [esp + 0x58]
mov word [0x42ba54], cx
push eax
call fcn.0042318b
movzx ecx, byte [0x42ba26]
mov esi, eax
and ecx, 0xb51a6554
add esp, 0xc
mov dword [0x42ba40], ecx
mov cl, byte [0x42ba04]
and cl, 0x34
mov byte [0x42ba26], cl
mov ecx, dword [0x42ba60]
mov edx, ecx
or edx, 0x676f
mov word [0x42ba04], dx
test esi, esi
je 0x418459
mov ax, word [0x42ba54]
sub cl, 0x45
mov dword [esp + 0x34], 0x2d04
and ax, word [esp + 0x34]
mov word [0x42ba44], ax
lea eax, [edx - 0x6d7c]
mov word [0x42ba04], ax
mov edx, edi
lea eax, [esp + 0x8c]
mov byte [0x42ba52], cl
mov ecx, dword [esp + 0x38]
push eax
push esi
call fcn.004184d8
movzx eax, word [0x42ba54]
or eax, 0x93e69b5a
mov dword [0x42ba40], eax
mov eax, 0x3ba5
xor word [0x42ba04], ax
push esi
call fcn.004056f0
add esp, 0xc
mov esi, 0xff
lea eax, [esp + 0x60]
push eax
push ebx
call ebp
test eax, eax
je 0x418486
mov dl, byte [0x42ba52]
jmp 0x41826c
mov eax, dword [0x42ba60]
xor eax, 0xa7c14731
mov dword [0x42ba0c], eax
jmp 0x41845e
mov eax, dword [0x42ba60]
xor ecx, ecx
and eax, 0x5fa5
mov edx, 0x83fbc401
push ebx
inc ecx
mov word [0x42ba04], ax
call fcn.0041568d
call eax
mov edi, dword [esp + 0x14]
movzx eax, byte [0x42ba26]
mov ecx, 0xbf4
add byte [0x42ba52], 0xda
sub ax, cx
push edi
mov word [0x42ba54], ax
call fcn.004056f0
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2a0
ret