Function at 0x43e6a1
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x523148
mov eax, dword fs:[0]
push eax
sub esp, 0x38
mov eax, dword [0x56d484]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
cmp byte [edi + 9], 0
mov ebx, dword [ebp + 0xc]
je 0x43edb1
cmp byte [edi + 0xb], 0
je 0x43e987
cmp dword [edi + 0xc], 0
je case.default.0x43edcb
mov eax, dword [ebp + 8]
mov ecx, ebx
shl eax, 3
or eax, 2
push eax
call fcn.0041ca70
push dword [edi + 0xc]
mov ecx, ebx
call fcn.0041ca70
movzx eax, byte [edi + 8]
dec eax
cmp eax, 0x11
ja case.default.0x43edcb
jmp dword [eax*4 + 0x43ef44]
mov ecx, dword [edi]
xor esi, esi
mov dword [ebp - 0x38], esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438800
cmp dword [ebx + 8], 0xa
mov eax, dword [eax]
cdq
jl 0x43e58e
mov esi, dword [ebx + 4]
push esi
push edx
push eax
call fcn.0041b6a0
sub eax, esi
add esp, 0xc
add dword [ebx + 4], eax
sub dword [ebx + 8], eax
mov esi, dword [ebp - 0x38]
jmp 0x43e597
push edx
push eax
mov ecx, ebx
call fcn.0041b650
mov ecx, dword [edi]
inc esi
mov dword [ebp - 0x38], esi
call fcn.0040c850
cmp esi, eax
jl 0x43e562
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
mov dword [ebp - 0x38], esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop
mov ecx, dword [edi]
push esi
call fcn.00438810
cmp dword [ebx + 8], 0xa
mov ecx, dword [eax]
mov eax, dword [eax + 4]
jl 0x43e5ee
mov esi, dword [ebx + 4]
push esi
push eax
push ecx
call fcn.0041b6a0
sub eax, esi
add esp, 0xc
add dword [ebx + 4], eax
sub dword [ebx + 8], eax
mov esi, dword [ebp - 0x38]
jmp 0x43e5f7
push eax
push ecx
mov ecx, ebx
call fcn.0041b650
mov ecx, dword [edi]
inc esi
mov dword [ebp - 0x38], esi
call fcn.0040c850
cmp esi, eax
jl 0x43e5c0
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop dword [eax]
mov ecx, dword [edi]
push esi
call fcn.00438800
mov ecx, ebx
push dword [eax]
call fcn.0041ca70
mov ecx, dword [edi]
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e620
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
mov dword [ebp - 0x38], esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438810
cmp dword [ebx + 8], 0xa
mov ecx, dword [eax]
mov eax, dword [eax + 4]
jl 0x43e684
mov esi, dword [ebx + 4]
push esi
push eax
push ecx
call fcn.0041b6a0
sub eax, esi
add esp, 0xc
add dword [ebx + 4], eax
sub dword [ebx + 8], eax
mov esi, dword [ebp - 0x38]
jmp 0x43e68d
push eax
push ecx
mov ecx, ebx
call fcn.0041b650
mov ecx, dword [edi]
inc esi
mov dword [ebp - 0x38], esi
call fcn.0040c850
cmp esi, eax
jl 0x43e656
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438800
mov eax, dword [eax]
mov ecx, eax
sar ecx, 0x1f
add eax, eax
xor ecx, eax
push ecx
mov ecx, ebx
call fcn.0041ca70
mov ecx, dword [edi]
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e6b2
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
mov dword [ebp - 0x3c], esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438810
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, eax
mov dword [ebp - 0x38], eax
sar dword [ebp - 0x38], 0x1f
shld eax, ecx, 1
sar edx, 0x1f
add ecx, ecx
xor edx, ecx
mov ecx, dword [ebp - 0x38]
xor ecx, eax
cmp dword [ebx + 8], 0xa
jl 0x43e739
mov esi, dword [ebx + 4]
push esi
push ecx
push edx
call fcn.0041b6a0
sub eax, esi
add esp, 0xc
add dword [ebx + 4], eax
sub dword [ebx + 8], eax
mov esi, dword [ebp - 0x3c]
jmp 0x43e742
push ecx
push edx
mov ecx, ebx
call fcn.0041b650
mov ecx, dword [edi]
inc esi
mov dword [ebp - 0x3c], esi
call fcn.0040c850
cmp esi, eax
jl 0x43e6f2
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438800
mov ecx, ebx
push dword [eax]
call fcn.0041b470
mov ecx, dword [edi]
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e767
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop word [eax + eax]
mov ecx, dword [edi]
push esi
call fcn.00438810
mov ecx, ebx
push dword [eax + 4]
push dword [eax]
call fcn.0041b4b0
mov ecx, dword [edi]
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e7a0
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438800
mov ecx, ebx
push dword [eax]
call fcn.0041b470
mov ecx, dword [edi]
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e7d6
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop dword [eax]
mov ecx, dword [edi]
push esi
call fcn.00438810
mov ecx, ebx
push dword [eax + 4]
push dword [eax]
call fcn.0041b4b0
mov ecx, dword [edi]
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e810
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438800
mov ecx, ebx
movss xmm0, dword [eax]
movss dword [ebp - 0x3c], xmm0
push dword [ebp - 0x3c]
call fcn.0041b470
mov ecx, dword [edi]
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e846
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438810
mov ecx, ebx
movsd xmm0, qword [eax]
movsd qword [ebp - 0x40], xmm0
push dword [ebp - 0x3c]
push dword [ebp - 0x40]
call fcn.0041b4b0
mov ecx, dword [edi]
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e883
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438820
xor ecx, ecx
mov al, byte [eax]
test al, al
setne cl
push ecx
mov ecx, ebx
call fcn.0041ca70
mov ecx, dword [edi]
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e8c3
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
mov dword [ebp - 0x3c], esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438800
cmp dword [ebx + 8], 0xa
mov eax, dword [eax]
cdq
jl 0x43e92d
mov esi, dword [ebx + 4]
push esi
push edx
push eax
call fcn.0041b6a0
sub eax, esi
add esp, 0xc
add dword [ebx + 4], eax
sub dword [ebx + 8], eax
mov esi, dword [ebp - 0x3c]
jmp 0x43e936
push edx
push eax
mov ecx, ebx
call fcn.0041b650
mov ecx, dword [edi]
inc esi
mov dword [ebp - 0x3c], esi
call fcn.0040c850
cmp esi, eax
jl 0x43e901
jmp case.default.0x43edcb
push 0x63a
push str.C:protobuf_3.9.1_src_srcgoogleprotobufextension_set.cc
push 3
lea ecx, [ebp - 0x34]
call fcn.00419200
push str.Non_primitive_types_cant_be_packed.
mov ecx, eax
mov dword [ebp - 4], 1
call fcn.004194f0
push eax
lea ecx, [ebp - 0x41]
call fcn.00419340
lea ecx, [ebp - 0x34]
call fcn.004192a0
jmp case.default.0x43edcb
movzx eax, byte [edi + 8]
dec eax
cmp eax, 0x11
ja case.default.0x43edcb
jmp dword [eax*4 + 0x43ef8c]
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop dword [eax]
mov ecx, dword [edi]
push esi
call fcn.00438800
push ebx
push dword [eax]
push dword [ebp + 8]
call fcn.0041c5e0
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e9b0
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438810
push ebx
push dword [eax + 4]
push dword [eax]
push dword [ebp + 8]
call fcn.0041c700
mov ecx, dword [edi]
add esp, 0x10
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43e9e8
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438800
push ebx
push dword [eax]
push dword [ebp + 8]
call fcn.0041ca50
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43ea23
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop dword [eax + eax]
mov ecx, dword [edi]
push esi
call fcn.00438810
push ebx
push dword [eax + 4]
push dword [eax]
push dword [ebp + 8]
call fcn.0041c700
mov ecx, dword [edi]
add esp, 0x10
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43ea60
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop dword [eax + eax]
mov ecx, dword [edi]
push esi
call fcn.00438800
push ebx
push dword [eax]
push dword [ebp + 8]
call fcn.0041c800
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43eaa0
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438810
push ebx
push dword [eax + 4]
push dword [eax]
push dword [ebp + 8]
call fcn.0041c830
mov ecx, dword [edi]
add esp, 0x10
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43ead8
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438800
push ebx
push dword [eax]
push dword [ebp + 8]
call fcn.0041c630
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43eb13
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop dword [eax + eax]
mov ecx, dword [edi]
push esi
call fcn.00438810
push ebx
push dword [eax + 4]
push dword [eax]
push dword [ebp + 8]
call fcn.0041c660
mov ecx, dword [edi]
add esp, 0x10
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43eb50
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop dword [eax + eax]
mov ecx, dword [edi]
push esi
call fcn.00438800
push ebx
push dword [eax]
push dword [ebp + 8]
call fcn.0041c630
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43eb90
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438810
push ebx
push dword [eax + 4]
push dword [eax]
push dword [ebp + 8]
call fcn.0041c660
mov ecx, dword [edi]
add esp, 0x10
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43ebc8
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438800
push ebx
push ecx
movss xmm0, dword [eax]
movss dword [esp], xmm0
push dword [ebp + 8]
call fcn.0041c690
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43ec03
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438810
push ebx
sub esp, 8
movsd xmm0, qword [eax]
movsd qword [esp], xmm0
push dword [ebp + 8]
call fcn.0041c5a0
mov ecx, dword [edi]
add esp, 0x10
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43ec43
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push esi
call fcn.00438820
push ebx
movzx eax, byte [eax]
push eax
push dword [ebp + 8]
call fcn.0041c3b0
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43ec85
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.004387a0
test eax, eax
jle case.default.0x43edcb
nop
mov ecx, dword [edi]
push ebx
push esi
call fcn.00438830
push eax
push dword [ebp + 8]
call fcn.0041c890
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.004387a0
cmp esi, eax
jl 0x43ecc0
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.004387a0
test eax, eax
jle case.default.0x43edcb
mov ecx, dword [edi]
push ebx
push esi
call fcn.00438830
push eax
push dword [ebp + 8]
call fcn.0041c3e0
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.004387a0
cmp esi, eax
jl 0x43ecf7
jmp case.default.0x43edcb
mov ecx, dword [edi]
xor esi, esi
call fcn.0040c850
test eax, eax
jle case.default.0x43edcb
nop
mov ecx, dword [edi]
push esi
call fcn.00438800
push ebx
push dword [eax]
push dword [ebp + 8]
call fcn.0041c5e0
mov ecx, dword [edi]
add esp, 0xc
inc esi
call fcn.0040c850
cmp esi, eax
jl 0x43ed30
jmp case.default.0x43edcb
mov eax, dword [edi]
xor esi, esi
cmp dword [eax + 4], esi
jle case.default.0x43edcb
mov eax, dword [eax + 0xc]
push ebx
push dword [eax + esi*4 + 4]
push dword [ebp + 8]
call fcn.0041c6c0
mov eax, dword [edi]
inc esi
add esp, 0xc
cmp esi, dword [eax + 4]
jl 0x43ed64
jmp case.default.0x43edcb
mov eax, dword [edi]
xor esi, esi
cmp dword [eax + 4], esi
jle case.default.0x43edcb
mov eax, dword [eax + 0xc]
push ebx
push dword [eax + esi*4 + 4]
push dword [ebp + 8]
call fcn.0041c750
mov eax, dword [edi]
inc esi
add esp, 0xc
cmp esi, dword [eax + 4]
jl 0x43ed91
jmp case.default.0x43edcb
mov cl, byte [edi + 0xa]
test cl, 0xf
jne case.default.0x43edcb
movzx eax, byte [edi + 8]
dec eax
cmp eax, 0x11
ja case.default.0x43edcb
jmp dword [eax*4 + 0x43efd4]
push ebx
push dword [edi]
push dword [ebp + 8]
call fcn.0041c5e0
jmp 0x43ef21
push ebx
push dword [edi + 4]
push dword [edi]
push dword [ebp + 8]
call fcn.0041c700
add esp, 0x10
jmp case.default.0x43edcb
push ebx
push dword [edi]
push dword [ebp + 8]
call fcn.0041ca50
jmp 0x43ef21
push ebx
push dword [edi + 4]
push dword [edi]
push dword [ebp + 8]
call fcn.0041c700
add esp, 0x10
jmp case.default.0x43edcb
push ebx
push dword [edi]
push dword [ebp + 8]
call fcn.0041c800
jmp 0x43ef21
push ebx
push dword [edi + 4]
push dword [edi]
push dword [ebp + 8]
call fcn.0041c830
add esp, 0x10
jmp case.default.0x43edcb
push ebx
push dword [edi]
push dword [ebp + 8]
call fcn.0041c630
jmp 0x43ef21
push ebx
push dword [edi + 4]
push dword [edi]
push dword [ebp + 8]
call fcn.0041c660
add esp, 0x10
jmp case.default.0x43edcb
push ebx
push dword [edi]
push dword [ebp + 8]
call fcn.0041c630
jmp 0x43ef21
push ebx
push dword [edi + 4]
push dword [edi]
push dword [ebp + 8]
call fcn.0041c660
add esp, 0x10
jmp case.default.0x43edcb
movss xmm0, dword [edi]
push ebx
push ecx
movss dword [esp], xmm0
push dword [ebp + 8]
call fcn.0041c690
jmp 0x43ef21
movsd xmm0, qword [edi]
push ebx
sub esp, 8
movsd qword [esp], xmm0
push dword [ebp + 8]
call fcn.0041c5a0
add esp, 0x10
jmp case.default.0x43edcb
movzx eax, byte [edi]
push ebx
push eax
push dword [ebp + 8]
call fcn.0041c3b0
jmp 0x43ef21
push ebx
push dword [edi]
push dword [ebp + 8]
call fcn.0041c890
jmp 0x43ef21
push ebx
push dword [edi]
push dword [ebp + 8]
call fcn.0041c3e0
jmp 0x43ef21
push ebx
push dword [edi]
push dword [ebp + 8]
call fcn.0041c5e0
jmp 0x43ef21
push ebx
push dword [edi]
push dword [ebp + 8]
call fcn.0041c6c0
jmp 0x43ef21
push ebx
test cl, 0xf0
je 0x43ef17
mov ecx, dword [edi]
push dword [ebp + 8]
mov eax, dword [ecx]
call dword [eax + 0x3c]
jmp case.default.0x43edcb
push dword [edi]
push dword [ebp + 8]
call fcn.0041c750
add esp, 0xc
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004dc9c9
mov esp, ebp
pop ebp
ret 8