Function at 0x4dcff0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebx, dword [esp + 0x40]
cmp byte [ebx + 0x14], 0
jne 0x4dd05a
mov ecx, dword [ebx + 8]
mov esi, dword [ebx + 0x10]
cmp ecx, dword [ebx + 0xc]
jne 0x4dd049
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x4dd054
cmp edi, 0x3fffffff
ja 0x4dd054
lea eax, [edi*4]
push eax
push dword [ebx + 4]
call sym.fastboot.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x4dd054
mov dword [ebx + 4], eax
mov dword [ebx + 0xc], edi
mov ecx, dword [ebx + 8]
jmp 0x4dd04c
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4], esi
inc dword [ebx + 8]
jmp 0x4dd05a
mov word [ebx + 0x14], 0x101
push ebx
call sym.fastboot.exe_BN_CTX_get
add esp, 4
xor edi, edi
test eax, eax
je 0x4dd8d8
mov esi, eax
mov ebp, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
lea eax, [ebp + 0x14]
push ebp
push ebx
push eax
push dword [ecx + 4]
push dword [esp + 0x48]
push esi
call sym.fastboot.exe_BN_mod_exp_mont_consttime
add esp, 0x18
test eax, eax
je 0x4dd8d8
push ebx
push ebp
push ebp
push esi
push esi
call sym.fastboot.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x4dd8d8
mov ebp, dword [esp + 0x30]
mov edi, dword [ebp + 8]
mov dword [esp + 4], esi
mov eax, dword [esi + 4]
mov ecx, dword [edi + 4]
xor edx, edx
mov esi, eax
sub esi, ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edi
jge 0x4dd148
mov esi, dword [edi]
mov ebp, ecx
sub ebp, eax
xor edx, edx
mov ebx, eax
cmp ebp, 8
jb 0x4dd140
mov dword [esp], ebp
and ebp, 0xfffffff8
lea ebx, [eax + ebp]
lea edx, [esi + eax*4]
add edx, 0x10
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [edx + edi*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edx + edi*4]
por xmm1, xmm2
add edi, 8
cmp ebp, edi
jne 0x4dd100
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd edx, xmm1
cmp dword [esp], ebp
mov edi, dword [esp + 0xc]
je 0x4dd148
nop dword [eax]
or edx, dword [esi + ebx*4]
inc ebx
cmp ecx, ebx
jne 0x4dd140
cmp ecx, eax
mov dword [esp], eax
jge 0x4dd169
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov eax, dword [esp + 0x14]
cmp eax, 8
jae 0x4dd16f
mov ebx, ecx
mov eax, dword [esp]
mov ebp, dword [esp + 0x30]
jmp 0x4dd1e0
mov ebp, dword [esp + 0x30]
jmp 0x4dd1e8
mov ebp, eax
and ebp, 0xfffffff8
lea ebx, [ecx + ebp]
movd xmm1, edx
lea edx, [esi + ecx*4]
add edx, 0x10
pxor xmm0, xmm0
xor edi, edi
nop word [eax + eax]
movdqu xmm2, xmmword [edx + edi*4 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [edx + edi*4]
por xmm0, xmm2
add edi, 8
cmp ebp, edi
jne 0x4dd190
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edx, xmm0
cmp eax, ebp
mov ebp, dword [esp + 0x30]
mov eax, dword [esp]
mov edi, dword [esp + 0xc]
je 0x4dd1e8
nop word cs:[eax + eax]
or edx, dword [esi + ebx*4]
inc ebx
cmp eax, ebx
jne 0x4dd1e0
cmp eax, ecx
cmovl ecx, eax
test ecx, ecx
jle 0x4dd266
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov edi, dword [edi]
xor ebx, ebx
cmp ecx, 8
jb 0x4dd259
mov ebx, ecx
and ebx, 0xfffffff8
movd xmm1, edx
pxor xmm0, xmm0
xor edx, edx
nop
movdqu xmm2, xmmword [esi + edx*4]
movdqu xmm3, xmmword [esi + edx*4 + 0x10]
movdqu xmm4, xmmword [edi + edx*4]
pxor xmm4, xmm2
por xmm1, xmm4
movdqu xmm2, xmmword [edi + edx*4 + 0x10]
pxor xmm2, xmm3
por xmm0, xmm2
add edx, 8
cmp ebx, edx
jne 0x4dd210
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edx, xmm0
jmp 0x4dd262
mov eax, dword [edi + ebx*4]
xor eax, dword [esi + ebx*4]
or edx, eax
inc ebx
cmp ecx, ebx
jne 0x4dd259
mov eax, dword [esp + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
mov edi, dword [eax + 4]
xor ebp, ebp
mov eax, dword [esp]
mov ecx, eax
sub ecx, edi
mov dword [esp + 0x10], ecx
jge 0x4dd308
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx]
mov ecx, edi
sub ecx, eax
xor ebp, ebp
mov ebx, eax
cmp ecx, 8
jb 0x4dd300
mov dword [esp + 0x18], ecx
and ecx, 0xfffffff8
lea ebx, [eax + ecx]
lea ebp, [esi + eax*4]
add ebp, 0x10
pxor xmm0, xmm0
xor eax, eax
pxor xmm1, xmm1
nop word [eax + eax]
movdqu xmm2, xmmword [ebp + eax*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [ebp + eax*4]
por xmm1, xmm2
add eax, 8
cmp ecx, eax
jne 0x4dd2c0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd ebp, xmm1
cmp dword [esp + 0x18], ecx
mov eax, dword [esp]
je 0x4dd308
nop
or ebp, dword [esi + ebx*4]
inc ebx
cmp edi, ebx
jne 0x4dd300
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx + 0xc]
xor ecx, dword [esp + 8]
cmp edi, eax
mov dword [esp + 0xc], ecx
jge 0x4dd335
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov ebx, dword [esp + 0x10]
cmp ebx, 8
jae 0x4dd33b
mov ecx, edi
mov ebx, dword [esp + 0x40]
mov eax, dword [esp]
jmp 0x4dd3b0
mov ebx, dword [esp + 0x40]
jmp 0x4dd3b8
and ebx, 0xfffffff8
lea ecx, [edi + ebx]
movd xmm1, ebp
lea ebp, [esi + edi*4]
add ebp, 0x10
pxor xmm0, xmm0
xor eax, eax
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ebp + eax*4 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [ebp + eax*4]
por xmm0, xmm2
add eax, 8
cmp ebx, eax
jne 0x4dd360
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ebp, xmm0
cmp dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x40]
mov eax, dword [esp]
je 0x4dd3b8
nop word cs:[eax + eax]
or ebp, dword [esi + ecx*4]
inc ecx
cmp eax, ecx
jne 0x4dd3b0
mov ecx, dword [esp + 0xc]
or ecx, edx
cmp eax, edi
cmovl edi, eax
test edi, edi
mov dword [esp + 0xc], ecx
jle 0x4dd446
mov eax, dword [esp + 4]
mov eax, dword [eax]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
xor esi, esi
cmp edi, 8
jb 0x4dd439
mov esi, edi
and esi, 0xfffffff8
movd xmm1, ebp
pxor xmm0, xmm0
xor ecx, ecx
nop dword [eax]
movdqu xmm2, xmmword [eax + ecx*4]
movdqu xmm3, xmmword [eax + ecx*4 + 0x10]
movdqu xmm4, xmmword [edx + ecx*4]
pxor xmm4, xmm2
por xmm1, xmm4
movdqu xmm2, xmmword [edx + ecx*4 + 0x10]
pxor xmm2, xmm3
por xmm0, xmm2
add ecx, 8
cmp esi, ecx
jne 0x4dd3f0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ebp, xmm0
jmp 0x4dd442
mov ecx, dword [edx + esi*4]
xor ecx, dword [eax + esi*4]
or ebp, ecx
inc esi
cmp edi, esi
jne 0x4dd439
cmp dword [esp + 0xc], 0
sete al
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x14]
xor ecx, dword [edx + 0xc]
or ecx, ebp
sete cl
or cl, al
movzx ebp, cl
neg ebp
mov edi, dword [esp + 0x30]
cmp dword [edi + 0x10], 2
jl 0x4dd8ca
mov edx, 1
nop dword [eax + eax]
mov eax, dword [edi + 0x14]
mov ecx, eax
xor ecx, edx
not eax
dec ecx
test ecx, eax
jns 0x4dd497
cmp ebp, 0xffffffff
jne 0x4dd8ca
mov dword [esp + 0x14], edx
push ebx
push dword [esp + 0x40]
mov esi, dword [esp + 0xc]
push esi
push esi
push esi
call sym.fastboot.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x4dd8fb
mov dword [esp + 0xc], ebp
mov eax, dword [edi + 0xc]
mov edx, dword [esi + 4]
mov dword [esp], eax
mov ebp, dword [eax + 4]
xor ebx, ebx
mov edi, edx
sub edi, ebp
jge 0x4dd558
mov eax, dword [esp]
mov ecx, dword [eax]
mov eax, ebp
sub eax, edx
xor ebx, ebx
mov esi, edx
cmp eax, 8
jb 0x4dd550
mov dword [esp + 8], edi
mov dword [esp + 0x10], eax
and eax, 0xfffffff8
lea esi, [edx + eax]
lea ebx, [ecx + edx*4]
add ebx, 0x10
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ebx + edi*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [ebx + edi*4]
por xmm1, xmm2
add edi, 8
cmp eax, edi
jne 0x4dd510
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd ebx, xmm1
cmp dword [esp + 0x10], eax
mov edi, dword [esp + 8]
je 0x4dd558
nop
or ebx, dword [ecx + esi*4]
inc esi
cmp ebp, esi
jne 0x4dd550
cmp ebp, edx
jge 0x4dd5e8
mov dword [esp + 8], edi
mov eax, dword [esp + 4]
mov ecx, dword [eax]
mov eax, dword [esp + 8]
cmp eax, 8
jae 0x4dd580
mov esi, ebp
jmp 0x4dd5e0
and eax, 0xfffffff8
lea esi, [eax + ebp]
movd xmm1, ebx
lea edi, [ecx + ebp*4]
add edi, 0x10
pxor xmm0, xmm0
xor ebx, ebx
nop word cs:[eax + eax]
movdqu xmm2, xmmword [edi + ebx*4 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [edi + ebx*4]
por xmm0, xmm2
add ebx, 8
cmp eax, ebx
jne 0x4dd5a0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ebx, xmm0
cmp dword [esp + 8], eax
je 0x4dd5e8
nop word [eax + eax]
or ebx, dword [ecx + esi*4]
inc esi
cmp edx, esi
jne 0x4dd5e0
cmp edx, ebp
cmovl ebp, edx
test ebp, ebp
jle 0x4dd69d
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov edi, dword [esp]
mov edi, dword [edi]
xor ecx, ecx
cmp ebp, 8
jb 0x4dd690
mov ecx, ebp
and ecx, 0xfffffff8
movd xmm1, ebx
pxor xmm0, xmm0
xor eax, eax
nop word [eax + eax]
movdqu xmm2, xmmword [esi + eax*4]
movdqu xmm3, xmmword [esi + eax*4 + 0x10]
movdqu xmm4, xmmword [edi + eax*4]
pxor xmm4, xmm2
por xmm1, xmm4
movdqu xmm2, xmmword [edi + eax*4 + 0x10]
pxor xmm2, xmm3
por xmm0, xmm2
add eax, 8
cmp ecx, eax
jne 0x4dd620
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ebx, xmm0
jmp 0x4dd699
mov edx, dword [esp + 0x14]
inc edx
mov edi, dword [esp + 0x30]
cmp edx, dword [edi + 0x10]
mov ebx, dword [esp + 0x40]
jl 0x4dd480
jmp 0x4dd8ca
mov eax, dword [edi + ecx*4]
xor eax, dword [esi + ecx*4]
or ebx, eax
inc ecx
cmp ebp, ecx
jne 0x4dd690
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xc]
mov eax, dword [esp]
mov eax, dword [eax + 0xc]
mov dword [esp + 8], esi
xor eax, esi
or eax, ebx
mov eax, dword [esp + 0xc]
mov esi, 0xffffffff
cmove eax, esi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov esi, dword [eax + 8]
mov ebx, dword [esi + 4]
xor edi, edi
mov eax, edx
sub eax, ebx
mov dword [esp + 0x10], eax
mov dword [esp], esi
jge 0x4dd759
mov ebp, dword [esi]
mov ecx, ebx
sub ecx, edx
xor edi, edi
mov eax, edx
cmp ecx, 8
jb 0x4dd750
mov dword [esp + 0x18], ecx
and ecx, 0xfffffff8
lea eax, [edx + ecx]
lea edi, [edx*4 + 0x10]
add edi, ebp
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop word [eax + eax]
movdqu xmm2, xmmword [edi + esi*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edi + esi*4]
por xmm1, xmm2
add esi, 8
cmp ecx, esi
jne 0x4dd710
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd edi, xmm1
cmp dword [esp + 0x18], ecx
mov esi, dword [esp]
je 0x4dd759
nop dword [eax]
or edi, dword [ebp + eax*4]
inc eax
cmp ebx, eax
jne 0x4dd750
cmp ebx, edx
jge 0x4dd780
mov ecx, dword [esp + 4]
mov ebp, dword [ecx]
mov eax, dword [esp + 0x10]
cmp eax, 8
jae 0x4dd790
mov eax, ebx
jmp 0x4dd800
mov ecx, dword [esp + 4]
jmp 0x4dd809
mov ecx, eax
and ecx, 0xfffffff8
lea eax, [ebx + ecx]
movd xmm1, edi
lea esi, [ebx*4 + 0x10]
add esi, ebp
pxor xmm0, xmm0
xor edi, edi
nop dword [eax + eax]
movdqu xmm2, xmmword [esi + edi*4 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [esi + edi*4]
por xmm0, xmm2
add edi, 8
cmp ecx, edi
jne 0x4dd7b0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edi, xmm0
cmp dword [esp + 0x10], ecx
mov ecx, dword [esp + 4]
mov esi, dword [esp]
je 0x4dd809
nop word cs:[eax + eax]
or edi, dword [ebp + eax*4]
inc eax
cmp edx, eax
jne 0x4dd800
cmp edx, ebx
cmovl ebx, edx
test ebx, ebx
jle 0x4dd830
mov eax, dword [ecx]
mov esi, dword [esi]
xor ebp, ebp
cmp ebx, 8
jae 0x4dd840
mov edx, dword [esp + 8]
jmp 0x4dd8a0
mov edx, dword [esp + 8]
jmp 0x4dd8ad
mov ebp, ebx
and ebp, 0xfffffff8
movd xmm1, edi
pxor xmm0, xmm0
xor ecx, ecx
nop
movdqu xmm2, xmmword [eax + ecx*4]
movdqu xmm3, xmmword [eax + ecx*4 + 0x10]
movdqu xmm4, xmmword [esi + ecx*4]
pxor xmm4, xmm2
por xmm1, xmm4
movdqu xmm2, xmmword [esi + ecx*4 + 0x10]
pxor xmm2, xmm3
por xmm0, xmm2
add ecx, 8
cmp ebp, ecx
jne 0x4dd850
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edi, xmm0
cmp ebx, ebp
mov edx, dword [esp + 8]
je 0x4dd8ad
nop
mov ecx, dword [esi + ebp*4]
xor ecx, dword [eax + ebp*4]
or edi, ecx
inc ebp
cmp ebx, ebp
jne 0x4dd8a0
mov eax, dword [esp]
xor edx, dword [eax + 0xc]
mov ebp, dword [esp + 0xc]
mov eax, ebp
and eax, 1
or eax, edi
or eax, edx
jne 0x4dd670
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
and ebp, 1
mov dword [eax], ebp
mov edi, 1
cmp byte [ebx + 0x14], 0
jne 0x4dd8f1
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 8]
lea edx, [ecx - 1]
mov dword [ebx + 8], edx
mov eax, dword [eax + ecx*4 - 4]
mov dword [ebx + 0x10], eax
mov eax, edi
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
cmp byte [ebx + 0x14], 0
jne 0x4dd8f1
jmp 0x4dd8de