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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xb0
mov edi, edx
mov edx, dword [edx]
mov eax, dword [edi + 8]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
lea ebx, [eax*8]
xor eax, eax
test ebx, ebx
je 0x4d0513
nop dword [eax + eax]
mov esi, dword [edx + 4]
sub eax, dword [edx]
add edx, 8
add ebx, 0xfffffff8
lea eax, [eax + esi + 1]
test ebx, ebx
jne 0x4d0500
cmp dword [ecx + 0x10], eax
jb 0x4d06fe
mov edx, dword [ecx + 8]
mov dword [esp + 0x30], edi
mov dword [esp + 0x4c], ecx
test edx, edx
je 0x4d0705
mov esi, dword [ecx]
xor ebx, ebx
cmp edx, 8
mov ecx, 0
mov edi, 0
jb 0x4d06cf
movd xmm0, eax
mov dword [esp + 0x44], edx
and edx, 0xfffffff8
lea edi, [esi + 0x7c]
pxor xmm5, xmm5
pxor xmm2, xmm2
mov dword [esp + 0x2c], esi
pshufd xmm0, xmm0, 0
mov dword [esp + 0x48], edx
movdqa xmmword [esp + 0x60], xmm0
pshufd xmm0, xmm0, 0xf5
movdqa xmm4, xmmword [esp + 0x60]
movdqa xmmword [esp + 0x90], xmm0
nop word cs:[eax + eax]
nop dword [eax]
movd xmm6, dword [edi - 0x44]
movd xmm1, dword [edi - 0x54]
movd xmm7, dword [edi - 0x74]
mov dword [esp + 0xc], edx
mov edx, dword [edi - 0x40]
movd xmm3, dword [edi - 0x14]
movzx esi, byte [edi - 0x50]
pcmpeqd xmm0, xmm0
movzx ebx, byte [edi - 0x70]
punpckldq xmm1, xmm6
movd xmm6, dword [edi - 0x64]
shl edx, 8
or edx, esi
mov esi, dword [edi - 0x60]
punpckldq xmm7, xmm6
movd xmm6, dword [edi - 0x34]
punpcklqdq xmm7, xmm1
movd xmm1, dword [edi - 4]
shl esi, 8
psubd xmm7, xmm0
movdqa xmm0, xmmword [esp + 0x90]
or esi, ebx
mov ebx, dword [edi]
punpckldq xmm3, xmm1
movd xmm1, dword [edi - 0x24]
shl ebx, 8
punpckldq xmm6, xmm1
pshufd xmm1, xmm7, 0xf5
pmuludq xmm7, xmm4
pmuludq xmm1, xmm0
punpcklqdq xmm6, xmm3
pshufd xmm3, xmm7, 0xe8
pxor xmm7, xmm7
pshufd xmm1, xmm1, 0xe8
punpckldq xmm3, xmm1
movd xmm1, esi
movzx esi, byte [edi - 0x10]
pinsrw xmm1, edx, 1
movzx edx, byte [edi - 0x30]
punpcklbw xmm1, xmm1
punpcklwd xmm1, xmm1
or ebx, esi
mov esi, dword [edi - 0x20]
pcmpeqb xmm1, xmm7
sub edi, 0xffffff80
pand xmm3, xmm1
pcmpeqd xmm1, xmm1
psubd xmm6, xmm1
paddd xmm5, xmm3
pshufd xmm1, xmm6, 0xf5
pmuludq xmm6, xmm4
shl esi, 8
pmuludq xmm1, xmm0
pshufd xmm3, xmm6, 0xe8
or esi, edx
mov edx, dword [esp + 0xc]
pshufd xmm1, xmm1, 0xe8
movd xmm0, esi
punpckldq xmm3, xmm1
pinsrw xmm0, ebx, 1
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
add edx, 0xfffffff8
pcmpeqb xmm0, xmm7
pand xmm3, xmm0
paddd xmm2, xmm3
jne 0x4d0590
paddd xmm2, xmm5
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x2c]
mov ebx, 0
pshufd xmm0, xmm2, 0xee
paddd xmm0, xmm2
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
cmp edx, edi
movd ecx, xmm1
je 0x4d06f5
sub edx, edi
shl edi, 4
lea esi, [edi + esi + 0xc]
nop dword [eax + eax]
mov edi, dword [esi - 4]
inc edi
imul edi, eax
cmp byte [esi], 0
cmovne edi, ebx
add esi, 0x10
add ecx, edi
dec edx
jne 0x4d06e0
mov edx, dword [esp + 0x4c]
cmp ecx, dword [edx + 0xc]
jbe 0x4d0710
xor eax, eax
jmp 0x4d0c59
mov ecx, eax
mov edx, dword [esp + 0x4c]
cmp ecx, dword [edx + 0xc]
ja 0x4d06fe
lea ecx, [esp + 0x1c]
call sym.regex_syntax::hir::literal::Literals::remove_complete::hfa0de5a36b84e014
cmp dword [esp + 0x24], 0
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
jne 0x4d07b5
movzx eax, byte [0x5c6170]
mov eax, dword [0x5c6108]
test eax, eax
je 0x4d0742
mov edi, dword [esp + 0x30]
jmp 0x4d0758
call sub.KERNEL32.dll_GetProcessHeap
mov edi, dword [esp + 0x30]
test eax, eax
je 0x4d0c6f
mov dword [0x5c6108], eax
push 0x10
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x4d0c6f
mov dword [eax], 1
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov byte [eax + 0xc], 0
mov esi, eax
cmp dword [esp + 0x20], 0
je 0x4d079c
push dword [esp + 0x1c]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
mov ecx, dword [edi]
mov eax, dword [edi + 8]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], 1
mov dword [esp + 0x24], 1
lea eax, [ecx + eax*8]
mov dword [esp + 0x74], eax
jmp 0x4d07c2
mov ecx, edx
cmp ecx, dword [esp + 0x74]
je 0x4d0c0c
mov esi, dword [ecx + 4]
mov edi, dword [ecx]
lea edx, [ecx + 8]
inc esi
cmp esi, edi
mov eax, edi
cmova eax, esi
nop dword [eax]
cmp eax, edi
je 0x4d07c0
mov ebx, edi
inc edi
mov ecx, ebx
xor ecx, 0xd800
add ecx, 0xffef0000
cmp ecx, 0xffef0800
jb 0x4d07e0
cmp ebx, 0x110000
je 0x4d07e0
mov dword [esp + 0x80], edi
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x44], esi
lea ecx, [esp + 0x34]
push edi
call sym.__LT_alloc..vec..Vec_LT_T_C_A_GT__u20_as_u20_core..clone..Clone_GT_::clone::h68defa773140b3e1
add esp, 4
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov esi, edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], eax
shl esi, 4
add esi, eax
test edx, edx
mov dword [esp + 0x5c], esi
je 0x4d0bb4
mov ecx, dword [esp + 0x18]
mov edx, ecx
mov edi, ecx
shr edx, 0x12
and dl, 7
or dl, 0xf0
mov dword [esp + 0x7c], edx
mov edx, ecx
shr edx, 0xc
mov ebx, edx
or dl, 0xe0
and bl, 0x3f
mov dword [esp + 0x78], edx
or bl, 0x80
mov byte [esp + 0x13], bl
mov ebx, ecx
shr ebx, 6
mov ecx, ebx
or bl, 0xc0
and cl, 0x3f
mov dword [esp + 0x30], ebx
or cl, 0x80
mov byte [esp + 0x2c], cl
mov ecx, edi
and cl, 0x3f
or cl, 0x80
mov byte [esp + 0x14], cl
jmp 0x4d08ff
mov edx, dword [ebx + 8]
mov eax, dword [ebx]
mov esi, dword [esp + 0x90]
mov ecx, edx
inc edx
shl ecx, 4
mov dword [eax + ecx], esi
mov esi, dword [esp + 0x60]
mov dword [eax + ecx + 4], esi
movq xmm0, qword [esp + 0x3c]
movq qword [eax + ecx + 8], xmm0
mov dword [ebx + 8], edx
push dword [esp + 0xc]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x58]
cmp eax, esi
mov edi, esi
je 0x4d0bb6
lea edi, [eax + 0x10]
mov dword [esp + 0x58], edi
movq xmm0, qword [eax]
movq qword [esp + 0x84], xmm0
mov ecx, dword [eax + 8]
mov dword [esp + 0x8c], ecx
movzx edx, byte [eax + 0xf]
movzx ecx, byte [eax + 0xc]
mov byte [esp + 0x2a], dl
cmp cl, 2
movzx eax, word [eax + 0xd]
mov word [esp + 0x28], ax
je 0x4d0bb6
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x8c]
movq xmm0, qword [esp + 0x84]
movzx ebx, byte [esp + 0x2a]
movzx esi, word [esp + 0x28]
mov dword [esp + 8], 0
cmp edx, 0x80
mov dword [esp + 0x3c], eax
movq qword [esp + 0x34], xmm0
mov byte [esp + 0x40], cl
lea ecx, [esp + 0x41]
mov byte [ecx + 2], bl
mov word [ecx], si
jae 0x4d0990
mov edi, 1
mov byte [esp + 8], dl
jmp 0x4d09e0
cmp edx, 0x800
jae 0x4d09b0
mov eax, dword [esp + 0x30]
movzx ecx, byte [esp + 0x14]
mov edi, 2
mov byte [esp + 8], al
mov byte [esp + 9], cl
jmp 0x4d09e0
cmp edx, 0x10000
jae 0x4d0b71
mov eax, dword [esp + 0x78]
movzx edx, byte [esp + 0x2c]
movzx ecx, byte [esp + 0x14]
mov edi, 3
mov byte [esp + 8], al
mov byte [esp + 9], dl
mov byte [esp + 0xa], cl
nop dword [eax + eax]
mov bl, 1
movzx eax, byte [0x5c6170]
mov eax, dword [0x5c6108]
test eax, eax
jne 0x4d0a04
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x4d0c61
mov dword [0x5c6108], eax
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x4d0c61
mov ecx, eax
push edi
lea eax, [esp + 0xc]
push eax
mov dword [esp + 0x14], ecx
push ecx
call sym._memcpy
add esp, 0xc
cmp byte [ebp + 8], 0
je 0x4d0af0
cmp dword [esp + 0x18], 0x80
jb 0x4d0af0
mov eax, edi
xor ecx, ecx
shr eax, 1
test bl, bl
jne 0x4d0ac5
mov ecx, dword [esp + 0xc]
mov esi, eax
mov dword [esp + 0x60], edi
and esi, 0xfffffffe
mov ebx, esi
lea edx, [ecx + edi - 2]
mov edi, ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ecx, word [edi]
movd xmm0, ecx
movzx ecx, word [edx]
movd xmm1, ecx
movdqa xmm2, xmm1
psllw xmm1, 8
psrlw xmm2, 8
por xmm1, xmm2
movdqa xmm2, xmm0
psllw xmm0, 8
psrlw xmm2, 8
movd ecx, xmm1
por xmm0, xmm2
mov word [edi], cx
add edi, 2
movd ecx, xmm0
mov word [edx], cx
add edx, 0xfffffffe
add esi, 0xfffffffe
jne 0x4d0a70
mov edi, dword [esp + 0x60]
mov ecx, ebx
cmp eax, ebx
je 0x4d0af0
mov esi, dword [esp + 0xc]
mov edx, edi
sub eax, ecx
sub edx, ecx
add ecx, esi
lea edx, [esi + edx - 1]
nop word cs:[eax + eax]
nop
movzx ebx, byte [ecx]
mov bh, byte [edx]
mov byte [ecx], bh
mov byte [edx], bl
inc ecx
dec edx
dec eax
jne 0x4d0ae0
nop
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
mov eax, ecx
sub eax, esi
cmp eax, edi
jae 0x4d0b30
mov edx, esi
lea ecx, [esp + 0x34]
push edi
call dbg.do_reserve_and_handle<u8, alloc::alloc::Global>
add esp, 4
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x60], eax
jmp 0x4d0b38
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x60], ecx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x90], eax
add eax, esi
push edi
push dword [esp + 0x10]
push eax
call sym._memcpy
add esp, 0xc
mov edx, dword [ebx + 8]
add esi, edi
mov dword [esp + 0x3c], esi
cmp edx, dword [ebx + 4]
jne 0x4d08b3
mov ecx, ebx
call sym.alloc::raw_vec::RawVec_LT_T_C_A_GT_::reserve_for_push::h000c0e560bae9379
jmp 0x4d08b0
mov eax, dword [esp + 0x7c]
movzx ecx, byte [esp + 0x13]
movzx edx, byte [esp + 0x2c]
mov edi, 4
xor ebx, ebx
mov byte [esp + 8], al
mov byte [esp + 9], cl
movzx ecx, byte [esp + 0x14]
mov byte [esp + 0xa], dl
mov byte [esp + 0xb], cl
movzx eax, byte [0x5c6170]
mov eax, dword [0x5c6108]
test eax, eax
jne 0x4d0a04
jmp 0x4d09f2
mov edi, eax
sub esi, edi
add edi, 4
shr esi, 4
jmp 0x4d0bc3
add edi, 0x10
sub esi, 1
jb 0x4d0be0
cmp dword [edi], 0
je 0x4d0bc0
push dword [edi - 4]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
jmp 0x4d0bc0
cmp dword [esp + 0x54], 0
je 0x4d0bf8
push dword [esp + 0x50]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x80]
jmp 0x4d07d5
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
add esi, 4
jmp 0x4d0c23
add esi, 0x10
sub edi, 1
jb 0x4d0c3f
cmp dword [esi], 0
je 0x4d0c20
push dword [esi - 4]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
jmp 0x4d0c20
cmp dword [esp + 0x20], 0
je 0x4d0c57
push dword [esp + 0x1c]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
mov al, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 1
mov edx, edi
call dbg.handle_alloc_error
jmp 0x4d0c7e
mov ecx, 4
mov edx, 0x10
call dbg.handle_alloc_error
ud2