Function at 0x52af30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5af84b
mov eax, dword fs:[0]
push eax
sub esp, 0x14c
mov eax, dword [0x676664]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 0x14]
mov edi, dword [ebp + 0xc]
lea ecx, [ebp - 0x144]
mov dword [ebp - 0x154], eax
mov dword [ebp - 0x14c], esi
call fcn.00462990
mov eax, dword [edi + 0x538]
xor ebx, ebx
mov dword [ebp - 4], ebx
cmp eax, 0x10
jg 0x52b380
cmp eax, ebx
jl 0x52b380
cmp dword [edi + 0x534], ebx
jne 0x52b23c
cmp dword [edi + 0x530], ebx
jne 0x52afe6
cmp eax, 0xc
jne 0x52afe6
mov ecx, dword [edi + 0x520]
mov edx, dword [edi + 0x524]
mov eax, dword [edi + 0x528]
mov dword [edi + 0x500], ecx
mov dword [edi + 0x504], edx
mov dword [edi + 0x508], eax
mov dword [edi + 0x50c], 0x1000000
jmp 0x52b1d6
cmp eax, ebx
jbe 0x52b008
mov ecx, 0xfffffb10
lea eax, [edi + 0x4f0]
sub ecx, edi
mov dl, byte [eax + 0x30]
xor byte [eax], dl
inc eax
lea edx, [ecx + eax]
cmp edx, dword [edi + 0x538]
jb 0x52aff7
mov eax, dword [edi + 0x538]
cmp eax, ebx
je 0x52b041
cdq
shld edx, eax, 3
add eax, eax
add eax, eax
add eax, eax
add dword [edi + 0x540], eax
lea eax, [ebp - 0x144]
push eax
adc dword [edi + 0x544], edx
lea esi, [edi + 0x4f0]
push edi
call fcn.00528730
add esp, 8
xor ebx, ebx
xor eax, eax
mov dword [edi + 0x520], eax
mov dword [edi + 0x524], eax
mov bl, byte [edi + 0x544]
mov byte [ebp - 0x150], bl
mov byte [edi + 0x52b], bl
mov bl, byte [edi + 0x543]
mov byte [ebp - 0x14f], bl
mov byte [edi + 0x52c], bl
mov bl, byte [edi + 0x542]
mov byte [ebp - 0x14d], bl
mov byte [edi + 0x52d], bl
mov bl, byte [edi + 0x541]
mov byte [ebp - 0x14e], bl
mov byte [edi + 0x52e], bl
mov bl, byte [edi + 0x540]
mov al, byte [edi + 0x547]
mov byte [ebp - 0x145], bl
mov byte [edi + 0x52f], bl
movzx ebx, byte [edi + 0x520]
xor byte [edi + 0x4f0], bl
movzx ebx, byte [edi + 0x521]
xor byte [edi + 0x4f1], bl
movzx ebx, byte [edi + 0x522]
xor byte [edi + 0x4f2], bl
movzx ebx, byte [edi + 0x523]
xor byte [edi + 0x4f3], bl
movzx ebx, byte [edi + 0x524]
xor byte [edi + 0x4f4], bl
movzx ebx, byte [edi + 0x525]
mov cl, byte [edi + 0x546]
mov dl, byte [edi + 0x545]
xor byte [edi + 0x4f8], al
xor byte [edi + 0x4f5], bl
xor byte [edi + 0x4f9], cl
xor byte [edi + 0x4fa], dl
movzx ebx, byte [edi + 0x526]
lea esi, [edi + 0x4f0]
xor byte [edi + 0x4f6], bl
movzx ebx, byte [edi + 0x527]
xor byte [edi + 0x4f7], bl
mov byte [edi + 0x528], al
movzx eax, byte [ebp - 0x14d]
xor byte [edi + 0x4fd], al
mov byte [edi + 0x529], cl
movzx ecx, byte [ebp - 0x150]
xor byte [edi + 0x4fb], cl
movzx ecx, byte [ebp - 0x14e]
xor byte [edi + 0x4fe], cl
mov byte [edi + 0x52a], dl
movzx edx, byte [ebp - 0x14f]
xor byte [edi + 0x4fc], dl
movzx edx, byte [ebp - 0x145]
xor byte [edi + 0x4ff], dl
lea eax, [ebp - 0x144]
push eax
push edi
call fcn.00528730
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [esi + 8]
mov dword [edi + 0x500], ecx
mov ecx, dword [esi + 0xc]
mov dword [edi + 0x504], edx
mov dword [edi + 0x508], eax
xor eax, eax
mov dword [edi + 0x50c], ecx
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
add esp, 8
mov dword [esi + 0xc], eax
mov esi, dword [ebp - 0x14c]
xor ebx, ebx
mov edx, dword [edi + 0x500]
mov eax, dword [edi + 0x504]
mov ecx, dword [edi + 0x508]
mov dword [edi + 0x510], edx
mov edx, dword [edi + 0x50c]
mov dword [edi + 0x514], eax
mov dword [edi + 0x518], ecx
xor eax, eax
mov dword [edi + 0x51c], edx
mov dword [edi + 0x520], eax
mov dword [edi + 0x524], eax
mov dword [edi + 0x528], eax
mov dword [edi + 0x52c], eax
mov dword [edi + 0x538], ebx
mov dword [edi + 0x540], ebx
mov dword [edi + 0x544], ebx
mov dword [edi + 0x534], 1
cmp dword [edi + 0x534], 1
jne 0x52b379
cmp dword [edi + 0x538], 0x10
jge 0x52b379
mov esi, dword [ebp - 0x154]
lea ecx, [esi + 0x50]
call fcn.00410b80
lea ecx, [esi + 0x50]
mov dword [ebp - 0x14c], eax
call fcn.00410b60
mov dword [ebp - 0x158], eax
cmp dword [edi + 0x538], ebx
jne 0x52b2f1
mov ecx, eax
and ecx, 0xfffffff0
mov dword [ebp - 0x154], ecx
jbe 0x52b2eb
lea esi, [edi + 0x4f0]
mov eax, dword [ebp - 0x14c]
mov ecx, dword [eax + ebx]
xor dword [esi], ecx
mov edx, dword [eax + ebx + 4]
xor dword [esi + 4], edx
mov ecx, dword [eax + ebx + 8]
xor dword [edi + 0x4f8], ecx
mov edx, dword [eax + ebx + 0xc]
xor dword [edi + 0x4fc], edx
lea eax, [ebp - 0x144]
push eax
push edi
call fcn.00528730
add esp, 8
add dword [edi + 0x540], 0x80
adc dword [edi + 0x544], 0
add ebx, 0x10
cmp ebx, dword [ebp - 0x154]
jb 0x52b293
mov eax, dword [ebp - 0x158]
add dword [ebp - 0x14c], ebx
cmp ebx, eax
jae 0x52b363
sub eax, ebx
mov ebx, eax
lea esp, [esp]
mov ecx, dword [edi + 0x538]
mov esi, dword [ebp - 0x14c]
mov dl, byte [esi]
xor byte [edi + ecx + 0x4f0], dl
inc dword [edi + 0x538]
lea eax, [edi + ecx + 0x4f0]
inc esi
cmp dword [edi + 0x538], 0x10
mov dword [ebp - 0x14c], esi
jne 0x52b360
lea eax, [ebp - 0x144]
push eax
lea esi, [edi + 0x4f0]
push edi
call fcn.00528730
xor eax, eax
add esp, 8
add dword [edi + 0x540], 0x80
mov dword [edi + 0x538], eax
adc dword [edi + 0x544], eax
dec ebx
jne 0x52b300
lea ecx, [ebp - 0x144]
mov dword [ebp - 4], 0xffffffff
call fcn.004629b0
mov al, 1
jmp 0x52b3a2
push str.Internal_error_2
jmp 0x52b385
push str.Internal_error.
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
mov ecx, esi
call eax
lea ecx, [ebp - 0x144]
mov dword [ebp - 4], 0xffffffff
call fcn.004629b0
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0059af98
mov esp, ebp
pop ebp
ret 0x10