Function at 0x4d9a40
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov eax, dword [edx + 4]
test eax, eax
je 0x4d9ac9
mov edi, edx
mov ebp, ecx
mov ecx, dword [edx]
xor edx, edx
mov esi, 0
cmp eax, 8
jb 0x4d9aa6
mov edx, eax
and edx, 0xfffffff8
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop
movdqu xmm2, xmmword [ecx + esi*4]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + esi*4 + 0x10]
por xmm1, xmm2
add esi, 8
cmp edx, esi
jne 0x4d9a70
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd esi, xmm1
jmp 0x4d9aaa
or esi, dword [ecx + edx*4]
inc edx
cmp eax, edx
jne 0x4d9aa6
test esi, esi
je 0x4d9ac9
test eax, eax
jle 0x4d9abb
test byte [ecx], 1
jne 0x4d9aeb
push 0xae
push str.external_boringssl_src_crypto_fipsmodule_bn_montgomery.c
push 0x68
jmp 0x4d9ad5
push 0xaa
push str.external_boringssl_src_crypto_fipsmodule_bn_montgomery.c
push 0x69
push 0
push 3
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor eax, eax
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [edi + 0xc], 0
je 0x4d9aff
push 0xb2
push str.external_boringssl_src_crypto_fipsmodule_bn_montgomery.c
push 0x6d
jmp 0x4d9ad5
cmp eax, 0x801
mov dword [esp], ebp
jb 0x4d9ba0
lea ebx, [eax - 0x800]
cmp ebx, 8
jae 0x4d9b21
xor ebp, ebp
mov edx, 0x800
jmp 0x4d9b80
mov esi, ebx
and esi, 0xfffffff8
lea edx, [esi + 0x800]
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ecx + ebp*4 + 0x2000]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + ebp*4 + 0x2010]
por xmm1, xmm2
add ebp, 8
cmp esi, ebp
jne 0x4d9b40
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd ebp, xmm1
cmp ebx, esi
je 0x4d9b88
nop
or ebp, dword [ecx + edx*4]
inc edx
cmp eax, edx
jne 0x4d9b80
test ebp, ebp
mov ebp, dword [esp]
je 0x4d9ba0
push 0xb6
push str.external_boringssl_src_crypto_fipsmodule_bn_montgomery.c
push 0x66
jmp 0x4d9ad5
lea ebx, [ebp + 0x14]
cmp ebx, edi
je 0x4d9be2
push eax
push ebx
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4d9cb4
mov eax, dword [edi + 4]
lea ecx, [eax*4]
test ecx, ecx
je 0x4d9bd7
push ecx
push dword [edi]
push dword [ebx]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [edi + 4]
mov dword [ebp + 0x18], eax
mov ecx, dword [edi + 0xc]
mov dword [ebp + 0x20], ecx
jmp 0x4d9be5
mov eax, dword [ebp + 0x18]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov esi, eax
nop
test esi, esi
jle 0x4d9c12
mov edx, dword [ebx]
lea edi, [esi - 1]
cmp dword [edx + esi*4 - 4], 0
mov esi, edi
je 0x4d9bf0
inc edi
mov dword [ebp + 0x18], edi
mov ecx, dword [edx]
cmp edi, 2
jb 0x4d9c24
mov eax, dword [edx + 4]
jmp 0x4d9c26
mov dword [ebp + 0x18], ecx
test eax, eax
js 0x4d9c20
mov dword [ebp + 0x20], 0
mov eax, dword [ebx]
mov ecx, dword [eax]
xor eax, eax
xor edi, edi
mov esi, 1
mov edx, 0x40
mov dword [esp + 4], 0
xor ebx, ebx
mov ebp, esi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], eax
nop word cs:[eax + eax]
mov dword [esp + 0x10], edx
and ebp, 1
neg ebp
mov edx, 0
sbb edx, edx
mov eax, dword [esp + 8]
and eax, edx
and ebp, ecx
mov ecx, eax
xor ecx, edi
and eax, edi
mov edi, ebp
xor edi, esi
and ebp, esi
shrd edi, ecx, 1
shr ecx, 1
add ebp, edi
adc eax, ecx
mov ecx, dword [esp + 0xc]
and edx, 0x80000000
shrd dword [esp + 4], ebx, 1
shr ebx, 1
or ebx, edx
mov edx, dword [esp + 0x10]
mov esi, ebp
mov edi, eax
dec edx
jne 0x4d9c50
mov eax, dword [esp]
mov ecx, dword [esp + 4]
mov dword [eax + 0x28], ecx
mov dword [eax + 0x2c], ebx
mov eax, 1
jmp 0x4d9ae3
push 0xbc
push str.external_boringssl_src_crypto_fipsmodule_bn_montgomery.c
push 0x44
jmp 0x4d9ad5