Function at 0x571ec0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
mov ecx, dword [eax]
mov dword [esi + 0xb4], ecx
mov edx, dword [eax + 4]
push edi
mov dword [esi + 0xb8], edx
call fcn.004e1f30
mov ecx, eax
mov eax, dword [esi + 0xb4]
lea eax, [ecx + eax - 1]
xor edx, edx
div ecx
mov edx, dword [esi + 0xb8]
lea edi, [esi + 0xfc]
imul eax, ecx
mov dword [esi + 0xb4], eax
lea eax, [edx + ecx - 1]
xor edx, edx
div ecx
imul eax, ecx
mov ecx, edi
mov dword [esi + 0xb8], eax
call fcn.00573550
xor ebx, ebx
mov dword [edi], ebx
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
lea edi, [esi + 0xdc]
mov ecx, edi
call fcn.004ee380
mov dword [edi], ebx
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
mov ebx, dword [esi + 0xb8]
mov eax, dword [esi + 0xb4]
inc ebx
inc eax
imul ebx, eax
mov eax, dword [edi + 4]
cmp ebx, eax
jbe 0x571f98
mov ecx, ebx
sub ecx, eax
push 1
push ecx
mov ecx, edi
call fcn.00573fd0
mov eax, dword [edi + 4]
cmp eax, ebx
jae 0x571f98
mov ecx, eax
mov edx, ebx
imul ecx, ecx, 0x1c
sub edx, eax
mov eax, dword [edi + 8]
add eax, ecx
je 0x571f92
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x18], 0
add ecx, 0x1c
dec edx
jne 0x571f76
mov dword [edi + 4], ebx
mov eax, dword [esi + 0xb4]
mov ecx, dword [esi + 0xb8]
mov ebx, dword [ebp + 8]
mov edi, dword [ebx + 0x14]
xor edx, edx
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x2c], eax
fild qword [ebp - 0x2c]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], edx
fmul dword [0x770ee8]
xor ecx, ecx
test edi, edi
setne cl
fmul dword [0x75c734]
mov dword [ebp - 8], edx
mov dl, byte [ebx + 0x10]
fstp dword [ebp - 0x2c]
mov byte [ebp - 1], dl
fild qword [ebp - 0x24]
xor edx, edx
mov dword [ebp - 0x10], 0
cmp ecx, edx
fmul dword [0x770ee8]
mov dword [ebp - 0x1c], ecx
fmul dword [0x75c734]
fstp dword [ebp - 0x28]
je 0x572033
mov dl, byte [ebp - 1]
mov ecx, dword [ebx + 0x14]
movzx edi, dl
add edi, ecx
cmp edi, dword [esi + 0x988]
jle 0x572017
sub dl, cl
mov byte [ebp - 1], dl
movzx edx, dl
add edx, ecx
mov dword [ebp - 0x14], edx
xor edx, edx
fild dword [ebp - 0x14]
fmul dword [0x820b8c]
fadd dword [0x820b74]
fstp dword [ebp - 0x10]
mov edi, dword [esi + 0xb8]
xor ecx, ecx
inc edi
test edi, edi
mov dword [ebp - 0x14], ecx
jbe 0x5721d2
lea edi, [eax + 1]
test edi, edi
mov dword [ebp - 0xc], edx
jbe 0x5721bf
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], edx
fild qword [ebp - 0x34]
fstp dword [ebp - 0x18]
fld dword [ebp - 0x10]
fadd dword [0x771084]
fmul dword [0x758b74]
call fcn.006fe226
mov edi, dword [ebp - 8]
shl eax, 0x12
imul edi, edi, 0x1c
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0xe4]
add eax, edi
push eax
mov ecx, esi
call fcn.006080d0
mov eax, dword [esi + 0xe4]
mov ecx, dword [eax + edi + 4]
mov edx, dword [ebp - 0xc]
mov ebx, dword [ebp - 8]
add eax, edi
and ecx, 0xfffc0000
or ecx, ebx
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x38], 0
fild qword [ebp - 0x3c]
mov dword [eax + 4], ecx
mov ebx, dword [esi + 0xe4]
fmul dword [0x770ee8]
add ebx, edi
fadd dword [ebp - 0x2c]
fadd dword [0x76d770]
fmul dword [0x75e5e4]
call fcn.006fe226
fld dword [ebp - 0x18]
mov ecx, dword [ebx]
shl eax, 0x17
and ecx, 0x7fffff
or eax, ecx
mov dword [ebx], eax
fmul dword [0x770ee8]
mov ebx, dword [esi + 0xe4]
add ebx, edi
fadd dword [ebp - 0x28]
fadd dword [0x76d770]
fmul dword [0x75e5e4]
call fcn.006fe226
mov edx, dword [ebx]
shl eax, 0xe
and edx, 0xff803fff
or eax, edx
mov dword [ebx], eax
mov eax, dword [esi + 0xe4]
mov ecx, dword [eax + edi]
mov bl, byte [ebp - 1]
add eax, edi
and ecx, 0xffffe000
or ecx, 0x2000
mov dword [eax], ecx
mov eax, dword [esi + 0xe4]
mov cl, byte [eax + edi + 0xa]
add eax, edi
mov dl, cl
xor dl, bl
and dl, 0xf
xor dl, cl
mov byte [eax + 0xa], dl
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x57216c
mov eax, dword [esi + 0xe4]
or byte [edi + eax + 0xc], 0x10
lea eax, [edi + eax + 0xc]
jmp 0x57217b
mov ecx, dword [esi + 0xe4]
and byte [edi + ecx + 0xc], 0xef
lea eax, [edi + ecx + 0xc]
mov eax, dword [esi + 0xe4]
mov edx, dword [eax + edi + 4]
mov ebx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xc]
add eax, edi
and edx, 0x3ffff
or edx, ebx
mov dword [eax + 4], edx
mov edx, dword [ebp - 8]
mov eax, dword [esi + 0xb4]
inc edx
add edi, 0x1c
mov dword [ebp - 8], edx
inc ecx
lea edx, [eax + 1]
cmp ecx, edx
mov dword [ebp - 0xc], ecx
jb 0x572081
mov ecx, dword [ebp - 0x14]
mov ebx, dword [ebp + 8]
xor edx, edx
mov edi, dword [esi + 0xb8]
inc ecx
inc edi
cmp ecx, edi
mov dword [ebp - 0x14], ecx
jb 0x572047
mov ecx, dword [esi + 0x81c]
mov dword [esi + 0x1cc], edx
mov eax, dword [ebx + 8]
push eax
call fcn.00508bb0
mov ecx, esi
mov byte [esi + 0x1d0], al
push eax
call fcn.0055e590
mov ecx, esi
call fcn.005e5de0
push 1
mov ecx, esi
call fcn.005ee6f0
mov ecx, esi
call fcn.005e7720
push 2
mov ecx, esi
call fcn.00570360
mov edx, dword [esi + 0x970]
or edx, 8
push 8
mov ecx, esi
mov dword [esi + 0x970], edx
call fcn.00572970
push 0xffffffffffffffff
push 0xffffffffffffffff
xor edi, edi
push edi
push edi
mov ecx, esi
call fcn.00571e20
mov ecx, esi
call fcn.005e68e0
cmp dword [esi + 0xe0], edi
mov dword [ebp - 8], edi
jbe 0x5722a9
xor ecx, ecx
mov dword [ebp - 0x14], ecx
mov eax, dword [esi + 0xe4]
mov dl, byte [eax + ecx + 8]
xor dl, byte [ebx + 0xc]
add eax, ecx
and dl, 0xf
xor byte [eax + 8], dl
mov edi, dword [esi + 0xe4]
mov eax, dword [ebx + 0xc]
add edi, ecx
push eax
mov ecx, esi
call fcn.0055f5e0
mov cl, byte [edi + 9]
mov ebx, dword [ebp + 8]
mov dl, cl
xor dl, al
mov eax, dword [ebp - 8]
and dl, 0x1f
xor dl, cl
mov ecx, dword [ebp - 0x14]
mov byte [edi + 9], dl
mov edx, dword [esi + 0xe0]
inc eax
add ecx, 0x1c
cmp eax, edx
mov dword [ebp - 8], eax
mov dword [ebp - 0x14], ecx
jb 0x572253
xor edi, edi
mov ecx, esi
call fcn.0056d4d0
mov ecx, esi
call fcn.0055fe60
mov ecx, esi
call fcn.005613a0
mov ecx, esi
call fcn.005b1160
mov ecx, esi
call fcn.005ece00
cmp dword [ebx + 0x18], edi
je 0x572308
mov ecx, dword [0x77102c]
mov eax, dword [0x771028]
mov edx, dword [0x771030]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], eax
mov eax, dword [0x771034]
lea ecx, [ebp - 0x44]
push ecx
mov ecx, esi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x44], 1
mov dword [ebp - 0x40], edi
call fcn.005a4ae0
push 0xffffffffffffffff
push 1
mov ecx, esi
call fcn.005a6510
mov ecx, esi
call fcn.005e7260
mov ecx, esi
call fcn.005e85d0
mov dword [esi + 0x938], edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4