Function at 0x10137d10
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd8
call fcn.1005d3c0
mov eax, dword [0x101c10e0]
xor eax, esp
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xdc]
push ebx
mov ebx, dword [esp + 0xf0]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xf8]
push ebp
push esi
mov esi, dword [esp + 0xf0]
xor ebp, ebp
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x104]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x108]
shr esi, 3
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x40], 2
push edi
mov edi, dword [esp + 0xf8]
mov dword [esp + 0x3c], edi
cmp esi, 0x14
je 0x10137dac
cmp esi, 0x1c
je 0x10137dac
cmp esi, 0x20
jne 0x10137de8
test edi, edi
jne 0x10137dbb
call fcn.100b2610
mov edi, eax
mov dword [esp + 0x3c], eax
mov eax, 0x200
cmp dword [esp + 0xf0], eax
cmovae eax, dword [esp + 0xf0]
add eax, 0x3f
and eax, 0xffffffc0
mov dword [esp + 0x34], eax
test ebx, ebx
je 0x10137e04
mov eax, dword [esp + 0x100]
cmp eax, esi
jae 0x10137def
xor eax, eax
jmp 0x10138456
cmova eax, esi
push eax
lea eax, [esp + 0xc8]
push ebx
push eax
call fcn.1005ec70
add esp, 0xc
call fcn.10104be0
mov dword [esp + 0x28], eax
test eax, eax
je 0x10138440
call fcn.100e5b20
mov ebp, eax
mov dword [esp + 0x18], ebp
test ebp, ebp
je 0x10138440
push ebp
call fcn.100e5b90
push ebp
call fcn.100e59e0
mov ebx, dword [esp + 0x20]
mov ebp, eax
push ebx
call fcn.100e59e0
push ebx
mov dword [esp + 0x34], eax
call fcn.100e59e0
push ebx
mov dword [esp + 0x4c], eax
call fcn.100e59e0
push ebx
mov dword [esp + 0x38], eax
call fcn.100e59e0
push ebx
mov dword [esp + 0x6c], eax
call fcn.100e59e0
push ebx
mov dword [esp + 0x6c], eax
call fcn.100e59e0
push ebx
mov dword [esp + 0x38], eax
call fcn.100e59e0
mov ebx, eax
add esp, 0x24
mov eax, dword [esp + 0x34]
dec eax
mov dword [esp + 0x10], ebx
push eax
call fcn.100d07a0
push eax
push ebx
call fcn.100fa360
add esp, 0xc
test eax, eax
je 0x10138433
push dword [esp + 0x2c]
xor ebx, ebx
cmp dword [esp + 0x34], ebx
push 0
push dword [esp + 0x24]
sete bl
call fcn.1013a480
inc dword [esp + 0x38]
add esp, 0xc
test eax, eax
je 0x10138433
cmp dword [esp + 0x30], 0
jne 0x10137eeb
lea eax, [esp + 0xc4]
push esi
push eax
call fcn.100b7490
add esp, 8
test eax, eax
jle 0x10138433
jmp 0x10137ef3
mov dword [esp + 0x30], 0
push esi
lea eax, [esp + 0xc8]
push eax
lea eax, [esp + 0xac]
push eax
call fcn.1005ec70
push esi
lea eax, [esp + 0xd4]
push eax
lea eax, [esp + 0x98]
push eax
call fcn.1005ec70
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x10137f3f
nop dword [eax]
add byte [esp + eax + 0xa4], 1
jne 0x10137f3f
sub eax, 1
jns 0x10137f30
push 0
push edi
push 0
lea eax, [esp + 0x70]
push eax
lea eax, [esp + 0xd4]
push esi
push eax
call fcn.100b1c40
add esp, 0x18
test eax, eax
je 0x10138433
push 0
push edi
push 0
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0xb4]
push esi
push eax
call fcn.100b1c40
add esp, 0x18
test eax, eax
je 0x10138433
xor ecx, ecx
test esi, esi
je 0x1013801b
cmp esi, 0x40
jb 0x1013801b
mov eax, esi
and eax, 0x8000003f
jns 0x10137fa9
dec eax
or eax, 0xffffffc0
inc eax
mov edx, esi
sub edx, eax
nop dword [eax]
movups xmm0, xmmword [esp + ecx + 0x64]
movups xmm1, xmmword [esp + ecx + 0x84]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x64], xmm1
movups xmm0, xmmword [esp + ecx + 0x74]
movups xmm1, xmmword [esp + ecx + 0x94]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x74], xmm1
movups xmm0, xmmword [esp + ecx + 0x84]
movups xmm1, xmmword [esp + ecx + 0xa4]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x84], xmm1
movups xmm0, xmmword [esp + ecx + 0x94]
movups xmm1, xmmword [esp + ecx + 0xb4]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x94], xmm1
add ecx, 0x40
cmp ecx, edx
jl 0x10137fb0
cmp ecx, esi
jge 0x10138030
nop
mov al, byte [esp + ecx + 0x84]
xor byte [esp + ecx + 0x64], al
inc ecx
cmp ecx, esi
jl 0x10138020
push dword [esp + 0x20]
or byte [esp + 0x68], 0x80
lea eax, [esp + 0x68]
or byte [esp + esi + 0x67], 1
push esi
push eax
call fcn.100cfbd0
add esp, 0xc
test eax, eax
je 0x10138433
push dword [esp + 0x1c]
push ebx
push dword [esp + 0x20]
push 0x32
push dword [esp + 0x30]
call fcn.1013a9e0
add esp, 0x14
test eax, eax
jg 0x1013807a
je 0x10137ea2
jmp 0x10138433
mov ebx, dword [esp + 0x1c]
push 0
push 2
push ebx
call fcn.1013a480
add esp, 0xc
test eax, eax
je 0x10138433
push 0
push 3
push ebx
call fcn.1013a480
add esp, 0xc
test eax, eax
je 0x10138433
mov ecx, dword [esp + 0x34]
mov eax, 0xcccccccd
xor edi, edi
mov dword [esp + 0x40], edi
lea ecx, [ecx - 1]
mul ecx
mov ebx, edx
shr ebx, 7
test edi, edi
je 0x101380dc
push edi
push 0
push dword [esp + 0x24]
call fcn.1013a480
add esp, 0xc
test eax, eax
je 0x10138433
push 0
push dword [esp + 0x3c]
call fcn.100d06f0
add esp, 8
xor edi, edi
test ebx, ebx
js 0x10138189
lea eax, [esi - 1]
test eax, eax
js 0x1013810f
nop dword [eax + eax]
add byte [esp + eax + 0xa4], 1
jne 0x1013810f
sub eax, 1
jns 0x10138100
push 0
push dword [esp + 0x40]
lea eax, [esp + 0x6c]
push 0
push eax
lea eax, [esp + 0xb4]
push esi
push eax
call fcn.100b1c40
add esp, 0x18
test eax, eax
je 0x10138433
push ebp
lea eax, [esp + 0x68]
push esi
push eax
call fcn.100cfbd0
add esp, 0xc
test eax, eax
je 0x10138433
lea eax, [esi*8]
imul eax, edi
push eax
push ebp
push ebp
call fcn.100fa360
add esp, 0xc
test eax, eax
je 0x10138433
mov eax, dword [esp + 0x38]
push ebp
push eax
push eax
call fcn.100e5c60
add esp, 0xc
test eax, eax
je 0x10138433
inc edi
cmp edi, ebx
jle 0x101380f4
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
dec eax
push eax
push edi
call fcn.100d0410
add esp, 8
test eax, eax
je 0x10138433
push edi
mov edi, dword [esp + 0x54]
push edi
call fcn.100d00b0
add esp, 8
test eax, eax
je 0x10138433
push dword [esp + 0x10]
push edi
push edi
call fcn.100e5c60
add esp, 0xc
test eax, eax
je 0x10138433
push dword [esp + 0x20]
push ebp
call fcn.100fa4a0
add esp, 8
test eax, eax
je 0x10138433
push dword [esp + 0x18]
push ebp
push edi
push dword [esp + 0x58]
push 0
call fcn.10120980
add esp, 0x14
test eax, eax
je 0x10138433
call fcn.100d07a0
push eax
push dword [esp + 0x50]
push ebp
call fcn.100e5cf0
add esp, 0xc
test eax, eax
je 0x10138433
push ebp
push edi
mov edi, dword [esp + 0x1c]
push edi
call fcn.100e5cf0
add esp, 0xc
test eax, eax
je 0x10138433
push dword [esp + 0x10]
push edi
call fcn.100cfda0
add esp, 8
test eax, eax
js 0x10138267
mov edi, dword [esp + 0x1c]
push edi
push 1
push dword [esp + 0x20]
push 0x32
push dword [esp + 0x24]
call fcn.1013a9e0
add esp, 0x14
test eax, eax
jg 0x10138285
jne 0x10138433
mov edi, dword [esp + 0x40]
inc edi
mov dword [esp + 0x40], edi
cmp edi, 0x1000
jl 0x101380c1
mov edi, dword [esp + 0x3c]
jmp 0x10137ea2
push 1
push 2
push edi
call fcn.1013a480
add esp, 0xc
test eax, eax
je 0x10138433
call fcn.100d07a0
push eax
push dword [esp + 0x18]
push dword [esp + 0x18]
call fcn.100e5cf0
add esp, 0xc
test eax, eax
je 0x10138433
mov ebx, dword [esp + 0x18]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x18]
push 0
push ebp
call fcn.10120980
add esp, 0x14
test eax, eax
je 0x10138433
push 2
push dword [esp + 0x14]
call fcn.100d06f0
add esp, 8
test eax, eax
je 0x10138433
push ebx
push dword [esp + 0x18]
push dword [esp + 0x30]
call fcn.10104c40
add esp, 0xc
test eax, eax
je 0x10138433
push dword [esp + 0x28]
push ebx
push dword [esp + 0x1c]
push ebp
push dword [esp + 0x20]
push dword [esp + 0x38]
call fcn.10105280
add esp, 0x18
test eax, eax
je 0x10138433
nop dword [eax]
push dword [esp + 0x24]
call fcn.100d03b0
add esp, 4
test eax, eax
je 0x10138383
call fcn.100d07a0
push eax
mov eax, dword [esp + 0x14]
push eax
push eax
call fcn.100e5c60
add esp, 0xc
test eax, eax
je 0x10138433
push dword [esp + 0x28]
inc dword [esp + 0x48]
push ebx
push dword [esp + 0x1c]
push ebp
push dword [esp + 0x20]
push dword [esp + 0x38]
call fcn.10105280
add esp, 0x18
test eax, eax
jne 0x10138330
jmp 0x10138433
push 1
push 3
push edi
call fcn.1013a480
add esp, 0xc
test eax, eax
je 0x10138433
mov dword [esp + 0x48], 1
mov ebx, dword [esp + 0x54]
push dword [ebx + 8]
call fcn.100d02a0
push dword [ebx + 0xc]
call fcn.100d02a0
push dword [ebx + 0x10]
call fcn.100d02a0
push dword [esp + 0x20]
call fcn.100d0170
push dword [esp + 0x30]
mov dword [ebx + 8], eax
call fcn.100d0170
push dword [esp + 0x38]
mov dword [ebx + 0xc], eax
call fcn.100d0170
add esp, 0x18
mov dword [ebx + 0x10], eax
cmp dword [ebx + 8], 0
je 0x1013842b
cmp dword [ebx + 0xc], 0
je 0x1013842b
test eax, eax
je 0x1013842b
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x10138401
mov eax, dword [esp + 0x40]
mov dword [ecx], eax
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x1013840f
mov eax, dword [esp + 0x44]
mov dword [ecx], eax
mov eax, dword [esp + 0x60]
test eax, eax
je 0x10138433
push esi
lea ecx, [esp + 0xc8]
push ecx
push eax
call fcn.1005ec70
add esp, 0xc
jmp 0x10138433
mov dword [esp + 0x48], 0
mov ebp, dword [esp + 0x18]
push ebp
call fcn.100e58e0
add esp, 4
push ebp
call fcn.100e5950
push dword [esp + 0x2c]
call fcn.10104b90
mov eax, dword [esp + 0x50]
add esp, 8
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1005cef4
add esp, 0xd8
ret