Function at 0x10108aad
Capabilities:
Encode data using xor

Disassembly:
push 0x34
mov eax, 0x101ce298
call fcn.10186cc3
mov edi, ecx
cmp byte [edi + 9], 0
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x38], esi
je 0x10109111
cmp byte [edi + 0xb], 0
je 0x10108d90
xor ebx, ebx
cmp dword [edi + 0xc], ebx
je case.default.0x1010912b
mov eax, dword [ebp + 8]
mov ecx, esi
shl eax, 3
or eax, 2
push eax
call fcn.100e9d6e
push dword [edi + 0xc]
mov ecx, esi
call fcn.100e9d6e
movzx eax, byte [edi + 8]
dec eax
cmp eax, 0x11
ja case.default.0x1010912b
jmp dword [eax*4 + 0x10109271]
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov ecx, dword [eax]
mov edx, esi
mov ecx, dword [ecx + ebx*4]
call fcn.100ea33d
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108b1b
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100e9ebc
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108b3f
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
push dword [eax + ebx*4]
call fcn.100e9d6e
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108b67
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100e9ebc
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108b8b
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov eax, dword [eax + ebx*4]
mov ecx, eax
sar ecx, 0x1f
add eax, eax
xor ecx, eax
push ecx
mov ecx, esi
call fcn.100e9d6e
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108bb3
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100ea35f
mov eax, dword [edi]
inc ebx
pop ecx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10108be1
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
push dword [eax + ebx*4]
call fcn.100e9c70
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108c0b
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100e9ca4
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108c2f
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
push dword [eax + ebx*4]
call fcn.100e9c70
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108c57
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100e9ca4
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108c7b
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
movss xmm0, dword [eax + ebx*4]
movss dword [ebp - 0x38], xmm0
push dword [ebp - 0x38]
call fcn.100e9c70
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108ca3
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, esi
movsd xmm0, qword [eax + ebx*8]
movsd qword [ebp - 0x40], xmm0
push dword [ebp - 0x3c]
push dword [ebp - 0x40]
call fcn.100e9ca4
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108cd1
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
xor ecx, ecx
cmp byte [ebx + eax], cl
setne cl
push ecx
mov ecx, esi
call fcn.100e9d6e
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108d02
jmp case.default.0x1010912b
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov ecx, dword [eax]
mov edx, esi
mov ecx, dword [ecx + ebx*4]
call fcn.100ea33d
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108d2c
jmp case.default.0x1010912b
mov dword [ebp - 0x34], 3
mov dword [ebp - 0x30], str.C:dvsp4_build_sw_toolsprotobufprotobuf_2.6.1_srcgoogleprotobufextension_set.cc
mov dword [ebp - 0x2c], 0x528
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], bl
push str.Non_primitive_types_cant_be_packed.
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0x1d
call fcn.10004000
lea ecx, [ebp - 0x34]
call fcn.1000fcd9
lea ecx, [ebp - 0x28]
call fcn.10004080
jmp case.default.0x1010912b
movzx eax, byte [edi + 8]
dec eax
cmp eax, 0x11
ja case.default.0x1010912b
jmp dword [eax*4 + 0x101092b9]
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
push esi
mov edx, dword [edx + ebx*4]
call fcn.100f36cf
mov eax, dword [edi]
inc ebx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10108db2
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov edx, esi
mov ecx, dword [ebp + 8]
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100f36ef
mov eax, dword [edi]
inc ebx
pop ecx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10108ddb
jmp case.default.0x1010912b
mov ecx, dword [edi]
xor ebx, ebx
cmp dword [ecx + 4], ebx
jle case.default.0x1010912b
mov edx, dword [ebp + 8]
shl edx, 3
mov dword [ebp - 0x3c], edx
mov eax, dword [ecx]
mov ecx, dword [ebp - 0x38]
push edx
mov esi, dword [eax + ebx*4]
call fcn.100e9d6e
mov ecx, dword [ebp - 0x38]
push esi
call fcn.100e9d6e
mov ecx, dword [edi]
inc ebx
mov edx, dword [ebp - 0x3c]
cmp ebx, dword [ecx + 4]
jl 0x10108e13
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov edx, esi
mov ecx, dword [ebp + 8]
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100f36ef
mov eax, dword [edi]
inc ebx
pop ecx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10108e47
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
push esi
mov edx, dword [edx + ebx*4]
call fcn.100f3734
mov eax, dword [edi]
inc ebx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10108e76
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov edx, esi
mov ecx, dword [ebp + 8]
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100f3760
mov eax, dword [edi]
inc ebx
pop ecx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10108e9f
jmp case.default.0x1010912b
mov ecx, dword [edi]
xor ebx, ebx
cmp dword [ecx + 4], ebx
jle case.default.0x1010912b
mov edx, dword [ebp + 8]
shl edx, 3
or edx, 5
mov dword [ebp - 0x3c], edx
mov eax, dword [ecx]
mov ecx, dword [ebp - 0x38]
push edx
mov esi, dword [eax + ebx*4]
call fcn.100e9d6e
mov ecx, dword [ebp - 0x38]
push esi
call fcn.100e9c70
mov ecx, dword [edi]
inc ebx
mov edx, dword [ebp - 0x3c]
cmp ebx, dword [ecx + 4]
jl 0x10108eda
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov edx, esi
mov ecx, dword [ebp + 8]
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100f37a6
mov eax, dword [edi]
inc ebx
pop ecx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10108f0e
jmp case.default.0x1010912b
mov ecx, dword [edi]
xor ebx, ebx
cmp dword [ecx + 4], ebx
jle case.default.0x1010912b
mov edx, dword [ebp + 8]
shl edx, 3
or edx, 5
mov dword [ebp - 0x3c], edx
mov eax, dword [ecx]
mov ecx, dword [ebp - 0x38]
push edx
mov esi, dword [eax + ebx*4]
call fcn.100e9d6e
mov ecx, dword [ebp - 0x38]
push esi
call fcn.100e9c70
mov ecx, dword [edi]
inc ebx
mov edx, dword [ebp - 0x3c]
cmp ebx, dword [ecx + 4]
jl 0x10108f49
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov edx, esi
mov ecx, dword [ebp + 8]
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100f37a6
mov eax, dword [edi]
inc ebx
pop ecx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10108f7d
jmp case.default.0x1010912b
mov ecx, dword [edi]
xor ebx, ebx
cmp dword [ecx + 4], ebx
jle case.default.0x1010912b
mov edx, dword [ebp + 8]
shl edx, 3
or edx, 5
mov dword [ebp - 0x38], edx
mov eax, dword [ecx]
mov ecx, esi
push edx
movss xmm0, dword [eax + ebx*4]
movss dword [ebp - 0x3c], xmm0
call fcn.100e9d6e
movss xmm0, dword [ebp - 0x3c]
mov ecx, esi
movss dword [ebp - 0x3c], xmm0
push dword [ebp - 0x3c]
call fcn.100e9c70
mov ecx, dword [edi]
inc ebx
mov edx, dword [ebp - 0x38]
cmp ebx, dword [ecx + 4]
jl 0x10108fb8
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov edx, esi
mov ecx, dword [ebp + 8]
movsd xmm2, qword [eax + ebx*8]
call fcn.100f37fb
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10108ffd
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
push esi
mov dl, byte [eax + ebx]
call fcn.100f3831
mov eax, dword [edi]
inc ebx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10109028
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
push esi
mov edx, dword [edx + ebx*4]
call fcn.100f3854
mov eax, dword [edi]
inc ebx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10109051
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
push esi
mov edx, dword [edx + ebx*4]
call fcn.100f39a5
mov eax, dword [edi]
inc ebx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x1010907a
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
push esi
mov edx, dword [edx + ebx*4]
call fcn.100f36cf
mov eax, dword [edi]
inc ebx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x101090a3
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
push esi
mov edx, dword [edx + ebx*4]
call fcn.100f3aef
mov eax, dword [edi]
inc ebx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x101090cc
jmp case.default.0x1010912b
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x1010912b
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
push esi
mov edx, dword [edx + ebx*4]
call fcn.100f3b2f
mov eax, dword [edi]
inc ebx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x101090f5
jmp case.default.0x1010912b
mov cl, byte [edi + 0xa]
test cl, 0xf
jne case.default.0x1010912b
movzx eax, byte [edi + 8]
dec eax
cmp eax, 0x11
ja case.default.0x1010912b
jmp dword [eax*4 + 0x10109301]
mov edx, dword [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f36cf
jmp 0x10109267
push dword [edi + 4]
mov ecx, dword [ebp + 8]
mov edx, esi
push dword [edi]
call fcn.100f36ef
pop ecx
jmp 0x10109267
mov edx, dword [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f3714
jmp 0x10109267
push dword [edi + 4]
mov ecx, dword [ebp + 8]
mov edx, esi
push dword [edi]
call fcn.100f36ef
jmp 0x10109151
mov edx, dword [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f3734
jmp 0x10109267
push dword [edi + 4]
mov ecx, dword [ebp + 8]
mov edx, esi
push dword [edi]
call fcn.100f3760
jmp 0x10109151
mov edx, dword [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f3785
jmp 0x10109267
push dword [edi + 4]
mov ecx, dword [ebp + 8]
mov edx, esi
push dword [edi]
call fcn.100f37a6
jmp 0x10109151
mov edx, dword [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f3785
jmp 0x10109267
push dword [edi + 4]
mov ecx, dword [ebp + 8]
mov edx, esi
push dword [edi]
call fcn.100f37a6
jmp 0x10109151
movss xmm1, dword [edi]
mov edx, esi
mov ecx, dword [ebp + 8]
call fcn.100f37ca
jmp case.default.0x1010912b
movsd xmm2, qword [edi]
mov edx, esi
mov ecx, dword [ebp + 8]
call fcn.100f37fb
jmp case.default.0x1010912b
mov dl, byte [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f3831
jmp 0x10109267
mov edx, dword [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f3854
jmp 0x10109267
mov edx, dword [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f39a5
jmp 0x10109267
mov edx, dword [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f36cf
jmp 0x10109267
mov edx, dword [edi]
mov ecx, dword [ebp + 8]
push esi
call fcn.100f3aef
jmp 0x10109267
mov edi, dword [edi]
push esi
test cl, 0xf0
je 0x1010925d
mov eax, dword [edi]
push dword [ebp + 8]
mov esi, dword [eax + 0x30]
mov ecx, esi
call dword [0x101d3368]
mov ecx, edi
call esi
jmp case.default.0x1010912b
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.100f3b2f
pop ecx
call fcn.10186c6d
ret 8