Function at 0x4d64e0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x5c
mov esi, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 4]
mov ebx, dword [esi + 4]
cmp eax, ebx
cmovg ebx, eax
test ebx, ebx
je 0x4d6558
mov dword [esp + 0x58], edx
mov dword [esp + 0x44], ecx
mov ebp, dword [esp + 0x78]
cmp byte [ebp + 0x14], 0
jne 0x4d6587
mov ecx, dword [ebp + 8]
mov esi, dword [ebp + 0x10]
cmp ecx, dword [ebp + 0xc]
jne 0x4d6576
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x4d6581
cmp edi, 0x3fffffff
ja 0x4d6581
lea eax, [edi*4]
push eax
push dword [ebp + 4]
call sym.fastboot.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x4d6581
mov dword [ebp + 4], eax
mov dword [ebp + 0xc], edi
mov ecx, dword [ebp + 8]
jmp 0x4d6579
mov dword [edx], 0
mov dword [ecx + 0xc], 0
mov dword [ecx + 4], 0
mov eax, 1
jmp 0x4d694d
mov eax, dword [ebp + 4]
mov dword [eax + ecx*4], esi
inc dword [ebp + 8]
jmp 0x4d6587
mov word [ebp + 0x14], 0x101
push ebp
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov edi, eax
push ebp
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov esi, eax
push ebp
call sym.fastboot.exe_BN_CTX_get
add esp, 4
test edi, edi
je 0x4d6932
test esi, esi
je 0x4d6932
test eax, eax
je 0x4d6932
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x70]
cmp edi, eax
je 0x4d660d
push dword [eax + 4]
push edi
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4d6932
mov edx, dword [esp + 0x70]
mov eax, dword [edx + 4]
lea ecx, [eax*4]
test ecx, ecx
je 0x4d6604
push ecx
push dword [edx]
push dword [edi]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x7c]
add esp, 0xc
mov eax, dword [edx + 4]
mov dword [edi + 4], eax
mov eax, dword [edx + 0xc]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x74]
cmp esi, eax
je 0x4d6655
push dword [eax + 4]
push esi
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4d6932
mov ebp, dword [esp + 0x74]
mov eax, dword [ebp + 4]
lea ecx, [eax*4]
test ecx, ecx
je 0x4d664c
push ecx
push dword [ebp]
push dword [esi]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [ebp + 4]
mov dword [esi + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [edi + 4]
mov ebp, eax
sub ebp, ebx
mov dword [esp], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0xc], esi
jbe 0x4d671d
mov ecx, dword [edi]
xor edi, edi
mov edx, ebx
cmp ebp, 8
jb 0x4d66e0
mov esi, ebx
mov ebx, ebp
and ebx, 0xfffffff8
lea edx, [esi + ebx]
lea edi, [ecx + esi*4]
add edi, 0x10
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop word cs:[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 ebx, esi
jne 0x4d66a0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd edi, xmm1
cmp ebp, ebx
mov ebx, dword [esp]
mov esi, dword [esp + 0xc]
je 0x4d66e8
nop
or edi, dword [ecx + edx*4]
inc edx
cmp eax, edx
jne 0x4d66e0
test edi, edi
mov edi, dword [esp + 0x20]
je 0x4d674e
push 0x18f
push str.external_boringssl_src_crypto_fipsmodule_bn_bn.c
push 0x66
push 0
push 3
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor eax, eax
mov ebp, dword [esp + 0x78]
cmp byte [ebp + 0x14], 0
jne 0x4d694d
jmp 0x4d693a
push ebx
push edi
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4d68c3
mov eax, dword [edi + 4]
mov ecx, ebx
sub ecx, eax
shl ecx, 2
test ecx, ecx
je 0x4d674e
shl eax, 2
add eax, dword [edi]
push ecx
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov dword [edi + 4], ebx
mov eax, dword [esi + 4]
mov ecx, esi
mov esi, ebx
mov ebx, eax
sub ebx, esi
mov ebp, dword [esp + 0x78]
jbe 0x4d67ed
mov ecx, dword [ecx]
xor edi, edi
mov edx, esi
cmp ebx, 8
jb 0x4d67d0
mov ebp, ebx
and ebp, 0xfffffff8
mov esi, dword [esp]
lea edx, [esi + ebp]
lea edi, [ecx + esi*4]
add edi, 0x10
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop dword [eax]
movdqu xmm2, xmmword [edi + esi*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edi + esi*4]
por xmm1, xmm2
add esi, 8
cmp ebp, esi
jne 0x4d6790
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd edi, xmm1
cmp ebx, ebp
mov ebp, dword [esp + 0x78]
je 0x4d67d8
nop dword [eax]
or edi, dword [ecx + edx*4]
inc edx
cmp eax, edx
jne 0x4d67d0
test edi, edi
mov esi, dword [esp]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0xc]
jne 0x4d68b7
jmp 0x4d6824
push esi
mov ebx, ecx
push ecx
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4d6932
mov edx, ebx
mov eax, dword [ebx + 4]
mov ecx, esi
sub ecx, eax
shl ecx, 2
test ecx, ecx
je 0x4d6824
shl eax, 2
add eax, dword [edx]
push ecx
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov edx, ebx
add esp, 0xc
mov dword [edx + 4], esi
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 4]
mov ebx, eax
sub ebx, esi
jbe 0x4d68c9
mov ecx, dword [ecx]
xor edi, edi
mov edx, esi
cmp ebx, 8
jb 0x4d68a0
mov ebp, ebx
and ebp, 0xfffffff8
mov esi, dword [esp]
lea edx, [esi + ebp]
lea edi, [ecx + esi*4]
add edi, 0x10
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop
movdqu xmm2, xmmword [edi + esi*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edi + esi*4]
por xmm1, xmm2
add esi, 8
cmp ebp, esi
jne 0x4d6860
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd edi, xmm1
cmp ebx, ebp
mov ebp, dword [esp + 0x78]
je 0x4d68a8
nop dword [eax]
or edi, dword [ecx + edx*4]
inc edx
cmp eax, edx
jne 0x4d68a0
test edi, edi
mov ebx, dword [esp]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
je 0x4d6900
push 0x18f
push str.external_boringssl_src_crypto_fipsmodule_bn_bn.c
jmp 0x4d6924
mov ebp, dword [esp + 0x78]
jmp 0x4d6932
push esi
push ecx
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4d6932
mov ebx, esi
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 4]
mov ecx, esi
sub ecx, eax
shl ecx, 2
test ecx, ecx
je 0x4d6900
shl eax, 2
add eax, dword [edx]
push ecx
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov edx, dword [esp + 0x20]
add esp, 0xc
mov dword [edx + 4], ebx
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 4]
mov eax, ecx
shl eax, 5
mov edx, dword [esp + 0x74]
add ecx, dword [edx + 4]
shl ecx, 5
cmp ecx, eax
jae 0x4d6955
push 0x4e
push str.external_boringssl_src_crypto_fipsmodule_bn_gcd_extra.c
push 0x66
push 0
push 3
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor eax, eax
cmp byte [ebp + 0x14], 0
jne 0x4d694d
mov esi, dword [ebp + 4]
mov ecx, dword [ebp + 8]
lea edx, [ecx - 1]
mov dword [ebp + 8], edx
mov ecx, dword [esi + ecx*4 - 4]
mov dword [ebp + 0x10], ecx
add esp, 0x5c
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 0
test ecx, ecx
je 0x4d736a
lea eax, [ebx - 1]
lea edx, [ebx*4]
mov dword [esp + 0x10], edx
lea edx, [ebx*4 - 4]
mov dword [esp + 0x3c], edx
mov edx, ebx
and edx, 0xfffffff8
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
and eax, 0xfffffff8
mov dword [esp + 0x38], eax
lea eax, [ebx + 3]
mov dword [esp + 0x48], eax
and eax, 3
mov dword [esp + 0x30], eax
lea eax, [ebx - 2]
mov dword [esp + 0x40], eax
xor edx, edx
xor eax, eax
mov dword [esp + 0x4c], ecx
jmp 0x4d69d5
mov ecx, dword [esp + 0x1c]
and ecx, dword [esp + 8]
mov ebx, eax
mov eax, dword [esp + 0x34]
sub eax, ecx
mov edx, dword [esp + 0x54]
inc edx
mov ecx, dword [esp + 0x4c]
cmp edx, ecx
mov edi, dword [esp + 0x20]
je 0x4d736a
mov dword [esp + 0x54], edx
mov dword [esp + 0x34], eax
mov edi, dword [edi]
mov eax, dword [edi]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
mov dword [esp + 8], eax
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
mov ebp, dword [eax]
cmp ebx, 4
jae 0x4d6a14
mov edx, ebx
xor ecx, ecx
test dl, 1
jne 0x4d6aac
mov esi, edx
jmp 0x4d6ad4
xor eax, eax
mov dword [esp + 0x18], edi
mov edx, ebx
xor ebx, ebx
mov edi, dword [esp + 0x18]
xor ecx, ecx
mov dword [esp + 0x1c], ebp
nop dword [eax + eax]
mov edi, dword [edi + eax*4]
mov esi, dword [esp + 8]
sub edi, dword [esi + eax*4]
setb byte [esp + 4]
sub edi, ecx
mov ebp, dword [esp + 0x1c]
mov dword [ebp + eax*4], edi
setb ch
or ch, byte [esp + 4]
mov edi, dword [esp + 0x18]
add ch, 0xff
mov ecx, dword [edi + eax*4 + 4]
sbb ecx, dword [esi + eax*4 + 4]
mov dword [ebp + eax*4 + 4], ecx
mov ecx, dword [edi + eax*4 + 8]
sbb ecx, dword [esi + eax*4 + 8]
mov dword [ebp + eax*4 + 8], ecx
mov ecx, dword [edi + eax*4 + 0xc]
sbb ecx, dword [esi + eax*4 + 0xc]
mov dword [ebp + eax*4 + 0xc], ecx
setb cl
movzx ecx, cl
add edx, 0xfffffffc
add ebx, 0xfffffff0
add eax, 4
cmp edx, 4
jae 0x4d6a30
mov ebp, dword [esp + 0x1c]
test edx, edx
je 0x4d6b2e
sub dword [esp + 8], ebx
sub edi, ebx
sub ebp, ebx
test dl, 1
je 0x4d6a0d
mov eax, dword [edi]
mov esi, dword [esp + 8]
sub eax, dword [esi]
setb bl
sub eax, ecx
setb bh
or bh, bl
movzx ecx, bh
mov dword [ebp], eax
add edi, 4
add esi, 4
mov dword [esp + 8], esi
add ebp, 4
lea esi, [edx - 1]
cmp edx, 1
mov edx, dword [esp + 8]
je 0x4d6b2e
xor eax, eax
mov dword [esp + 0x1c], ebp
nop word cs:[eax + eax]
mov ebp, esi
mov esi, ecx
mov ecx, dword [edi + eax*4]
sub ecx, dword [edx + eax*4]
setb dl
sub ecx, esi
mov esi, ebp
mov ebp, dword [esp + 0x1c]
mov dword [ebp + eax*4], ecx
setb cl
or cl, dl
mov edx, dword [esp + 8]
add cl, 0xff
mov ecx, dword [edi + eax*4 + 4]
sbb ecx, dword [edx + eax*4 + 4]
mov dword [ebp + eax*4 + 4], ecx
setb cl
movzx ecx, cl
add eax, 2
cmp esi, eax
jne 0x4d6af0
mov edx, dword [esp + 0x50]
and edx, 1
neg edx
mov eax, dword [esp + 0x24]
and eax, 1
neg eax
and eax, edx
mov dword [esp + 0x1c], ecx
lea edi, [ecx - 1]
mov dword [esp + 0x24], eax
and edi, eax
xor ebp, ebp
mov eax, dword [esp + 0x20]
mov edx, dword [eax]
mov eax, dword [esp + 0x14]
mov esi, dword [eax]
mov eax, edi
not eax
mov dword [esp + 8], eax
cmp dword [esp], 8
mov dword [esp + 4], edi
jae 0x4d6b77
mov ebx, dword [esp]
jmp 0x4d6c00
mov eax, dword [esp + 0x10]
add eax, esi
cmp edx, eax
mov ebx, dword [esp]
mov ecx, dword [esp + 8]
jae 0x4d6b92
mov eax, dword [esp + 0x10]
add eax, edx
cmp esi, eax
jb 0x4d6c00
movd xmm0, edi
pshufd xmm0, xmm0, 0
movd xmm1, ecx
pshufd xmm1, xmm1, 0
xor eax, eax
mov edi, dword [esp + 0x28]
nop word [eax + eax]
movdqu xmm2, xmmword [esi + eax*4]
movdqu xmm3, xmmword [esi + eax*4 + 0x10]
movdqu xmm4, xmmword [edx + eax*4]
movdqu xmm5, xmmword [edx + eax*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [edx + eax*4], xmm4
movdqu xmmword [edx + eax*4 + 0x10], xmm5
add eax, 8
cmp edi, eax
jne 0x4d6bb0
mov ebp, edi
mov ebx, dword [esp]
cmp ebx, edi
mov edi, dword [esp + 4]
je 0x4d6c5e
nop dword [eax]
mov eax, ebp
or eax, 1
test bl, 1
je 0x4d6c21
mov ecx, dword [esi + ebp*4]
and ecx, edi
mov edi, dword [edx + ebp*4]
and edi, dword [esp + 8]
or edi, ecx
mov dword [edx + ebp*4], edi
mov edi, dword [esp + 4]
mov ebp, eax
mov ebx, dword [esp]
cmp ebx, eax
mov ecx, dword [esp + 8]
je 0x4d6c5e
nop dword [eax]
mov eax, dword [esi + ebp*4]
and eax, edi
mov edi, dword [edx + ebp*4]
and edi, ecx
or edi, eax
mov dword [edx + ebp*4], edi
mov eax, dword [esi + ebp*4 + 4]
and eax, dword [esp + 4]
mov edi, dword [edx + ebp*4 + 4]
and edi, ecx
or edi, eax
mov dword [edx + ebp*4 + 4], edi
mov edi, dword [esp + 4]
add ebp, 2
cmp ebx, ebp
jne 0x4d6c30
xor ebp, ebp
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov eax, dword [esp + 0xc]
mov edx, dword [eax]
mov eax, dword [esp + 0x20]
mov esi, dword [eax]
cmp ebx, 4
jb 0x4d6d05
xor edi, edi
xor eax, eax
xor ebp, ebp
mov dword [esp + 8], ecx
nop word cs:[eax + eax]
mov dword [esp + 4], ebx
mov ecx, dword [edx + edi*4]
sub ecx, dword [esi + edi*4]
mov ebx, esi
mov esi, edx
setb dl
sub ecx, ebp
mov ebp, dword [esp + 8]
mov dword [ebp + edi*4], ecx
setb cl
or cl, dl
mov edx, esi
mov esi, ebx
mov ebx, dword [esp + 4]
add cl, 0xff
mov ecx, dword [edx + edi*4 + 4]
sbb ecx, dword [esi + edi*4 + 4]
mov dword [ebp + edi*4 + 4], ecx
mov ecx, dword [edx + edi*4 + 8]
sbb ecx, dword [esi + edi*4 + 8]
mov dword [ebp + edi*4 + 8], ecx
mov ecx, dword [edx + edi*4 + 0xc]
sbb ecx, dword [esi + edi*4 + 0xc]
mov dword [ebp + edi*4 + 0xc], ecx
setb cl
movzx ebp, cl
add ebx, 0xfffffffc
add eax, 0xfffffff0
add edi, 4
cmp ebx, 4
jae 0x4d6c90
mov ecx, dword [esp + 8]
test ebx, ebx
je 0x4d6d8b
sub esi, eax
sub edx, eax
sub ecx, eax
test bl, 1
jne 0x4d6d13
mov eax, ebx
cmp ebx, 1
jne 0x4d6d43
jmp 0x4d6d8b
mov eax, dword [edx]
sub eax, dword [esi]
setb byte [esp + 4]
sub eax, ebp
mov edi, esi
mov esi, edx
setb dl
or dl, byte [esp + 4]
movzx ebp, dl
mov edx, esi
mov esi, edi
mov dword [ecx], eax
add edx, 4
add esi, 4
add ecx, 4
lea eax, [ebx - 1]
cmp ebx, 1
je 0x4d6d8b
mov ebx, ecx
xor edi, edi
mov dword [esp + 4], eax
nop dword [eax + eax]
mov ecx, dword [edx + edi*4]
sub ecx, dword [esi + edi*4]
mov eax, esi
mov esi, edx
setb dl
sub ecx, ebp
mov dword [ebx + edi*4], ecx
setb cl
or cl, dl
mov edx, esi
mov esi, eax
mov eax, dword [esp + 4]
add cl, 0xff
mov ecx, dword [edx + edi*4 + 4]
sbb ecx, dword [esi + edi*4 + 4]
mov dword [ebx + edi*4 + 4], ecx
setb cl
movzx ebp, cl
add edi, 2
cmp eax, edi
jne 0x4d6d50
mov eax, dword [esp + 0x1c]
neg eax
mov ebp, dword [esp + 0x24]
and ebp, eax
xor edi, edi
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
mov esi, ebp
not esi
mov ebx, dword [esp]
cmp ebx, 8
jb 0x4d6e30
mov eax, dword [esp + 0x10]
add eax, edx
cmp ecx, eax
jae 0x4d6dc5
mov eax, dword [esp + 0x10]
add eax, ecx
cmp edx, eax
jb 0x4d6e30
movd xmm0, ebp
pshufd xmm0, xmm0, 0
movd xmm1, esi
pshufd xmm1, xmm1, 0
xor eax, eax
mov edi, dword [esp + 0x28]
nop dword [eax]
movdqu xmm2, xmmword [edx + eax*4]
movdqu xmm3, xmmword [edx + eax*4 + 0x10]
movdqu xmm4, xmmword [ecx + eax*4]
movdqu xmm5, xmmword [ecx + eax*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [ecx + eax*4], xmm4
movdqu xmmword [ecx + eax*4 + 0x10], xmm5
add eax, 8
cmp edi, eax
jne 0x4d6de0
mov eax, edi
cmp ebx, edi
je 0x4d6e8b
nop word cs:[eax + eax]
mov eax, edi
or eax, 1
test bl, 1
je 0x4d6e56
mov ebx, dword [edx + edi*4]
and ebx, ebp
mov dword [esp + 0x24], ebp
mov ebp, dword [ecx + edi*4]
and ebp, esi
or ebp, ebx
mov ebx, dword [esp]
mov dword [ecx + edi*4], ebp
mov ebp, dword [esp + 0x24]
mov edi, eax
cmp ebx, eax
je 0x4d6e8b
nop word [eax + eax]
mov eax, dword [edx + edi*4]
and eax, ebp
mov ebx, dword [ecx + edi*4]
and ebx, esi
or ebx, eax
mov dword [ecx + edi*4], ebx
mov eax, dword [edx + edi*4 + 4]
and eax, ebp
mov ebx, dword [ecx + edi*4 + 4]
and ebx, esi
or ebx, eax
mov dword [ecx + edi*4 + 4], ebx
mov ebx, dword [esp]
add edi, 2
cmp ebx, edi
jne 0x4d6e60
mov eax, dword [esp + 0x20]
mov ebp, dword [eax]
mov edx, dword [ebp]
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
mov eax, dword [ecx]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4d6fca
mov dword [esp + 0x1c], edx
xor edx, edx
cmp eax, 8
jb 0x4d6f30
mov esi, dword [esp + 0x10]
add esi, ebp
cmp ecx, esi
jae 0x4d6ed1
mov esi, dword [esp + 0x3c]
add esi, ecx
cmp ebp, esi
jb 0x4d6f30
xor edx, edx
mov esi, dword [esp + 0x38]
nop word [eax + eax]
movdqu xmm0, xmmword [ebp + edx*4 + 0x10]
movdqu xmm1, xmmword [ebp + edx*4]
movdqu xmm2, xmmword [ebp + edx*4 + 4]
movdqu xmm3, xmmword [ebp + edx*4 + 0x14]
psrld xmm1, 1
pslld xmm2, 0x1f
por xmm2, xmm1
psrld xmm0, 1
pslld xmm3, 0x1f
por xmm3, xmm0
movdqu xmmword [ecx + edx*4], xmm2
movdqu xmmword [ecx + edx*4 + 0x10], xmm3
add edx, 8
cmp esi, edx
jne 0x4d6ee0
mov edx, esi
cmp eax, esi
je 0x4d6fb8
mov esi, edx
cmp dword [esp + 0x30], 0
je 0x4d6f57
mov edi, dword [esp + 0x30]
mov ebx, edx
nop
mov esi, dword [ebp + ebx*4]
mov eax, dword [ebp + ebx*4 + 4]
shld eax, esi, 0x1f
lea esi, [ebx + 1]
mov dword [ecx + ebx*4], eax
mov ebx, esi
dec edi
jne 0x4d6f40
mov eax, dword [esp + 0x40]
sub eax, edx
cmp eax, 3
mov ebx, dword [esp]
mov edi, dword [esp + 0x2c]
jb 0x4d6fb8
nop dword [eax]
mov eax, dword [ebp + esi*4]
mov edx, dword [ebp + esi*4 + 4]
shld edx, eax, 0x1f
mov dword [ecx + esi*4], edx
mov eax, dword [ebp + esi*4 + 4]
mov edx, dword [ebp + esi*4 + 8]
shld edx, eax, 0x1f
mov dword [ecx + esi*4 + 4], edx
mov eax, dword [ebp + esi*4 + 8]
mov edx, dword [ebp + esi*4 + 0xc]
shld edx, eax, 0x1f
mov dword [ecx + esi*4 + 8], edx
mov eax, dword [ebp + esi*4 + 0xc]
mov edx, dword [ebp + esi*4 + 0x10]
shld edx, eax, 0x1f
mov dword [ecx + esi*4 + 0xc], edx
lea eax, [esi + 4]
mov esi, eax
cmp edi, eax
jne 0x4d6f70
mov eax, dword [ebp + ebx*4 - 4]
shr eax, 1
mov dword [ecx + ebx*4 - 4], eax
mov eax, ebx
mov edx, dword [esp + 0x1c]
jmp 0x4d6fd2
mov eax, edx
shr eax, 1
mov dword [ecx], eax
mov eax, ebx
and edx, 1
dec edx
mov dword [esp + 0x1c], edx
xor ebx, ebx
mov dword [esp + 0x18], edx
mov esi, edx
not esi
mov dword [esp + 4], esi
cmp eax, 8
jae 0x4d6ff5
mov eax, dword [esp]
jmp 0x4d7080
mov eax, dword [esp + 0x10]
add eax, ecx
cmp ebp, eax
mov edi, dword [esp]
mov edx, dword [esp + 4]
mov esi, dword [esp + 0x18]
jae 0x4d7016
mov eax, dword [esp + 0x10]
add eax, ebp
cmp ecx, eax
mov eax, edi
jb 0x4d7080
movd xmm0, esi
pshufd xmm0, xmm0, 0
movd xmm1, edx
pshufd xmm1, xmm1, 0
xor ebx, ebx
mov eax, dword [esp + 0x28]
nop
movdqu xmm2, xmmword [ecx + ebx*4]
movdqu xmm3, xmmword [ecx + ebx*4 + 0x10]
movdqu xmm4, xmmword [ebp + ebx*4]
movdqu xmm5, xmmword [ebp + ebx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [ebp + ebx*4], xmm4
movdqu xmmword [ebp + ebx*4 + 0x10], xmm5
add ebx, 8
cmp eax, ebx
jne 0x4d7030
mov ebx, eax
mov edx, dword [esp]
cmp edx, eax
mov eax, edx
je 0x4d70e5
nop dword [eax]
mov edx, ecx
mov edi, ebx
or edi, 1
test al, 1
je 0x4d70a2
mov ecx, dword [edx + ebx*4]
and ecx, dword [esp + 0x18]
mov eax, dword [ebp + ebx*4]
and eax, dword [esp + 4]
or eax, ecx
mov dword [ebp + ebx*4], eax
mov ebx, edi
mov eax, dword [esp]
cmp eax, edi
mov esi, dword [esp + 0x18]
je 0x4d70e5
mov ecx, edx
nop
mov eax, dword [ecx + ebx*4]
and eax, esi
mov edi, dword [ebp + ebx*4]
mov edx, esi
mov esi, dword [esp + 4]
and edi, esi
or edi, eax
mov dword [ebp + ebx*4], edi
mov eax, dword [ecx + ebx*4 + 4]
and eax, edx
mov edi, dword [ebp + ebx*4 + 4]
and edi, esi
mov esi, edx
or edi, eax
mov eax, dword [esp]
mov dword [ebp + ebx*4 + 4], edi
add ebx, 2
cmp eax, ebx
jne 0x4d70b0
mov eax, dword [esp + 0xc]
mov ebp, dword [eax]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov esi, dword [esp + 0x2c]
test esi, esi
je 0x4d7217
xor edx, edx
cmp esi, 8
jb 0x4d7170
mov eax, dword [esp + 0x10]
add eax, ebp
cmp ecx, eax
jae 0x4d7118
mov eax, dword [esp + 0x3c]
add eax, ecx
cmp ebp, eax
jb 0x4d7170
xor edx, edx
mov eax, dword [esp + 0x38]
nop
movdqu xmm0, xmmword [ebp + edx*4 + 0x10]
movdqu xmm1, xmmword [ebp + edx*4]
movdqu xmm2, xmmword [ebp + edx*4 + 4]
movdqu xmm3, xmmword [ebp + edx*4 + 0x14]
psrld xmm1, 1
pslld xmm2, 0x1f
por xmm2, xmm1
psrld xmm0, 1
pslld xmm3, 0x1f
por xmm3, xmm0
movdqu xmmword [ecx + edx*4], xmm2
movdqu xmmword [ecx + edx*4 + 0x10], xmm3
add edx, 8
cmp eax, edx
jne 0x4d7120
mov edx, eax
cmp esi, eax
je 0x4d7208
mov dword [esp + 4], edx
mov esi, edx
test byte [esp + 0x48], 3
je 0x4d71a7
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 4]
nop word cs:[eax + eax]
mov eax, dword [ebp + ebx*4]
mov edx, dword [ebp + ebx*4 + 4]
shld edx, eax, 0x1f
lea esi, [ebx + 1]
mov dword [ecx + ebx*4], edx
mov ebx, esi
dec edi
jne 0x4d7190
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 4]
cmp eax, 3
mov edi, dword [esp + 0x2c]
jb 0x4d7208
nop dword [eax + eax]
mov eax, dword [ebp + esi*4]
mov edx, dword [ebp + esi*4 + 4]
shld edx, eax, 0x1f
mov dword [ecx + esi*4], edx
mov eax, dword [ebp + esi*4 + 4]
mov edx, dword [ebp + esi*4 + 8]
shld edx, eax, 0x1f
mov dword [ecx + esi*4 + 4], edx
mov eax, dword [ebp + esi*4 + 8]
mov edx, dword [ebp + esi*4 + 0xc]
shld edx, eax, 0x1f
mov dword [ecx + esi*4 + 8], edx
mov eax, dword [ebp + esi*4 + 0xc]
mov edx, dword [ebp + esi*4 + 0x10]
shld edx, eax, 0x1f
mov dword [ecx + esi*4 + 0xc], edx
lea eax, [esi + 4]
mov esi, eax
cmp edi, eax
jne 0x4d71c0
mov edi, dword [esp]
mov eax, dword [ebp + edi*4 - 4]
shr eax, 1
mov dword [ecx + edi*4 - 4], eax
jmp 0x4d7221
mov eax, dword [ebp]
shr eax, 1
mov dword [ecx], eax
mov edi, dword [esp]
mov edx, dword [esp + 8]
and edx, 1
dec edx
mov dword [esp + 8], edx
xor ebx, ebx
mov dword [esp + 0x18], edx
mov eax, edx
not eax
mov dword [esp + 4], eax
cmp edi, 8
jae 0x4d724a
mov eax, dword [esp]
mov edi, ecx
jmp 0x4d72f0
mov eax, dword [esp + 0x10]
add eax, ecx
cmp ebp, eax
mov esi, dword [esp]
mov edx, dword [esp + 4]
mov edi, ecx
mov ecx, dword [esp + 0x18]
jae 0x4d7271
mov eax, dword [esp + 0x10]
add eax, ebp
cmp edi, eax
mov eax, esi
jb 0x4d72f0
movd xmm0, ecx
pshufd xmm0, xmm0, 0
movd xmm1, edx
pshufd xmm1, xmm1, 0
xor ebx, ebx
mov eax, dword [esp + 0x28]
mov ecx, edi
nop dword [eax + eax]
movdqu xmm2, xmmword [ecx + ebx*4]
movdqu xmm3, xmmword [ecx + ebx*4 + 0x10]
movdqu xmm4, xmmword [ebp + ebx*4]
movdqu xmm5, xmmword [ebp + ebx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [ebp + ebx*4], xmm4
movdqu xmmword [ebp + ebx*4 + 0x10], xmm5
add ebx, 8
cmp eax, ebx
jne 0x4d7290
mov ebx, eax
mov esi, dword [esp]
cmp esi, eax
mov eax, esi
mov edi, ecx
je 0x4d69b0
nop word cs:[eax + eax]
mov esi, edi
mov edi, ebx
or edi, 1
test al, 1
je 0x4d7312
mov ecx, dword [esi + ebx*4]
and ecx, dword [esp + 0x18]
mov eax, dword [ebp + ebx*4]
and eax, dword [esp + 4]
or eax, ecx
mov dword [ebp + ebx*4], eax
mov ebx, edi
mov eax, dword [esp]
cmp eax, edi
mov ecx, dword [esp + 0x18]
je 0x4d69b0
nop word cs:[eax + eax]
mov eax, dword [esi + ebx*4]
and eax, ecx
mov edi, dword [ebp + ebx*4]
mov edx, ecx
mov ecx, dword [esp + 4]
and edi, ecx
or edi, eax
mov dword [ebp + ebx*4], edi
mov eax, dword [esi + ebx*4 + 4]
and eax, edx
mov edi, dword [ebp + ebx*4 + 4]
and edi, ecx
mov ecx, edx
or edi, eax
mov eax, dword [esp]
mov dword [ebp + ebx*4 + 4], edi
add ebx, 2
cmp eax, ebx
jne 0x4d7330
jmp 0x4d69b0
mov dword [esp + 0x34], eax
mov eax, 1
cmp ebx, 2
cmovae eax, ebx
mov edx, dword [esp + 0xc]
mov ebp, 0
jb 0x4d73b4
mov ecx, eax
and ecx, 0xfffffffe
xor ebp, ebp
mov edx, dword [edi]
mov edx, dword [edx + ebp*4]
mov esi, dword [esp + 0xc]
mov esi, dword [esi]
or dword [esi + ebp*4], edx
mov edx, dword [edi]
mov edx, dword [edx + ebp*4 + 4]
mov esi, dword [esp + 0xc]
mov esi, dword [esi]
or dword [esi + ebp*4 + 4], edx
mov edx, dword [esp + 0xc]
add ebp, 2
cmp ecx, ebp
jne 0x4d738b
mov ecx, ebp
test al, 1
mov ebp, dword [esp + 0x78]
je 0x4d73ca
mov eax, dword [edi]
mov esi, ecx
mov eax, dword [eax + ecx*4]
mov ecx, dword [edx]
or dword [ecx + esi*4], eax
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x34]
mov dword [eax], ecx
mov esi, dword [edx]
push ebx
push dword [esp + 0x48]
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4d6932
lea eax, [ebx*4]
test eax, eax
mov edi, dword [esp + 0x44]
je 0x4d7406
push eax
push esi
push dword [edi]
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
add esp, 0xc
mov dword [edi + 4], ebx
mov dword [edi + 0xc], 0
mov eax, 1
cmp byte [ebp + 0x14], 0
jne 0x4d694d
jmp 0x4d693a