Function at 0x4538f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x10
mov ecx, 0x24c
xor eax, eax
push ebx
push ebp
mov ebp, dword [esp + 0x28]
push esi
mov esi, dword [esp + 0x20]
push edi
mov edi, ebp
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0xcc60]
mov ecx, dword [esi + 0xcc5c]
mov edi, dword [esp + 0x2c]
shl eax, 6
mov edx, dword [eax + ecx + 0x1bd0]
test dh, 0xc0
je 0x4539f4
mov eax, 0x7482296b
imul edi
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
call fcn.00450190
mov byte [ebp + 0xc], al
mov eax, edi
cdq
mov ecx, 0x1194
idiv ecx
mov eax, 0x1b4e81b5
mov ebx, edx
imul ebx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
call fcn.00450190
mov byte [ebp + 0xd], al
mov eax, ebx
cdq
mov ecx, 0x4b
idiv ecx
push edx
call fcn.00450190
mov byte [ebp + 0xe], al
mov edx, dword [esi + 0xcc60]
mov eax, dword [esi + 0xcc5c]
add esp, 0xc
shl edx, 6
mov ecx, dword [edx + eax + 0x1bd0]
test ch, 0x40
je 0x4539a4
mov byte [ebp + 0xf], 1
jmp 0x4539a8
mov byte [ebp + 0xf], 2
mov ecx, dword [esi + 0xcc60]
mov edx, dword [esi + 0xcc5c]
shl ecx, 6
mov eax, dword [ecx + edx + 0x1bd0]
test ah, 0x80
je 0x4539cb
mov al, 0x20
mov byte [ebp + 0x12], al
mov byte [ebp + 0x16], al
mov eax, dword [esi + 0xcc60]
mov ecx, dword [esi + 0xcc5c]
shl eax, 6
push 0
push edi
mov edx, dword [eax + ecx + 0x1bd0]
push edx
push ebp
call fcn.00454860
push ebp
call fcn.00454480
add esp, 0x14
xor eax, eax
mov ecx, 0x3c
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x28]
cdq
idiv ecx
cmp edx, 0x1d
jne 0x453bb4
mov eax, dword [esi + 0xcc5c]
mov cl, byte [eax + 0x248]
cmp cl, 0xff
je 0x453bb4
test cl, cl
je 0x453bb4
mov byte [esp + 0x10], 2
mov dl, byte [eax + 0x248]
sub dl, 0x30
push edx
call fcn.00450190
mov bl, al
mov eax, dword [esi + 0xcc5c]
shl bl, 4
mov cl, byte [eax + 0x249]
sub cl, 0x30
push ecx
call fcn.00450190
mov edx, dword [esi + 0xcc5c]
or bl, al
mov byte [esp + 0x19], bl
mov al, byte [edx + 0x24a]
sub al, 0x30
push eax
call fcn.00450190
mov ecx, dword [esi + 0xcc5c]
mov bl, al
shl bl, 4
mov dl, byte [ecx + 0x24b]
sub dl, 0x30
push edx
call fcn.00450190
or bl, al
mov eax, dword [esi + 0xcc5c]
mov byte [esp + 0x22], bl
mov cl, byte [eax + 0x24c]
sub cl, 0x30
push ecx
call fcn.00450190
mov edx, dword [esi + 0xcc5c]
mov bl, al
shl bl, 4
mov al, byte [edx + 0x24d]
sub al, 0x30
push eax
call fcn.00450190
mov ecx, dword [esi + 0xcc5c]
or bl, al
mov byte [esp + 0x2b], bl
mov dl, byte [ecx + 0x24e]
sub dl, 0x30
push edx
call fcn.00450190
mov bl, al
mov eax, dword [esi + 0xcc5c]
shl bl, 4
mov cl, byte [eax + 0x24f]
sub cl, 0x30
push ecx
call fcn.00450190
mov edx, dword [esi + 0xcc5c]
or bl, al
mov byte [esp + 0x34], bl
mov al, byte [edx + 0x250]
sub al, 0x30
push eax
call fcn.00450190
mov ecx, dword [esi + 0xcc5c]
mov bl, al
shl bl, 4
mov dl, byte [ecx + 0x251]
sub dl, 0x30
push edx
call fcn.00450190
or bl, al
mov eax, dword [esi + 0xcc5c]
mov byte [esp + 0x3d], bl
mov cl, byte [eax + 0x252]
sub cl, 0x30
push ecx
call fcn.00450190
mov edx, dword [esi + 0xcc5c]
mov bl, al
shl bl, 4
mov al, byte [edx + 0x253]
sub al, 0x30
push eax
call fcn.00450190
mov ecx, dword [esi + 0xcc5c]
or bl, al
mov byte [esp + 0x46], bl
mov dl, byte [ecx + 0x254]
sub dl, 0x30
push edx
call fcn.00450190
shl al, 4
mov byte [esp + 0x4b], al
mov eax, edi
cdq
mov ecx, 0x1194
mov byte [esp + 0x4c], 0
idiv ecx
mov ecx, 0x4b
mov eax, edx
cdq
idiv ecx
push edx
call fcn.00450190
add esp, 0x38
jmp 0x453e52
cmp edx, 0x3b
jne 0x453d5d
mov edx, dword [esi + 0xcc60]
mov eax, dword [esi + 0xcc5c]
shl edx, 6
lea ebx, [edx + eax]
mov al, byte [edx + eax + 0x1be0]
cmp al, 0xff
je 0x453d5d
test al, al
je 0x453d5d
mov byte [esp + 0x10], 3
mov cl, byte [ebx + 0x1be0]
mov dl, byte [ebx + 0x1be1]
add cl, 0x10
shl cl, 2
shr dl, 4
or cl, dl
mov byte [esp + 0x11], cl
mov al, byte [ebx + 0x1be1]
mov cl, byte [ebx + 0x1be2]
shl al, 4
shr cl, 2
or al, cl
mov byte [esp + 0x12], al
mov dl, byte [ebx + 0x1be2]
mov al, byte [ebx + 0x1be3]
shl dl, 6
or al, dl
mov edx, dword [esi + 0xcc60]
mov byte [esp + 0x13], al
mov cl, byte [ebx + 0x1be4]
mov eax, dword [esi + 0xcc5c]
add cl, 0x10
shl cl, 2
shl edx, 6
mov byte [esp + 0x14], cl
mov cl, byte [edx + eax + 0x1be6]
sub cl, 0x30
push ecx
call fcn.00450190
mov dl, al
mov al, byte [ebx + 0x1be5]
sub al, 0x30
mov byte [esp + 0x2c], dl
push eax
call fcn.00450190
mov cl, byte [esp + 0x30]
mov edx, dword [esi + 0xcc60]
shl al, 4
or cl, al
mov eax, dword [esi + 0xcc5c]
shl edx, 6
mov byte [esp + 0x1d], cl
mov cl, byte [edx + eax + 0x1be7]
sub cl, 0x30
push ecx
call fcn.00450190
mov edx, dword [esi + 0xcc60]
mov bl, al
mov eax, dword [esi + 0xcc5c]
shl edx, 6
shl bl, 4
mov cl, byte [edx + eax + 0x1be8]
sub cl, 0x30
push ecx
call fcn.00450190
mov edx, dword [esi + 0xcc60]
or bl, al
mov eax, dword [esi + 0xcc5c]
mov byte [esp + 0x26], bl
shl edx, 6
mov cl, byte [edx + eax + 0x1be9]
sub cl, 0x30
push ecx
call fcn.00450190
mov edx, dword [esi + 0xcc60]
mov bl, al
mov eax, dword [esi + 0xcc5c]
shl edx, 6
shl bl, 4
mov cl, byte [edx + eax + 0x1bea]
sub cl, 0x30
push ecx
call fcn.00450190
mov edx, dword [esi + 0xcc60]
or bl, al
mov eax, dword [esi + 0xcc5c]
mov byte [esp + 0x2f], bl
shl edx, 6
mov cl, byte [edx + eax + 0x1beb]
sub cl, 0x30
push ecx
call fcn.00450190
shl al, 4
mov byte [esp + 0x34], al
mov eax, edi
cdq
mov ecx, 0x1194
idiv ecx
mov ecx, 0x4b
mov eax, edx
cdq
idiv ecx
push edx
call fcn.00450190
add esp, 0x20
jmp 0x453e52
mov edx, dword [esi + 0xcc60]
mov eax, dword [esi + 0xcc5c]
shl edx, 6
mov ecx, dword [edx + eax + 0x1bd0]
mov dl, byte [esi + 0xcc60]
and ecx, 0xc000
neg ecx
sbb cl, cl
and cl, 0x40
inc cl
inc dl
push edx
mov byte [esp + 0x14], cl
call fcn.00450190
mov ebx, dword [esp + 0x2c]
mov byte [esp + 0x15], al
mov eax, 0x7482296b
mov byte [esp + 0x16], 0
imul ebx
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
call fcn.00450190
mov byte [esp + 0x1b], al
mov eax, ebx
cdq
mov ecx, 0x1194
idiv ecx
mov eax, 0x1b4e81b5
mov ebx, edx
imul ebx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
call fcn.00450190
mov byte [esp + 0x20], al
mov eax, ebx
cdq
mov ecx, 0x4b
idiv ecx
push edx
call fcn.00450190
mov byte [esp + 0x25], al
dec edi
mov eax, 0x7482296b
mov byte [esp + 0x26], 0
imul edi
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
call fcn.00450190
mov byte [esp + 0x2b], al
mov eax, edi
cdq
mov ecx, 0x1194
idiv ecx
mov eax, 0x1b4e81b5
mov edi, edx
imul edi
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
call fcn.00450190
mov byte [esp + 0x30], al
mov eax, edi
cdq
mov ecx, 0x4b
idiv ecx
push edx
call fcn.00450190
add esp, 0x1c
mov byte [esp + 0x19], al
mov al, byte [esp + 0x1f]
or al, 0x80
mov byte [esp + 0x1f], al
xor eax, eax
xor ecx, ecx
mov edi, eax
xor edx, edx
mov dl, byte [esp + ecx + 0x10]
and edi, 0xffff
shr edi, 8
xor edx, edi
xor ebx, ebx
mov bh, al
mov ax, word [edx*2 + 0x4ac260]
xor ax, bx
inc ecx
cmp ecx, 0xa
jl 0x453e64
and eax, 0xffff
not eax
push eax
lea eax, [esp + 0x1e]
push eax
call fcn.0044ffd0
mov ecx, dword [esi + 0xcc60]
mov edx, dword [esi + 0xcc5c]
shl ecx, 6
add esp, 8
test dword [ecx + edx + 0x1bd0], 0x100000
je 0x453edb
lea eax, [esp + 0x10]
push 0x10
add ebp, 0x930
push eax
push ebp
call fcn.0047e960
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
xor esi, esi
mov edx, esi
and edx, 0x80000007
jns 0x453eec
dec edx
or edx, 0xfffffff8
inc edx
mov cl, 7
mov eax, esi
sub cl, dl
cdq
and edx, 7
add eax, edx
sar eax, 3
mov al, byte [esp + eax + 0x10]
shr al, cl
or al, 0xfe
shl al, 6
mov byte [esi + ebp + 0x930], al
inc esi
cmp esi, 0x60
jl 0x453edd
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret