Function at 0x1010552e
Capabilities:
Encode data using xor

Disassembly:
push 0x34
mov eax, 0x101ce298
call fcn.10186cc3
mov edi, ecx
mov dword [ebp - 0x38], edi
cmp byte [edi + 9], 0
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x40], edx
je 0x10105c1d
cmp byte [edi + 0xb], 0
je 0x1010583a
xor ebx, ebx
cmp dword [edi + 0xc], ebx
je case.default.0x10105c37
shl ecx, 3
or ecx, 2
call fcn.1003cf00
mov ecx, dword [edi + 0xc]
mov edx, eax
call fcn.10104c83
mov edx, eax
movzx eax, byte [edi + 8]
dec eax
mov dword [ebp - 0x40], edx
cmp eax, 0x11
ja case.default.0x10105c37
jmp dword [eax*4 + 0x10105d36]
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov ecx, dword [eax + ebx*4]
call fcn.10104c83
mov edx, eax
inc ebx
mov eax, dword [edi]
cmp ebx, dword [eax + 4]
jl 0x101055a4
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov ecx, edx
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100e9dd9
mov edx, eax
inc ebx
mov eax, dword [edi]
pop ecx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x101055c8
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov ecx, dword [eax + ebx*4]
cmp ecx, 0x80
jae 0x10105606
mov byte [edx], cl
inc edx
jmp 0x1010560d
call fcn.100e9cf4
mov edx, eax
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x101055f4
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov ecx, edx
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.100e9dd9
mov edx, eax
inc ebx
mov eax, dword [edi]
pop ecx
pop ecx
cmp ebx, dword [eax + 4]
jl 0x10105625
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov eax, dword [eax + ebx*4]
mov ecx, eax
sar ecx, 0x1f
add eax, eax
xor ecx, eax
cmp ecx, 0x80
jae 0x1010566c
mov byte [edx], cl
inc edx
jmp 0x10105673
call fcn.100e9cf4
mov edx, eax
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10105651
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov edx, dword [eax + ebx*8 + 4]
mov ecx, edx
mov esi, dword [eax + ebx*8]
mov eax, edx
shld edx, esi, 1
sar eax, 0x1f
sar ecx, 0x1f
xor eax, edx
add esi, esi
xor ecx, esi
push eax
push ecx
mov ecx, dword [ebp - 0x40]
call fcn.100e9dd9
mov edx, eax
inc ebx
mov eax, dword [edi]
pop ecx
pop ecx
mov dword [ebp - 0x40], edx
cmp ebx, dword [eax + 4]
jl 0x1010568b
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov eax, dword [eax + ebx*4]
mov dword [edx], eax
add edx, 4
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x101056d1
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov ecx, dword [eax]
mov eax, dword [ecx + ebx*8]
mov dword [edx], eax
mov eax, dword [ecx + ebx*8 + 4]
mov dword [edx + 4], eax
add edx, 8
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x101056f3
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov eax, dword [eax + ebx*4]
mov dword [edx], eax
add edx, 4
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x1010571c
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov ecx, dword [eax]
mov eax, dword [ecx + ebx*8]
mov dword [edx], eax
mov eax, dword [ecx + ebx*8 + 4]
mov dword [edx + 4], eax
add edx, 8
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x1010573e
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov eax, dword [eax + ebx*4]
mov dword [edx], eax
add edx, 4
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10105767
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
movsd xmm0, qword [eax + ebx*8]
movsd qword [edx], xmm0
add edx, 8
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10105789
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
cmp byte [ebx + eax], 0
setne al
mov byte [edx], al
inc edx
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x101057af
jmp case.default.0x10105c37
mov eax, dword [edi]
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
mov ecx, dword [eax + ebx*4]
call fcn.10104c83
mov edx, eax
inc ebx
mov eax, dword [edi]
cmp ebx, dword [eax + 4]
jl 0x101057d3
jmp case.default.0x10105c37
mov dword [ebp - 0x34], 3
mov dword [ebp - 0x30], str.C:dvsp4_build_sw_toolsprotobufprotobuf_2.6.1_srcgoogleprotobufextension_set_heavy.cc
mov dword [ebp - 0x2c], 0x1af
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
mov edx, dword [ebp - 0x40]
jmp case.default.0x10105c37
movzx eax, byte [edi + 8]
dec eax
cmp eax, 0x11
ja case.default.0x10105c37
jmp dword [eax*4 + 0x10105d7e]
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
mov dword [ebp - 0x38], ecx
mov eax, dword [eax]
mov esi, dword [eax + ebx*4]
call fcn.1003cf00
mov edx, eax
mov ecx, esi
call fcn.10104c83
mov ecx, dword [ebp - 0x38]
mov edx, eax
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10105862
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
mov dword [ebp - 0x3c], ecx
mov eax, dword [eax]
mov edi, dword [eax + ebx*8]
mov esi, dword [eax + ebx*8 + 4]
call fcn.1003cf00
push esi
push edi
mov ecx, eax
call fcn.100e9dd9
mov edx, eax
inc ebx
mov eax, dword [ebp - 0x38]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x3c]
mov eax, dword [eax]
cmp ebx, dword [eax + 4]
jl 0x1010589a
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov edx, dword [eax]
push dword [ebp - 0x40]
mov edx, dword [edx + ebx*4]
call fcn.10104d1f
mov edx, eax
inc ebx
mov eax, dword [edi]
pop ecx
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x40], edx
cmp ebx, dword [eax + 4]
jl 0x101058d5
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
mov dword [ebp - 0x3c], ecx
mov eax, dword [eax]
mov edi, dword [eax + ebx*8]
mov esi, dword [eax + ebx*8 + 4]
call fcn.1003cf00
push esi
push edi
mov ecx, eax
call fcn.100e9dd9
mov edx, eax
inc ebx
mov eax, dword [ebp - 0x38]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x3c]
mov eax, dword [eax]
cmp ebx, dword [eax + 4]
jl 0x1010590b
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov edx, dword [eax]
push dword [ebp - 0x40]
mov edx, dword [edx + ebx*4]
call fcn.10104d49
mov edx, eax
inc ebx
mov eax, dword [edi]
pop ecx
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x40], edx
cmp ebx, dword [eax + 4]
jl 0x10105946
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.10104d7d
mov edx, eax
inc ebx
mov eax, dword [edi]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x3c]
cmp ebx, dword [eax + 4]
jl 0x10105976
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
or ecx, 5
mov dword [ebp - 0x38], ecx
mov eax, dword [eax]
mov esi, dword [eax + ebx*4]
call fcn.1003cf00
mov ecx, dword [ebp - 0x38]
inc ebx
mov dword [eax], esi
lea edx, [eax + 4]
mov eax, dword [edi]
cmp ebx, dword [eax + 4]
jl 0x101059ae
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
or ecx, 1
mov dword [ebp - 0x3c], ecx
mov eax, dword [eax]
mov esi, dword [eax + ebx*8]
mov edi, dword [eax + ebx*8 + 4]
call fcn.1003cf00
mov ecx, dword [ebp - 0x3c]
inc ebx
mov dword [eax], esi
lea edx, [eax + 8]
mov dword [eax + 4], edi
mov eax, dword [ebp - 0x38]
mov eax, dword [eax]
cmp ebx, dword [eax + 4]
jl 0x101059e3
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
or ecx, 5
mov dword [ebp - 0x38], ecx
mov eax, dword [eax]
mov esi, dword [eax + ebx*4]
call fcn.1003cf00
mov ecx, dword [ebp - 0x38]
inc ebx
mov dword [eax], esi
lea edx, [eax + 4]
mov eax, dword [edi]
cmp ebx, dword [eax + 4]
jl 0x10105a22
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
or ecx, 1
mov dword [ebp - 0x3c], ecx
mov eax, dword [eax]
mov esi, dword [eax + ebx*8]
mov edi, dword [eax + ebx*8 + 4]
call fcn.1003cf00
mov ecx, dword [ebp - 0x3c]
inc ebx
mov dword [eax], esi
lea edx, [eax + 8]
mov dword [eax + 4], edi
mov eax, dword [ebp - 0x38]
mov eax, dword [eax]
cmp ebx, dword [eax + 4]
jl 0x10105a57
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov esi, ecx
shl esi, 3
or esi, 5
mov eax, dword [eax]
mov ecx, esi
movss xmm0, dword [eax + ebx*4]
call fcn.1003cf00
inc ebx
movss dword [eax], xmm0
lea edx, [eax + 4]
mov eax, dword [edi]
cmp ebx, dword [eax + 4]
jl 0x10105a95
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov esi, ecx
shl esi, 3
or esi, 1
mov eax, dword [eax]
mov ecx, esi
movsd xmm0, qword [eax + ebx*8]
call fcn.1003cf00
inc ebx
movsd qword [eax], xmm0
lea edx, [eax + 8]
mov eax, dword [edi]
cmp ebx, dword [eax + 4]
jl 0x10105acc
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
push edx
mov dl, byte [eax + ebx]
call fcn.10104dde
mov edx, eax
inc ebx
mov eax, dword [edi]
pop ecx
mov ecx, dword [ebp - 0x3c]
cmp ebx, dword [eax + 4]
jl 0x10105afb
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
or ecx, 2
mov dword [ebp - 0x38], ecx
mov eax, dword [eax]
mov esi, dword [eax + ebx*4]
call fcn.1003cf00
mov edx, eax
mov ecx, esi
call fcn.100ea034
mov ecx, dword [ebp - 0x38]
mov edx, eax
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10105b2f
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
or ecx, 2
mov dword [ebp - 0x38], ecx
mov eax, dword [eax]
mov esi, dword [eax + ebx*4]
call fcn.1003cf00
mov edx, eax
mov ecx, esi
call fcn.100ea034
mov ecx, dword [ebp - 0x38]
mov edx, eax
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10105b6a
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
shl ecx, 3
mov dword [ebp - 0x38], ecx
mov eax, dword [eax]
mov esi, dword [eax + ebx*4]
call fcn.1003cf00
mov edx, eax
mov ecx, esi
call fcn.10104c83
mov ecx, dword [ebp - 0x38]
mov edx, eax
mov eax, dword [edi]
inc ebx
cmp ebx, dword [eax + 4]
jl 0x10105ba2
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
push edx
mov edx, dword [eax + ebx*4]
call fcn.10104e09
mov edx, eax
inc ebx
mov eax, dword [edi]
pop ecx
mov ecx, dword [ebp - 0x3c]
cmp ebx, dword [eax + 4]
jl 0x10105bd4
jmp case.default.0x10105c37
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax + 4], ebx
jle case.default.0x10105c37
mov eax, dword [eax]
push edx
mov edx, dword [eax + ebx*4]
call fcn.10104e45
mov edx, eax
inc ebx
mov eax, dword [edi]
pop ecx
mov ecx, dword [ebp - 0x3c]
cmp ebx, dword [eax + 4]
jl 0x10105bff
jmp case.default.0x10105c37
mov bl, byte [edi + 0xa]
test bl, 0xf
jne case.default.0x10105c37
movzx eax, byte [edi + 8]
dec eax
cmp eax, 0x11
ja case.default.0x10105c37
jmp dword [eax*4 + 0x10105dc6]
push edx
mov edx, dword [edi]
call fcn.10104d03
jmp 0x10105d27
push dword [edi + 4]
push dword [edi]
call fcn.1003cf5b
pop ecx
jmp 0x10105d27
push edx
mov edx, dword [edi]
call fcn.10104d1f
jmp 0x10105d27
push dword [edi + 4]
push dword [edi]
call fcn.1003cf5b
jmp 0x10105c55
push edx
mov edx, dword [edi]
call fcn.10104d49
jmp 0x10105d27
push dword [edi + 4]
push dword [edi]
call fcn.10104d7d
jmp 0x10105c55
push edx
mov edx, dword [edi]
call fcn.100ea389
jmp 0x10105d27
push dword [edi + 4]
push dword [edi]
call fcn.100ea3a5
jmp 0x10105c55
push edx
mov edx, dword [edi]
call fcn.100ea389
jmp 0x10105d27
push dword [edi + 4]
push dword [edi]
call fcn.100ea3a5
jmp 0x10105c55
movss xmm1, dword [edi]
call fcn.10104db3
jmp 0x10105d28
movsd xmm2, qword [edi]
call fcn.10104dc6
jmp 0x10105d28
push edx
mov dl, byte [edi]
call fcn.10104dde
jmp 0x10105d27
push edx
mov edx, dword [edi]
call fcn.1003cf77
jmp 0x10105d27
push edx
mov edx, dword [edi]
call fcn.1003cf77
jmp 0x10105d27
push edx
mov edx, dword [edi]
call fcn.10104d03
jmp 0x10105d27
push edx
mov edx, dword [edi]
call fcn.10104e09
jmp 0x10105d27
mov edi, dword [edi]
push edx
test bl, 0xf0
je 0x10105d20
mov eax, dword [edi]
push ecx
mov esi, dword [eax + 0x34]
mov ecx, esi
call dword [0x101d3368]
mov ecx, edi
call esi
jmp 0x10105d28
mov edx, edi
call fcn.10104e45
pop ecx
mov edx, eax
mov eax, edx
call fcn.10186c6d
ret 8