Function at 0x100b6980
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x30
mov eax, dword [0x101e6040]
xor eax, esp
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
push ebx
push ebp
push esi
mov esi, 0x8000
mov ebx, ecx
cmp eax, esi
mov dword [ebx + 0xb084], 0
push edi
cmova eax, esi
mov dword [ebx + 0xb080], 0
push eax
push edx
push dword [ebx + 0xb08c]
lea edi, [ebx + 0xb080]
call fcn.101528b0
add esp, 0xc
cmp dword [ebx + 0xb05c], 0
jne 0x100b69ec
push 0x40004
call fcn.101784f9
add esp, 4
mov dword [ebx + 0xb05c], eax
test byte [esp + 0x44], 0x80
je 0x100b6a11
mov ecx, edi
call fcn.1010f630
mov ebp, eax
mov dword [esp + 0x20], ebp
test ebp, ebp
jne 0x100b6a0e
push eax
mov ecx, ebx
call fcn.100b7830
jmp 0x100b6a1b
dec ebp
jmp 0x100b6a17
mov ebp, dword [ebx + 0xb0b4]
mov dword [esp + 0x20], ebp
mov eax, dword [ebx + 0xb094]
lea esi, [ebx + 0xb090]
mov edx, dword [esi]
sub eax, edx
sar eax, 2
cmp ebp, eax
ja 0x100b6bce
mov eax, dword [ebx + 0xb0ac]
sub eax, dword [ebx + 0xb0a8]
sar eax, 2
cmp ebp, eax
ja 0x100b6bce
mov dword [ebx + 0xb0b4], ebp
mov eax, dword [esi + 4]
sub eax, edx
sar eax, 2
push 0x38
mov dword [esp + 0x30], eax
call fcn.1015144f
mov ecx, eax
add esp, 4
mov dword [esp + 0x28], ecx
mov dword [ecx + 0x34], 0
mov dword [ecx + 0x10], 0
cmp ebp, dword [esp + 0x2c]
jne 0x100b6b15
cmp ebp, 0x2000
ja 0x100b6bc3
mov eax, dword [esi + 4]
sub eax, dword [esi]
sar eax, 2
push 0x38
mov dword [ecx + 0xc], eax
call fcn.1015144f
mov ecx, eax
add esp, 4
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], ecx
mov dword [ecx + 0x34], 0
mov dword [ecx + 0x10], 0
mov eax, dword [esi + 4]
cmp eax, dword [esi + 8]
je 0x100b6ad0
mov dword [eax], ecx
add dword [esi + 4], 4
jmp 0x100b6add
lea ecx, [esp + 0x10]
push ecx
push eax
mov ecx, esi
call fcn.100816f0
mov ecx, dword [ebx + 0xb0ac]
mov dword [esp + 0x10], 0
cmp ecx, dword [ebx + 0xb0b0]
je 0x100b6b02
mov dword [ecx], 0
add dword [ebx + 0xb0ac], 4
jmp 0x100b6b21
lea edx, [esp + 0x10]
push edx
push ecx
lea ecx, [ebx + 0xb0a8]
call fcn.10020810
jmp 0x100b6b21
mov eax, dword [esi]
mov eax, dword [eax + ebp*4]
mov dword [esp + 0x18], eax
mov dword [ecx + 0xc], ebp
mov ecx, dword [ebx + 0xb0a0]
xor edx, edx
mov esi, dword [ebx + 0xb09c]
mov eax, ecx
mov dword [esp + 0x14], edx
sub eax, esi
lea edx, [ebx + 0xb09c]
sar eax, 2
test eax, eax
je 0x100b6ba9
xor ebp, ebp
mov edx, dword [esp + 0x14]
mov ecx, ebp
mov eax, dword [esi + ebp*4]
sub ecx, edx
mov dword [esi + ecx*4], eax
mov eax, dword [ebx + 0xb09c]
cmp dword [eax + ebp*4], 0
lea ecx, [eax + ebp*4]
lea eax, [edx + 1]
cmovne eax, edx
mov dword [esp + 0x14], eax
test eax, eax
je 0x100b6b75
mov dword [ecx], 0
mov ecx, dword [ebx + 0xb0a0]
inc ebp
mov esi, dword [ebx + 0xb09c]
mov eax, ecx
sub eax, esi
sar eax, 2
cmp ebp, eax
jb 0x100b6b46
mov edx, dword [esp + 0x14]
lea edi, [ebx + 0xb080]
mov ebp, dword [esp + 0x20]
test edx, edx
jne 0x100b6c50
lea edx, [ebx + 0xb09c]
mov eax, ecx
mov dword [esp + 0x14], ecx
sub eax, esi
sar eax, 2
mov dword [esp + 0x1c], eax
cmp eax, 0x2000
jbe 0x100b6be5
mov ecx, dword [esp + 0x28]
push 0x38
push ecx
call fcn.10151441
add esp, 8
xor al, al
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.10151433
add esp, 0x30
ret 0xc
sub ecx, esi
inc eax
sar ecx, 2
mov dword [esp + 0x10], ecx
cmp eax, ecx
jae 0x100b6bfb
lea ecx, [esi + eax*4]
mov dword [edx + 4], ecx
jmp 0x100b6c4b
mov ecx, dword [esp + 0x14]
cmp eax, dword [esp + 0x10]
jbe 0x100b6c4b
mov ecx, dword [esp + 0x1c]
mov eax, dword [edx + 8]
sub eax, esi
sar eax, 2
lea esi, [ecx + 1]
cmp esi, eax
jbe 0x100b6c29
push ecx
push esi
mov ecx, edx
call fcn.10081610
mov ecx, dword [ebx + 0xb0a0]
jmp 0x100b6c4b
sub esi, dword [esp + 0x10]
shl esi, 2
push esi
push 0
push dword [esp + 0x1c]
call fcn.10152e30
mov ecx, dword [esp + 0x20]
add esp, 0xc
add ecx, esi
mov dword [ebx + 0xb0a0], ecx
mov edx, 1
mov eax, dword [ebx + 0xb09c]
sub ecx, eax
mov esi, dword [esp + 0x28]
sar ecx, 2
sub ecx, edx
mov dword [eax + ecx*4], esi
mov ecx, edi
call fcn.1010f630
mov ecx, dword [esp + 0x44]
test cl, 0x40
lea edx, [eax + 0x102]
cmove edx, eax
mov eax, dword [ebx + 0x64]
add eax, edx
mov dword [esp + 0x1c], edx
and eax, dword [ebx + 0xb0c4]
mov dword [esi], eax
test cl, 0x20
je 0x100b6caa
mov ecx, edi
call fcn.1010f630
mov edx, dword [esp + 0x1c]
mov dword [esi + 4], eax
mov ecx, dword [ebx + 0xb0a8]
mov dword [ecx + ebp*4], eax
jmp 0x100b6cc9
mov eax, dword [ebx + 0xb0ac]
mov ecx, dword [ebx + 0xb0a8]
sub eax, ecx
sar eax, 2
cmp ebp, eax
jae 0x100b6cc4
mov eax, dword [ecx + ebp*4]
jmp 0x100b6cc6
xor eax, eax
mov dword [esi + 4], eax
mov eax, dword [ebx + 0x70]
mov ecx, dword [ebx + 0x64]
cmp eax, ecx
je 0x100b6ce3
sub eax, ecx
and eax, dword [ebx + 0xb0c4]
cmp eax, edx
ja 0x100b6ce3
mov al, 1
jmp 0x100b6ce5
xor al, al
test byte [esp + 0x44], 0x10
lea ebx, [esi + 0x14]
mov byte [esi + 8], al
xorps xmm0, xmm0
movups xmmword [ebx], xmm0
movq qword [ebx + 0x10], xmm0
mov dword [ebx + 0x18], 0
mov eax, dword [esi + 4]
mov dword [esi + 0x24], eax
je 0x100b6d77
mov esi, dword [edi]
mov ecx, 0x10
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 4]
sub ecx, edx
mov eax, dword [eax + esi]
bswap eax
shr eax, cl
lea ecx, [edx + 7]
shr eax, 9
mov dword [esp + 0x1c], eax
mov eax, ecx
mov ebp, dword [esp + 0x1c]
shr eax, 3
add eax, esi
and ecx, 7
mov dword [edi + 4], ecx
mov esi, 1
mov ecx, 7
mov dword [edi], eax
mov dword [esp + 0x10], ecx
nop dword [eax + eax]
mov eax, ebp
and eax, esi
test al, 0x7f
je 0x100b6d65
mov ecx, edi
call fcn.1010f630
mov ecx, dword [esp + 0x10]
mov dword [ebx], eax
add ebx, 4
rol esi, 1
sub ecx, 1
mov dword [esp + 0x10], ecx
jne 0x100b6d50
mov ebp, dword [esp + 0x20]
cmp ebp, dword [esp + 0x2c]
jne 0x100b6f5d
mov ecx, edi
call fcn.1010f630
mov ebx, eax
cmp ebx, 0x10000
jae 0x100b6bce
test ebx, ebx
je 0x100b6bce
mov ecx, dword [edi]
add ecx, ebx
cmp ecx, dword [esp + 0x4c]
ja 0x100b6bce
push ecx
xorps xmm0, xmm0
mov dword [esp + 0x3c], 0
push ebx
lea ecx, [esp + 0x38]
movq qword [esp + 0x38], xmm0
call fcn.100ba6d0
mov esi, dword [esp + 0x30]
xor edx, edx
test ebx, ebx
je 0x100b6e12
mov ecx, dword [edi]
lea eax, [ecx + 3]
cmp eax, 0x8000
jae 0x100b6ef0
mov eax, dword [edi + 0xc]
mov eax, dword [eax + ecx]
mov ecx, 0x10
sub ecx, dword [edi + 4]
bswap eax
shr eax, cl
shr eax, 8
mov byte [esi + edx], al
inc edx
mov ecx, dword [edi + 4]
add ecx, 8
mov eax, ecx
and ecx, 7
shr eax, 3
add dword [edi], eax
mov dword [edi + 4], ecx
cmp edx, ebx
jb 0x100b6dd2
mov eax, 1
lea edx, [ebx - 1]
xor cl, cl
cmp ebx, eax
jbe 0x100b6e88
cmp edx, 0x20
jb 0x100b6e80
and edx, 0x1f
mov ecx, ebx
sub ecx, edx
xorps xmm1, xmm1
xorps xmm2, xmm2
movups xmm0, xmmword [eax + esi]
xorps xmm1, xmm0
movups xmm0, xmmword [eax + esi + 0x10]
add eax, 0x20
xorps xmm2, xmm0
cmp eax, ecx
jb 0x100b6e32
xorps xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
xorps xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
xorps xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 2
xorps xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 1
xorps xmm1, xmm0
movd ecx, xmm1
cmp eax, ebx
jae 0x100b6e88
nop
xor cl, byte [eax + esi]
inc eax
cmp eax, ebx
jb 0x100b6e80
cmp cl, byte [esi]
jne 0x100b6ec6
push 0x101eb0a8
push ebx
mov edx, esi
mov ecx, 0xffffffff
call fcn.10108970
xor edx, edx
not eax
xor ecx, ecx
mov edi, 0x101e7c7c
nop dword [eax]
cmp dword [ecx + edi], eax
jne 0x100b6ebd
cmp dword [ecx + 0x101e7c78], ebx
je 0x100b6f1f
add ecx, 0xc
inc edx
cmp ecx, 0x48
jb 0x100b6eb0
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
mov eax, esi
sub ecx, esi
cmp ecx, 0x1000
jb 0x100b6f32
mov esi, dword [eax - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100b6f82
jmp 0x100b6f32
test esi, esi
je 0x100b6bce
mov ecx, dword [esp + 0x38]
mov eax, esi
sub ecx, esi
cmp ecx, 0x1000
jb 0x100b6f18
mov esi, dword [eax - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100b6f82
push ecx
push esi
jmp 0x100b6bc6
mov edi, dword [esp + 0x18]
lea eax, [edx + edx*2]
mov eax, dword [eax*4 + 0x101e7c80]
mov dword [edi + 0x10], eax
jmp 0x100b6eca
push ecx
push esi
call fcn.10151441
mov ecx, dword [esp + 0x30]
add esp, 8
mov eax, dword [edi + 0x10]
mov dword [ecx + 0x10], eax
mov al, 1
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.10151433
add esp, 0x30
ret 0xc
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
mov eax, dword [edi + 0x10]
pop edi
pop esi
mov dword [ecx + 0x10], eax
mov al, 1
mov ecx, dword [esp + 0x34]
pop ebp
pop ebx
xor ecx, esp
call fcn.10151433
add esp, 0x30
ret 0xc
call fcn.10155291
int3