Function at 0x536ca0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5bbf7b
mov eax, dword fs:[0]
push eax
sub esp, 0x14c
mov eax, dword [0x68683c]
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.0046dee0
mov eax, dword [edi + 0x538]
xor ebx, ebx
mov dword [ebp - 4], ebx
cmp eax, 0x10
jg 0x5370f0
cmp eax, ebx
jl 0x5370f0
cmp dword [edi + 0x534], ebx
jne 0x536fac
cmp dword [edi + 0x530], ebx
jne 0x536d56
cmp eax, 0xc
jne 0x536d56
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 0x536f46
cmp eax, ebx
jbe 0x536d78
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 0x536d67
mov eax, dword [edi + 0x538]
cmp eax, ebx
je 0x536db1
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.005344a0
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.005344a0
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 0x5370e9
cmp dword [edi + 0x538], 0x10
jge 0x5370e9
mov esi, dword [ebp - 0x154]
lea ecx, [esi + 0x50]
call fcn.0041b6d0
lea ecx, [esi + 0x50]
mov dword [ebp - 0x14c], eax
call fcn.004078c0
mov dword [ebp - 0x158], eax
cmp dword [edi + 0x538], ebx
jne 0x537061
mov ecx, eax
and ecx, 0xfffffff0
mov dword [ebp - 0x154], ecx
jbe 0x53705b
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.005344a0
add esp, 8
add dword [edi + 0x540], 0x80
adc dword [edi + 0x544], 0
add ebx, 0x10
cmp ebx, dword [ebp - 0x154]
jb 0x537003
mov eax, dword [ebp - 0x158]
add dword [ebp - 0x14c], ebx
cmp ebx, eax
jae 0x5370d3
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 0x5370d0
lea eax, [ebp - 0x144]
push eax
lea esi, [edi + 0x4f0]
push edi
call fcn.005344a0
xor eax, eax
add esp, 8
add dword [edi + 0x540], 0x80
mov dword [edi + 0x538], eax
adc dword [edi + 0x544], eax
dec ebx
jne 0x537070
lea ecx, [ebp - 0x144]
mov dword [ebp - 4], 0xffffffff
call fcn.0046df00
mov al, 1
jmp 0x537112
push str.Internal_error_2
jmp 0x5370f5
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.0046df00
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.005a6cf8
mov esp, ebp
pop ebp
ret 0x10