Function at 0x4652f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xb8
mov eax, dword [0x521da0]
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.00495e20
mov eax, dword [edi + 0xb0]
add esp, 0xc
cmp byte [eax], 0x54
jne 0x4653c9
cmp byte [eax + 1], 0x69
jne 0x4653c9
cmp byte [eax + 2], 0x6e
jne 0x4653c9
cmp byte [eax + 3], 0x6b
jne 0x4653c9
mov ecx, 4
jmp 0x465370
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 0x465370
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.00464020
test eax, eax
jne 0x4653ec
jmp 0x465551
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.00463e70
test eax, eax
je 0x465551
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 0x4654ce
mov ecx, edi
call fcn.00464440
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 0x465545
test eax, eax
jne 0x4654e6
mov ecx, edi
call fcn.004644c0
lea edx, [esp + 0x98]
push edx
lea edx, [edi + 0x74]
jmp 0x46553a
cmp eax, 2
jne 0x46550a
mov ecx, edi
call fcn.004644f0
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 0x465545
cmp eax, 3
jne 0x465527
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 0x465545
cmp eax, 4
jne 0x46554c
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.004641b0
mov eax, 1
mov ecx, dword [esp + 0xbc]
pop edi
pop esi
xor ecx, esp
call fcn.00496795
add esp, 0xb8
ret 4