Function at 0x466660
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xb8
mov eax, dword [0x522d80]
xor eax, esp
mov dword [esp + 0xb4], eax
xor eax, eax
push esi
push edi
push 0x54
push eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov word [esp + 0x34], ax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov word [esp + 0x48], ax
lea eax, [esp + 0x4c]
push eax
mov edi, ecx
xor esi, esi
call fcn.00496bf0
mov eax, dword [edi + 0xb0]
add esp, 0xc
cmp byte [eax], 0x54
jne 0x466739
cmp byte [eax + 1], 0x69
jne 0x466739
cmp byte [eax + 2], 0x6e
jne 0x466739
cmp byte [eax + 3], 0x6b
jne 0x466739
mov ecx, 4
jmp 0x4666e0
mov edx, dword [edi + 0x100]
mov dl, byte [edx + esi]
xor byte [eax + ecx], dl
mov edx, esi
sub edx, dword [edi + 0x104]
inc ecx
neg edx
sbb edx, edx
and edx, esi
inc edx
cmp ecx, 0xe1f
mov esi, edx
jl 0x4666e0
mov cl, 0x67
mov byte [eax + 1], cl
mov byte [eax + 2], cl
mov byte [eax], 0x4f
mov byte [eax + 3], 0x53
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x28]
push eax
mov ecx, edi
call fcn.004653f0
test eax, eax
jne 0x46675c
jmp 0x4668c1
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, edi
call fcn.00465240
test eax, eax
je 0x4668c1
mov ecx, dword [esp + 0x20]
xor eax, eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov ax, word [esp + 0x1e]
mov word [esp + 0xe], ax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
xor eax, eax
mov edx, 1
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], eax
mov word [esp + 0xc], dx
mov dx, word [esp + 0x28]
lea eax, [esp + 0xc]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x10], ecx
mov cx, word [esp + 0x2a]
mov word [esp + 0x18], dx
mov edx, dword [esp + 0x68]
mov word [esp + 0x1a], cx
mov dword [esp + 0x98], 0x24
mov dword [esp + 0x9c], 0x18082
mov dword [esp + 0xa0], edx
cmp eax, 1
jne 0x46683e
mov ecx, edi
call fcn.00465810
lea ecx, [esp + 0x98]
push ecx
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x10]
push eax
lea ecx, [edi + 0x70]
push ecx
jmp 0x4668b5
test eax, eax
jne 0x466856
mov ecx, edi
call fcn.00465890
lea edx, [esp + 0x98]
push edx
lea edx, [edi + 0x74]
jmp 0x4668aa
cmp eax, 2
jne 0x46687a
mov ecx, edi
call fcn.004658c0
lea eax, [esp + 0x98]
push eax
lea ecx, [esp + 0x48]
push ecx
lea edx, [esp + 0x10]
push edx
lea eax, [edi + 0x78]
push eax
jmp 0x4668b5
cmp eax, 3
jne 0x466897
lea ecx, [esp + 0x98]
push ecx
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x10]
push eax
lea ecx, [edi + 0x7c]
push ecx
jmp 0x4668b5
cmp eax, 4
jne 0x4668bc
lea edx, [esp + 0x98]
push edx
lea edx, [edi + 0x80]
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x10]
push ecx
push edx
mov ecx, edi
call fcn.00465580
mov eax, 1
mov ecx, dword [esp + 0xbc]
pop edi
pop esi
xor ecx, esp
call fcn.00497565
add esp, 0xb8
ret 4