Function at 0x10036550
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x138
mov eax, dword [0x10050da8]
mov dword [ebp - 0x38], eax
mov eax, dword [ecx + 0x170]
mov dword [ebp - 0x14], eax
mov al, byte [ecx + 0x1be]
mov byte [ebp - 1], al
mov al, byte [ecx + 0x1c0]
mov byte [ebp - 0xd], al
xor eax, eax
push esi
push edi
mov dword [ebp - 8], ecx
lea esi, [ebp - 0x130]
mov dword [ebp - 0x1c], eax
lea edi, [eax + 4]
mov ecx, esi
call fcn.10036b60
add esi, 0x28
sub edi, 1
jne 0x100365a2
mov esi, dword [ebp - 8]
xor eax, eax
mov dword [ebp - 0x28], eax
cmp dword [esi + 0x54], eax
jle 0x10036b53
mov dword [ebp - 0x24], edi
xor edx, edx
xor ecx, ecx
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esi + 0x38]
and ecx, dword [esi + 0x3c]
or edx, ecx
je 0x100367ae
mov edx, dword [ebp - 8]
xor eax, eax
mov esi, dword [edx + 0x10]
add esi, edi
cmp byte [ebp - 1], al
mov dword [ebp - 0x30], esi
setg al
inc eax
xor edi, edi
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x34], edi
test edi, edi
jne 0x1003660d
mov al, byte [esi + 0x58]
jmp 0x10036610
mov al, byte [esi + 0x59]
mov ecx, dword [ebp - 0x14]
movzx eax, al
mov dword [ebp - 0x20], eax
mov ecx, dword [ecx + 0x10]
lea eax, [eax + eax*2]
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x18], eax
mov eax, dword [ecx + eax*8]
mov ecx, eax
mov dword [ebp - 0x2c], eax
test eax, eax
jle 0x10036675
mov edi, dword [ebp - 0xc]
lea edx, [eax + eax*4]
mov eax, dword [ebp - 0x18]
mov esi, dword [edi + eax*8 + 8]
mov eax, ecx
mov edi, dword [ebp - 0x34]
cmp dword [esi + edx*8 - 0xc], 0
mov esi, dword [ebp - 0x30]
jne 0x10036672
mov eax, dword [ebp - 0x18]
mov edi, dword [ebp - 0xc]
mov esi, dword [edi + eax*8 + 8]
mov eax, ecx
mov edi, dword [ebp - 0x34]
cmp dword [esi + edx*8 - 8], 0
mov esi, dword [ebp - 0x30]
je 0x10036672
mov edx, dword [ebp - 0xc]
lea ecx, [eax - 1]
mov eax, dword [ebp - 0x18]
mov dword [edx + eax*8], ecx
mov edx, dword [ebp - 8]
cmp ecx, 1
jne 0x10036795
test dword [esi], 0x100
jne 0x100366b7
cmp byte [ebp - 1], 0
jg 0x10036698
movss xmm0, dword [esi + 0x44]
maxss xmm0, dword [esi + 0x48]
jmp 0x100366ad
test edi, edi
jne 0x100366a8
movss xmm0, dword [esi + 0x40]
maxss xmm0, dword [esi + 0x48]
jmp 0x100366ad
movss xmm0, dword [esi + 0x44]
comiss xmm0, dword [esi + 0x28]
ja 0x10036795
cmp byte [ebp - 0xd], 0
jle 0x100366cd
movsx eax, byte [edx + 0x1c0]
cmp dword [ebp - 0x28], eax
jge 0x100366cd
xor ecx, ecx
jmp 0x100366d2
mov ecx, 1
cmp byte [ebp - 1], 0
jle 0x100366e0
test edi, edi
jne 0x100366e0
xor eax, eax
jmp 0x100366e5
mov eax, 2
add eax, ecx
lea edx, [ebp - 0x130]
mov dword [ebp - 0x2c], eax
lea eax, [eax + eax*4]
cmp dword [edx + eax*8 + 0x10], 0
lea edx, [edx + eax*8]
jne 0x10036718
mov dword [edx], 0x7f7fffff
mov dword [edx + 4], 0x7f7fffff
mov dword [edx + 8], 0xff7fffff
mov dword [edx + 0xc], 0xff7fffff
mov eax, dword [ebp - 0x20]
mov ecx, eax
shr ecx, 5
and eax, 0x1f
mov dword [ebp - 0x20], eax
mov esi, dword [ebp - 0x20]
mov eax, dword [edx + ecx*4 + 0x14]
bts eax, esi
mov esi, dword [ebp - 0x30]
mov dword [edx + ecx*4 + 0x14], eax
inc dword [edx + 0x10]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0xc]
movss xmm0, dword [edx]
mov eax, dword [ecx + eax*8 + 8]
movss xmm4, dword [eax]
comiss xmm0, xmm4
movss xmm1, dword [eax + 4]
movss xmm2, dword [eax + 8]
movss xmm3, dword [eax + 0xc]
jbe 0x10036764
movss dword [edx], xmm4
movss xmm0, dword [edx + 4]
comiss xmm0, xmm1
jbe 0x10036773
movss dword [edx + 4], xmm1
comiss xmm2, dword [edx + 8]
jbe 0x1003677e
movss dword [edx + 8], xmm2
comiss xmm3, dword [edx + 0xc]
jbe 0x10036789
movss dword [edx + 0xc], xmm3
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x2c]
bts ecx, eax
mov dword [ebp - 0x1c], ecx
mov edx, dword [ebp - 8]
inc edi
mov dword [ebp - 0x34], edi
cmp edi, dword [ebp - 0x3c]
jl 0x10036604
mov edi, dword [ebp - 0x24]
mov byte [esi + 0x57], 0xff
mov esi, edx
mov eax, dword [ebp - 0x28]
add edi, 0x68
inc eax
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x28], eax
cmp eax, dword [esi + 0x54]
jl 0x100365c5
cmp dword [ebp - 0x1c], 0
je 0x10036b53
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x38]
add eax, 0x4234
mov dword [ebp - 0x24], eax
mov esi, dword [ecx + 4]
sub esi, 2
mov edi, dword [eax + 4]
cmp esi, edi
jle 0x10036812
test edi, edi
je 0x100367fa
mov eax, edi
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
add ecx, edi
jmp 0x100367ff
mov ecx, 8
cmp ecx, esi
mov eax, esi
cmovg eax, ecx
mov ecx, dword [ebp - 0x24]
push eax
call fcn.10024500
mov eax, dword [ebp - 0x24]
mov dword [eax], esi
mov edx, 2
mov eax, dword [ebp - 0x38]
xorps xmm0, xmm0
movaps xmmword [ebp - 0x60], xmm0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x24], edx
mov esi, dword [eax + 0x423c]
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x18], esi
mov edi, dword [eax + 4]
mov dword [ebp - 0xc], edi
lea eax, [edi - 1]
cmp eax, edx
jl 0x100368ac
lea esi, [edi - 1]
mov eax, esi
and eax, 0x1f
mov dword [ebp - 0x3c], eax
mov eax, edx
mov edi, edx
or eax, 0x1f
sar edi, 5
cmp esi, eax
mov ecx, 0x1f
cmovle ecx, dword [ebp - 0x3c]
xor esi, esi
inc ecx
xor eax, eax
bts esi, ecx
cmp ecx, 0x20
mov ecx, edx
cmovae eax, esi
xor edx, edx
xor esi, eax
and ecx, 0x1f
bts edx, ecx
dec esi
xor eax, eax
cmp ecx, 0x20
cmovae eax, edx
xor edx, eax
neg edx
and esi, edx
mov edx, dword [ebp - 0x24]
or dword [ebp + edi*4 - 0x60], esi
add edx, 0x20
mov edi, dword [ebp - 0xc]
and edx, 0xffffffe0
mov dword [ebp - 0x24], edx
lea esi, [edi - 1]
cmp edx, esi
jle 0x10036851
mov esi, dword [ebp - 0x18]
mov eax, dword [ebp - 8]
movzx edx, byte [eax + 0x1c4]
mov ecx, edx
and edx, 0x1f
shr ecx, 5
mov eax, dword [ebp + ecx*4 - 0x60]
btr eax, edx
mov dword [ebp + ecx*4 - 0x60], eax
xor eax, eax
cmp byte [ebp - 1], al
setg al
add eax, 2
sub edi, eax
xor ecx, ecx
mov dword [ebp - 0xc], edi
mov edi, dword [ebp - 8]
movups xmm0, xmmword [edi + 0x13c]
movups xmmword [ebp - 0x80], xmm0
movss xmm6, dword [ebp - 0x74]
movss xmm7, dword [ebp - 0x78]
movss xmm5, dword [ebp - 0x80]
mov dword [ebp - 0x20], ecx
nop dword [eax + eax]
lea eax, [ecx + ecx*4]
shl eax, 3
mov edx, dword [ebp + eax - 0x120]
mov dword [ebp - 0x1c], edx
test edx, edx
je 0x10036abf
lea edi, [ebp - 0x130]
mov edx, ecx
add edi, eax
movups xmm0, xmmword [edi]
movups xmmword [ebp - 0x70], xmm0
and edx, 1
je 0x1003693b
cmp byte [ebp - 0xd], 0
jle 0x1003693b
movss xmm4, dword [ebp - 0x70]
jmp 0x10036948
movss xmm4, dword [ebp - 0x70]
comiss xmm5, xmm4
ja 0x10036948
movaps xmm4, xmm5
mov eax, ecx
and eax, 2
je 0x1003695c
cmp byte [ebp - 1], 0
jle 0x1003695c
movss xmm3, dword [ebp - 0x6c]
jmp 0x1003696e
movss xmm3, dword [ebp - 0x6c]
movss xmm0, dword [ebp - 0x7c]
comiss xmm0, xmm3
ja 0x1003696e
movaps xmm3, xmm0
movss xmm2, dword [ebp - 0x68]
test edx, edx
je 0x1003697f
comiss xmm2, xmm7
jae 0x1003697f
movaps xmm2, xmm7
test eax, eax
je 0x1003699e
mov eax, dword [ebp - 8]
test dword [eax + 4], 0x20000
jne 0x1003699e
movss xmm1, dword [ebp - 0x64]
comiss xmm1, xmm6
jae 0x100369a3
movaps xmm1, xmm6
jmp 0x100369a3
movss xmm1, dword [ebp - 0x64]
mov eax, dword [ebp - 0xc]
xor edx, edx
sub eax, dword [edi + 0x10]
mov dword [ebp - 0xc], eax
mov eax, dword [edi + 0x14]
not eax
and dword [ebp - 0x60], eax
mov eax, dword [edi + 0x18]
not eax
and dword [ebp - 0x5c], eax
mov eax, dword [edi + 0x1c]
not eax
and dword [ebp - 0x58], eax
mov eax, dword [edi + 0x20]
not eax
and dword [ebp - 0x54], eax
mov eax, dword [edi + 0x24]
not eax
and dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x14]
cmp dword [eax + 4], edx
jle 0x10036a7e
mov dword [ebp - 0x28], edx
cmp dword [ebp - 0x1c], 0
je 0x10036a7b
mov esi, edx
mov ecx, edx
and ecx, 0x1f
sar esi, 5
mov eax, 1
shl eax, cl
test dword [edi + esi*4 + 0x14], eax
je 0x10036a67
mov eax, dword [edi + esi*4 + 0x14]
btr eax, ecx
dec dword [ebp - 0x1c]
mov dword [edi + esi*4 + 0x14], eax
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
movss dword [ebp - 0x90], xmm4
movss dword [ebp - 0x8c], xmm3
mov ecx, dword [eax + 0x10]
add ecx, dword [ebp - 0x28]
movss dword [ebp - 0x88], xmm2
movss dword [ebp - 0x84], xmm1
movups xmm0, xmmword [ebp - 0x90]
mov eax, dword [ecx + 8]
movups xmmword [eax], xmm0
mov eax, esi
add esi, 0x18
movups xmm0, xmmword [ecx]
mov dword [ebp - 0x18], esi
movups xmmword [eax], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [eax + 0x10], xmm0
jmp 0x10036a6a
mov esi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
inc edx
add dword [ebp - 0x28], 0x18
cmp edx, dword [eax + 4]
jl 0x100369e5
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 8]
cmp ecx, 1
jne 0x10036ac4
cmp byte [ebp - 1], 0
jle 0x10036ac4
movzx eax, byte [edi + 0x1c4]
mov edx, esi
add esi, 0x18
mov dword [ebp - 0x18], esi
lea ecx, [eax + eax*2]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x10]
movups xmm0, xmmword [eax + ecx*8]
movups xmmword [edx], xmm0
movq xmm0, qword [eax + ecx*8 + 0x10]
mov ecx, dword [ebp - 0x20]
movq qword [edx + 0x10], xmm0
inc ecx
jmp 0x100368f8
mov eax, dword [ebp - 0x14]
jmp 0x10036a81
inc ecx
mov dword [ebp - 0x20], ecx
cmp ecx, 4
jl 0x10036900
mov eax, dword [eax + 4]
xor esi, esi
test eax, eax
jle 0x10036b2d
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x1c], esi
cmp dword [ebp - 0xc], 0
je 0x10036b2d
mov eax, esi
mov ecx, esi
and ecx, 0x1f
sar eax, 5
mov edx, 1
shl edx, cl
test dword [ebp + eax*4 - 0x60], edx
je 0x10036b1e
mov eax, dword [ebp - 0x14]
mov ecx, edi
add edi, 0x18
mov eax, dword [eax + 0x10]
add eax, dword [ebp - 0x1c]
dec dword [ebp - 0xc]
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ecx + 0x10], xmm0
mov eax, dword [ebp - 0x14]
inc esi
add dword [ebp - 0x1c], 0x18
mov eax, dword [eax + 4]
cmp esi, eax
jl 0x10036ae0
lea eax, [eax + eax*2]
lea eax, [eax*8 - 0x30]
push eax
mov eax, dword [ebp - 0x38]
push dword [eax + 0x423c]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x10]
add eax, 0x30
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret