Function at 0x4acf70
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov ebx, dword [esp + 0x44]
cmp byte [ebx + 0x14], 0
jne 0x4acfda
mov ecx, dword [ebx + 8]
mov esi, dword [ebx + 0x10]
cmp ecx, dword [ebx + 0xc]
jne 0x4acfc9
lea eax, [ecx + ecx*2]
mov edi, 0x20
shr eax, 1
test ecx, ecx
cmovne edi, eax
cmp edi, ecx
jbe 0x4acfd4
cmp edi, 0x3fffffff
ja 0x4acfd4
lea eax, [edi*4]
push eax
push dword [ebx + 4]
call sym.fastboot.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x4acfd4
mov dword [ebx + 4], eax
mov dword [ebx + 0xc], edi
mov ecx, dword [ebx + 8]
jmp 0x4acfcc
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4], esi
inc dword [ebx + 8]
jmp 0x4acfda
mov word [ebx + 0x14], 0x101
push ebx
call sym.fastboot.exe_BN_CTX_get
add esp, 4
xor edi, edi
test eax, eax
je 0x4ad851
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
mov ebp, eax
lea eax, [esi + 0x14]
push esi
push ebx
push eax
push dword [ecx + 4]
push dword [esp + 0x4c]
push ebp
call sym.fastboot.exe_BN_mod_exp_mont_consttime
add esp, 0x18
test eax, eax
je 0x4ad851
push ebx
push esi
push esi
push ebp
push ebp
call sym.fastboot.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x4ad851
mov eax, dword [esp + 0x34]
mov ebx, dword [ebp + 4]
mov dword [esp + 0xc], ebp
mov ecx, dword [eax + 8]
mov dword [esp + 8], ebx
mov edx, dword [ecx + 4]
mov dword [esp + 4], ecx
xor ecx, ecx
sub ebx, edx
jge 0x4ad0d8
mov ecx, dword [esp + 4]
mov eax, dword [esp + 8]
mov esi, edx
mov edi, dword [ecx]
sub esi, eax
xor ecx, ecx
cmp esi, 7
jbe 0x4ad0be
mov ecx, dword [esp + 8]
mov ebp, esi
mov dword [esp], edi
pxor xmm0, xmm0
pxor xmm1, xmm1
and ebp, 0xfffffff8
lea eax, [ecx + ebp]
lea ecx, [edi + ecx*4 + 0x10]
mov edi, ebp
nop
movdqu xmm2, xmmword [ecx - 0x10]
movdqu xmm3, xmmword [ecx]
add ecx, 0x20
add edi, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x4ad080
por xmm1, xmm0
cmp esi, ebp
mov ebp, dword [esp + 0xc]
mov edi, dword [esp]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ecx, xmm1
je 0x4ad0d8
mov esi, edx
lea edi, [edi + eax*4]
sub esi, eax
nop word cs:[eax + eax]
nop
or ecx, dword [edi]
add edi, 4
dec esi
jne 0x4ad0d0
mov eax, dword [esp + 8]
cmp edx, eax
jge 0x4ad168
mov edi, dword [ebp]
cmp ebx, 7
ja 0x4ad0f0
mov ebp, edx
jmp 0x4ad14a
mov esi, ebx
movd xmm1, ecx
mov dword [esp], edi
lea ecx, [edi + edx*4 + 0x10]
pxor xmm0, xmm0
and esi, 0xfffffff8
lea ebp, [edx + esi]
mov edi, esi
nop dword [eax]
movdqu xmm2, xmmword [ecx - 0x10]
movdqu xmm3, xmmword [ecx]
add ecx, 0x20
add edi, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x4ad110
por xmm0, xmm1
mov edi, dword [esp]
cmp ebx, esi
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ecx, xmm0
je 0x4ad168
mov esi, eax
lea edi, [edi + ebp*4]
sub esi, ebp
nop word cs:[eax + eax]
nop dword [eax + eax]
or ecx, dword [edi]
add edi, 4
dec esi
jne 0x4ad160
cmp eax, edx
cmovle edx, eax
test edx, edx
jle 0x4ad1dd
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 4]
xor ebp, ebp
cmp edx, 3
mov esi, dword [esi]
mov ebx, dword [edi]
jbe 0x4ad1d0
mov ebp, edx
movd xmm0, ecx
xor ecx, ecx
and ebp, 0xfffffffc
nop
movdqu xmm1, xmmword [esi + ecx*4]
movdqu xmm2, xmmword [ebx + ecx*4]
add ecx, 4
cmp ebp, ecx
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x4ad190
pshufd xmm1, xmm0, 0x4e
cmp edx, ebp
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ecx, xmm0
je 0x4ad1dd
nop word cs:[eax + eax]
nop dword [eax]
mov edi, dword [ebx + ebp*4]
xor edi, dword [esi + ebp*4]
inc ebp
or ecx, edi
cmp ebp, edx
jl 0x4ad1d0
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 4]
xor ebx, ebx
mov edx, dword [edx + 0xc]
mov esi, dword [esi + 0xc]
xor esi, edx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x34]
mov dword [esp + 4], esi
mov edx, dword [edx + 0xc]
mov ebp, dword [edx + 4]
mov dword [esp], edx
sub eax, ebp
mov dword [esp + 0x10], eax
jge 0x4ad2a8
mov esi, dword [esp]
mov eax, dword [esp + 8]
mov edx, ebp
xor ebx, ebx
mov edi, dword [esi]
sub edx, eax
cmp edx, 7
jbe 0x4ad28f
mov ebx, dword [esp + 8]
mov esi, edx
pxor xmm0, xmm0
pxor xmm1, xmm1
mov dword [esp + 0x18], edi
and esi, 0xfffffff8
lea eax, [ebx + esi]
lea ebx, [edi + ebx*4 + 0x10]
mov dword [esp + 0x14], eax
mov eax, esi
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ebx - 0x10]
movdqu xmm3, xmmword [ebx]
add ebx, 0x20
add esi, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x4ad250
por xmm1, xmm0
cmp edx, eax
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ebx, xmm1
je 0x4ad2a8
mov esi, ebp
lea edi, [edi + eax*4]
sub esi, eax
nop word cs:[eax + eax]
or ebx, dword [edi]
add edi, 4
dec esi
jne 0x4ad2a0
mov eax, dword [esp + 8]
cmp ebp, eax
jge 0x4ad2cb
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov edi, dword [esi]
cmp edx, 7
mov dword [esp + 0x14], edi
ja 0x4ad2d4
mov edi, dword [esp + 0x34]
mov esi, ebp
jmp 0x4ad331
mov edi, dword [esp + 0x34]
jmp 0x4ad358
and edx, 0xfffffff8
movd xmm1, ebx
lea edi, [edi + ebp*4 + 0x10]
pxor xmm0, xmm0
lea esi, [ebp + edx]
mov ebx, edx
mov dword [esp + 0x18], esi
nop dword [eax]
movdqu xmm2, xmmword [edi - 0x10]
movdqu xmm3, xmmword [edi]
add edi, 0x20
add ebx, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x4ad2f0
por xmm0, xmm1
cmp dword [esp + 0x10], edx
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebx, xmm0
je 0x4ad358
mov edx, eax
mov dword [esp + 0x18], esi
sub edx, esi
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
lea esi, [esi + eax*4]
mov eax, dword [esp + 8]
nop dword [eax + eax]
or ebx, dword [esi]
add esi, 4
dec edx
jne 0x4ad350
mov edx, dword [esp + 4]
or edx, ecx
cmp eax, ebp
cmovle ebp, eax
mov ecx, edx
mov dword [esp + 4], edx
test ebp, ebp
jle 0x4ad3dd
mov eax, dword [esp + 0xc]
mov ecx, dword [esp]
xor edx, edx
cmp ebp, 3
mov eax, dword [eax]
mov ecx, dword [ecx]
jbe 0x4ad3d0
mov edx, ebp
movd xmm0, ebx
xor esi, esi
and edx, 0xfffffffc
nop word [eax + eax]
movdqu xmm1, xmmword [eax + esi*4]
movdqu xmm2, xmmword [ecx + esi*4]
add esi, 4
cmp edx, esi
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x4ad390
pshufd xmm1, xmm0, 0x4e
cmp ebp, edx
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebx, xmm0
je 0x4ad3dd
nop word cs:[eax + eax]
nop dword [eax]
mov esi, dword [ecx + edx*4]
xor esi, dword [eax + edx*4]
inc edx
or ebx, esi
cmp edx, ebp
jl 0x4ad3d0
cmp dword [esp + 4], 0
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp]
sete al
xor ecx, dword [edx + 0xc]
or ecx, ebx
sete cl
or cl, al
movzx ebp, cl
neg ebp
cmp dword [edi + 0x10], 2
jl 0x4ad83f
mov ebx, dword [esp + 0x44]
mov edx, 1
nop
mov eax, dword [edi + 0x14]
mov esi, ebp
not esi
mov ecx, eax
not eax
xor ecx, edx
dec ecx
and ecx, eax
sar ecx, 0x1f
test ecx, esi
jne 0x4ad843
mov dword [esp + 0x1c], edx
push ebx
push dword [esp + 0x44]
mov esi, dword [esp + 0x14]
push esi
push esi
push esi
call sym.fastboot.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x4ad874
mov ecx, dword [edi + 0xc]
mov eax, dword [esi + 4]
mov dword [esp + 8], ebp
xor ebx, ebx
mov ebp, dword [ecx + 4]
mov edi, eax
mov dword [esp + 4], ecx
sub edi, ebp
jge 0x4ad4f8
mov ecx, dword [esp + 4]
xor ebx, ebx
mov esi, eax
mov edx, dword [ecx]
mov ecx, ebp
sub ecx, eax
cmp ecx, 7
jbe 0x4ad4de
mov esi, ecx
mov dword [esp], edx
pxor xmm0, xmm0
pxor xmm1, xmm1
and esi, 0xfffffff8
lea ebx, [eax + esi]
mov dword [esp + 0x10], ebx
lea ebx, [edx + eax*4 + 0x10]
mov edx, esi
nop dword [eax + eax]
movdqu xmm2, xmmword [ebx - 0x10]
movdqu xmm3, xmmword [ebx]
add ebx, 0x20
add edx, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x4ad4a0
por xmm1, xmm0
cmp ecx, esi
mov edx, dword [esp]
mov esi, dword [esp + 0x10]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ebx, xmm1
je 0x4ad4f8
mov ecx, ebp
lea edx, [edx + esi*4]
sub ecx, esi
nop word cs:[eax + eax]
nop
or ebx, dword [edx]
add edx, 4
dec ecx
jne 0x4ad4f0
cmp ebp, eax
jge 0x4ad588
mov ecx, dword [esp + 0xc]
cmp edi, 7
mov edx, dword [ecx]
ja 0x4ad510
mov esi, ebp
jmp 0x4ad56a
mov ecx, edi
mov dword [esp], edx
movd xmm1, ebx
lea edx, [edx + ebp*4 + 0x10]
pxor xmm0, xmm0
and ecx, 0xfffffff8
lea esi, [ebp + ecx]
mov ebx, ecx
nop word [eax + eax]
movdqu xmm2, xmmword [edx - 0x10]
movdqu xmm3, xmmword [edx]
add edx, 0x20
add ebx, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x4ad530
por xmm0, xmm1
mov edx, dword [esp]
cmp edi, ecx
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebx, xmm0
je 0x4ad588
mov ecx, eax
lea edx, [edx + esi*4]
sub ecx, esi
nop word cs:[eax + eax]
nop dword [eax + eax]
or ebx, dword [edx]
add edx, 4
dec ecx
jne 0x4ad580
cmp eax, ebp
cmovle ebp, eax
test ebp, ebp
jle 0x4ad5fd
mov ecx, dword [esp + 0xc]
mov esi, dword [ecx]
mov ecx, dword [esp + 4]
mov edi, dword [ecx]
xor ecx, ecx
cmp ebp, 3
jbe 0x4ad5f0
mov ecx, ebp
movd xmm0, ebx
xor edx, edx
and ecx, 0xfffffffc
nop
movdqu xmm1, xmmword [esi + edx*4]
movdqu xmm2, xmmword [edi + edx*4]
add edx, 4
cmp ecx, edx
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x4ad5b0
pshufd xmm1, xmm0, 0x4e
cmp ebp, ecx
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebx, xmm0
je 0x4ad5fd
nop word cs:[eax + eax]
nop dword [eax]
mov edx, dword [edi + ecx*4]
xor edx, dword [esi + ecx*4]
inc ecx
or ebx, edx
cmp ecx, ebp
jl 0x4ad5f0
mov ecx, dword [esp + 4]
mov ebp, dword [esp + 0xc]
mov dword [esp], eax
mov edx, dword [ebp + 0xc]
mov ecx, dword [ecx + 0xc]
xor ecx, edx
mov dword [esp + 0x10], edx
mov edx, 0xffffffff
or ecx, ebx
mov ecx, dword [esp + 8]
cmove ecx, edx
xor edi, edi
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x34]
mov ecx, dword [ecx + 8]
mov ebx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov ecx, eax
sub ecx, ebx
mov dword [esp + 0x18], ecx
jge 0x4ad6d8
mov ecx, dword [esp + 4]
mov eax, dword [esp]
mov edx, ebx
xor edi, edi
mov esi, dword [ecx]
sub edx, eax
cmp edx, 7
jbe 0x4ad6bf
mov edi, dword [esp]
mov ecx, edx
pxor xmm0, xmm0
pxor xmm1, xmm1
mov dword [esp + 0x14], esi
and ecx, 0xfffffff8
mov ebp, ecx
lea eax, [edi + ecx]
lea edi, [esi + edi*4 + 0x10]
nop word cs:[eax + eax]
nop
movdqu xmm2, xmmword [edi - 0x10]
movdqu xmm3, xmmword [edi]
add edi, 0x20
add ebp, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x4ad680
por xmm1, xmm0
mov ebp, dword [esp + 0xc]
mov esi, dword [esp + 0x14]
cmp edx, ecx
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd edi, xmm1
je 0x4ad6d8
mov ecx, ebx
lea edx, [esi + eax*4]
sub ecx, eax
nop word cs:[eax + eax]
or edi, dword [edx]
add edx, 4
dec ecx
jne 0x4ad6d0
mov eax, dword [esp]
cmp ebx, eax
jge 0x4ad778
mov esi, dword [esp + 0x18]
mov ecx, dword [ebp]
cmp esi, 7
mov dword [esp + 0x14], ecx
ja 0x4ad700
mov ebp, ebx
jmp 0x4ad757
mov edx, esi
movd xmm1, edi
lea edi, [ecx + ebx*4 + 0x10]
pxor xmm0, xmm0
and edx, 0xfffffff8
lea ebp, [ebx + edx]
mov ecx, edx
nop word cs:[eax + eax]
movdqu xmm2, xmmword [edi - 0x10]
movdqu xmm3, xmmword [edi]
add edi, 0x20
add ecx, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x4ad720
por xmm0, xmm1
cmp esi, edx
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd edi, xmm0
je 0x4ad778
mov edx, dword [esp + 0x14]
mov ecx, eax
sub ecx, ebp
lea edx, [edx + ebp*4]
nop word cs:[eax + eax]
nop dword [eax]
or edi, dword [edx]
add edx, 4
dec ecx
jne 0x4ad770
cmp eax, ebx
cmovle ebx, eax
test ebx, ebx
jle 0x4ad7a0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 4]
xor ebp, ebp
cmp ebx, 3
mov eax, dword [eax]
mov esi, dword [ecx]
ja 0x4ad7b0
mov edx, dword [esp + 0x10]
jmp 0x4ad800
mov edx, dword [esp + 0x10]
jmp 0x4ad80d
mov ebp, ebx
movd xmm0, edi
xor ecx, ecx
and ebp, 0xfffffffc
nop dword [eax + eax]
movdqu xmm1, xmmword [eax + ecx*4]
movdqu xmm2, xmmword [esi + ecx*4]
add ecx, 4
cmp ebp, ecx
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x4ad7c0
pshufd xmm1, xmm0, 0x4e
mov edx, dword [esp + 0x10]
cmp ebx, ebp
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd edi, xmm0
je 0x4ad80d
nop word [eax + eax]
mov ecx, dword [esi + ebp*4]
xor ecx, dword [eax + ebp*4]
inc ebp
or edi, ecx
cmp ebp, ebx
jl 0x4ad800
mov eax, dword [esp + 4]
mov ebp, dword [esp + 8]
xor edx, dword [eax + 0xc]
mov ecx, ebp
xor eax, eax
not ecx
or edx, edi
sete al
test eax, ecx
jne 0x4ad83f
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x44]
inc edx
cmp edx, dword [edi + 0x10]
jl 0x4ad410
jmp 0x4ad843
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x38]
and ebp, 1
mov edi, 1
mov dword [eax], ebp
cmp byte [ebx + 0x14], 0
jne 0x4ad86a
mov ecx, dword [ebx + 8]
mov eax, dword [ebx + 4]
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, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
cmp byte [ebx + 0x14], 0
jne 0x4ad86a
jmp 0x4ad857