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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov eax, dword [edx + 0x258]
mov esi, dword [edx + 0x260]
mov dword [esp + 0x14], ecx
mov ecx, dword [edx + 0x264]
mov dword [esp + 4], edx
or esi, dword [edx + 0x270]
or eax, dword [edx + 0x268]
or ecx, dword [edx + 0x274]
or eax, esi
mov esi, dword [edx + 0x25c]
or esi, dword [edx + 0x26c]
or esi, ecx
or esi, eax
mov esi, dword [ebp + 0xc]
mov eax, dword [esi + 0x10]
mov dword [esp + 0x58], eax
je 0x47cd19
test eax, eax
je 0x47cd19
mov edi, dword [esi + 0xc]
lea ecx, [eax - 1]
cmp ecx, edi
jae 0x47d463
mov eax, dword [esi + 8]
mov dword [esp + 8], ecx
mov dword [esp + 0x4c], edi
movzx ecx, byte [eax + ecx]
mov dword [esp + 0xc], eax
mov eax, ecx
mov dword [esp], ecx
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 1
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov ch, cl
and al, 0x78
and ch, 7
shr al, 3
mov cl, ch
neg al
movsx eax, al
mov edx, eax
mov edi, dword [esp + eax + 0x74]
mov ebx, dword [esp + eax + 0x78]
mov eax, dword [esp + eax + 0x70]
mov edx, dword [esp + edx + 0x6c]
mov esi, eax
shld ebx, edi, cl
shl edi, cl
not cl
shr esi, 1
shr esi, cl
mov cl, ch
or esi, edi
mov edi, dword [esp]
shld eax, edx, cl
shl edx, cl
mov ecx, dword [esp + 4]
shr edi, 3
add ecx, 0x258
and edi, 0x10
and esi, dword [ecx + edi + 8]
and edx, dword [ecx + edi]
and ebx, dword [ecx + edi + 0xc]
and eax, dword [ecx + edi + 4]
or edx, esi
or eax, ebx
or eax, edx
je 0x47cd32
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x47ccf0
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x47d496
mov dword [0x5da100], eax
push 0xc
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x47d496
mov ebx, eax
mov byte [eax], 0
mov eax, dword [esp]
mov ecx, dword [esp + 8]
mov byte [ebx + 1], al
mov dword [ebx + 4], ecx
jmp 0x47cdc5
test eax, eax
je 0x47cd2e
mov edi, dword [esi + 8]
mov ebx, dword [esi + 0xc]
lea ecx, [eax - 1]
cmp ebx, ecx
mov al, 2
ja 0x47cd4b
jmp 0x47cd58
mov al, 2
jmp 0x47cd58
mov edx, dword [esp + 4]
mov esi, dword [ebp + 0xc]
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x4c]
cmp ebx, ecx
mov al, 2
jbe 0x47cd58
test edi, edi
je 0x47cd58
movzx eax, byte [edi + ecx]
movzx eax, byte [edx + eax + 0x58]
movzx ebx, al
mov eax, esi
mov esi, dword [esi]
mov edi, dword [ebp + 8]
mov ecx, ebx
test esi, esi
je 0x47cdff
cmp esi, 2
jne 0x47cdfc
mov esi, dword [eax + 4]
test byte [edx + 0x4d], 1
jne 0x47d112
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x47cda4
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x47d496
mov dword [0x5da100], eax
push 0xc
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x47d496
mov ebx, eax
mov byte [eax], 3
mov dword [eax + 4], 2
mov dword [eax + 8], esi
mov dword [esp + 0x24], ebx
movzx eax, byte [ebx]
test eax, eax
je 0x47cdd9
cmp eax, 1
jne 0x47d4a7
mov esi, dword [ebx + 4]
push ebx
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov eax, dword [esp + 0x14]
mov dword [eax + 4], esi
mov dword [eax], 2
jmp 0x47d2eb
lea ecx, [ebx + 6]
mov edx, dword [edi + 0x88]
cmp ecx, edx
jae 0x47d139
mov edx, dword [edi + 0x80]
mov dword [esp], ebx
mov ebx, dword [edx + ecx*4]
mov esi, eax
test ebx, ebx
js 0x47d1da
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x14]
mov eax, dword [esp + 0x58]
mov dword [esp], ecx
mov ecx, dword [esi + 0xc]
cmp eax, edx
mov dword [esp + 8], edx
mov dword [esp + 0x1c], ecx
jae 0x47cfdb
movzx edx, byte [esi + 0x18]
cmp ecx, eax
mov dword [esp + 0xc], 0
mov byte [esp + 0x1b], dl
mov edx, eax
cmova edx, ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0x4c], edx
mov edx, dword [ecx + 0x278]
mov ecx, dword [ecx + 0x27c]
and ecx, 0x1f
mov dword [esp + 0x54], edx
mov dword [esp + 0x50], ecx
jmp 0x47ce8f
mov eax, edi
mov edx, dword [esp + 8]
inc eax
cmp edx, eax
je 0x47cfef
cmp dword [esp + 0x4c], eax
je 0x47d428
mov ecx, dword [esp]
mov edi, eax
mov esi, dword [ebp + 8]
movzx eax, byte [ecx + eax]
mov ecx, dword [esp + 4]
movzx edx, byte [ecx + eax + 0x158]
mov ecx, ebx
and ecx, 0x7ffffff
add ecx, edx
mov edx, dword [esi + 0x7c]
cmp ecx, edx
jae 0x47d419
mov edx, dword [esi + 0x74]
mov edx, dword [edx + ecx*4]
test edx, edx
js 0x47cf92
mov ebx, edx
cmp edx, 0x7ffffff
jbe 0x47ce80
test ebx, 0x8000000
jne 0x47cf00
test ebx, 0x40000000
jne 0x47d23e
test ebx, 0x20000000
je 0x47ce80
jmp 0x47d273
mov eax, dword [esp + 0x54]
mov dword [esp + 0x20], 0
cmp dword [eax + 0x148], 1
je 0x47cf6a
mov eax, ebx
mov ecx, dword [esp + 0x50]
and eax, 0x7ffffff
shr eax, cl
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x94]
cmp eax, edx
jae 0x47d452
mov ecx, dword [ecx + 0x8c]
mov edx, dword [ecx + eax*8 + 4]
test edx, edx
je 0x47d43f
mov eax, dword [ecx + eax*8]
test byte [eax + 8], 2
je 0x47cf6a
cmp edx, 8
jbe 0x47d4ef
add edx, 0xfffffff7
cmp edx, 3
jbe 0x47d503
mov eax, dword [eax + 0x11]
mov dword [esp + 0x20], eax
cmp byte [esp + 0x1b], 0
mov dword [esp + 0xc], 1
jne 0x47d25d
mov eax, edi
mov dword [esp + 0x10], edi
mov edx, dword [esp + 8]
inc eax
cmp edx, eax
jne 0x47ce8f
jmp 0x47cfef
mov ecx, dword [esp + 4]
shl eax, 8
mov edx, ebx
mov dword [esp + 0x30], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x30]
push eax
call sym.regex_automata::hybrid::dfa::Lazy::cache_next_state::h2b808b7076590e03
add esp, 4
test eax, eax
je 0x47ced4
mov ecx, edi
call sym.regex_automata::util::search::MatchError::gave_up::h4849e82716864e30
mov ecx, eax
call sym.__ZN131__LT_regex_automata..meta..error..RetryFailError_u20_as_u20_core..convert..From_LT_regex_automata..util..search..MatchE
mov ecx, dword [esp + 0x14]
mov dword [ecx + 4], eax
mov dword [ecx], 2
jmp 0x47d2eb
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x1c]
mov esi, eax
cmp edx, ecx
jb 0x47cffb
jmp 0x47d065
mov eax, edx
mov ecx, dword [esp + 0x1c]
mov esi, eax
cmp edx, ecx
jae 0x47d065
cmp dword [esp], 0
je 0x47d065
mov eax, dword [esp]
mov ecx, dword [esp + 4]
mov edi, dword [ebp + 8]
movzx eax, byte [eax + edx]
mov byte [esp], al
movzx eax, al
movzx edx, byte [ecx + eax + 0x158]
mov ecx, ebx
and ecx, 0x7ffffff
add ecx, edx
mov edx, dword [edi + 0x7c]
cmp ecx, edx
jae 0x47d419
mov edx, dword [edi + 0x74]
mov edi, dword [esp + 0x20]
mov edx, dword [edx + ecx*4]
test edx, edx
js 0x47d360
test edx, 0x8000000
jne 0x47d148
test edx, 0x20000000
jne 0x47d211
mov ebx, dword [esp + 0xc]
jmp 0x47d2d1
mov eax, dword [esp + 4]
mov edi, dword [ebp + 8]
mov ecx, ebx
and ecx, 0x7ffffff
movzx eax, byte [eax + 0x257]
mov edx, dword [edi + 0x7c]
lea ecx, [eax + ecx + 1]
cmp ecx, edx
jae 0x47d474
mov edx, dword [edi + 0x74]
mov edi, dword [esp + 0x20]
mov edx, dword [edx + ecx*4]
test edx, edx
js 0x47d38f
mov ebx, dword [esp + 0xc]
test edx, 0x8000000
je 0x47d2d1
mov ecx, dword [esp + 4]
xor edi, edi
mov ebx, 1
mov eax, dword [ecx + 0x278]
cmp dword [eax + 0x148], 1
je 0x47d105
movzx ecx, byte [ecx + 0x27c]
and edx, 0x7ffffff
shr edx, cl
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x94]
cmp edx, eax
jae 0x47d483
mov ecx, dword [ecx + 0x8c]
mov eax, dword [ecx + edx*8 + 4]
test eax, eax
je 0x47d43f
mov ecx, dword [ecx + edx*8]
test byte [ecx + 8], 2
jne 0x47d294
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
jmp 0x47d2d1
mov ecx, dword [edx + 0x278]
cmp esi, dword [ecx + 0x148]
jae 0x47d1ae
lea ecx, [esi + esi*2]
lea ecx, [ebx + ecx*2 + 0xc]
mov edx, dword [edi + 0x88]
cmp ecx, edx
jb 0x47ce0d
push 0x56d1d8
call dbg.panic_bounds_check
add esp, 4
ud2
mov ecx, dword [esp + 4]
xor edi, edi
mov ebx, 1
mov eax, dword [ecx + 0x278]
cmp dword [eax + 0x148], 1
je 0x47d1a1
movzx ecx, byte [ecx + 0x27c]
and edx, 0x7ffffff
shr edx, cl
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x94]
cmp edx, eax
jae 0x47d483
mov ecx, dword [ecx + 0x8c]
mov eax, dword [ecx + edx*8 + 4]
test eax, eax
je 0x47d43f
mov ecx, dword [ecx + edx*8]
test byte [ecx + 8], 2
jne 0x47d2b5
mov eax, dword [esp + 8]
mov dword [esp + 0x10], eax
jmp 0x47d2d1
mov ecx, dword [edx + 0x27c]
mov dword [esp], ebx
mov ebx, 1
and ecx, 0x1f
shl ebx, cl
cmp ecx, 0x1b
jae 0x47d517
or ebx, 0x40000000
mov esi, eax
test ebx, ebx
jns 0x47ce23
mov ecx, dword [esp + 4]
lea edx, [esp + 0x30]
mov dword [esp + 0x30], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x28]
push dword [esp]
push esi
call sym.regex_automata::hybrid::dfa::Lazy::cache_start_group::hdade1a50178f7e29
add esp, 8
mov ebx, dword [esp + 0x2c]
cmp dword [esp + 0x28], 0
jne 0x47cdc5
jmp 0x47ce23
cmp dword [esp + 0xc], 1
mov ebx, 1
je 0x47d2d1
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
je 0x47d3c7
mov esi, dword [esp + 8]
jmp 0x47d3dd
xor eax, eax
cmp dword [esp + 0xc], 0
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
sete al
cmove edx, edi
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x47d2e4
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov dword [eax], 0
mov dword [eax + 4], ecx
mov dword [eax + 8], edi
jmp 0x47d2eb
cmp dword [esp + 0xc], 1
jne 0x47d2f3
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
mov dword [eax], 0
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
jmp 0x47d2eb
cmp eax, 8
jbe 0x47d546
mov edx, dword [esp + 0x1c]
add eax, 0xfffffff7
cmp eax, 3
ja 0x47d2ca
mov ecx, 4
mov edx, eax
jmp 0x47d508
cmp eax, 8
jbe 0x47d546
mov edx, dword [esp + 8]
add eax, 0xfffffff7
cmp eax, 3
jbe 0x47d2a9
mov edi, dword [ecx + 0x11]
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x14]
xor eax, eax
test ebx, ebx
sete al
cmove edi, esi
mov dword [ecx], eax
mov dword [ecx + 4], edi
mov eax, dword [esp + 0x10]
mov dword [ecx + 8], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp]
mov eax, edi
movzx ebx, byte [ecx + edi]
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x47d31e
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x47d496
mov dword [0x5da100], eax
push 0xc
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x47d496
mov byte [eax], 0
mov byte [eax + 1], bl
mov dword [eax + 4], edi
mov dword [esp + 0x24], eax
cmp byte [eax], 2
jae 0x47d4a7
push eax
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov eax, dword [esp + 0x14]
mov dword [eax + 4], edi
jmp 0x47cdf1
mov ecx, dword [esp + 4]
shl eax, 8
mov edx, ebx
mov dword [esp + 0x30], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x30]
push eax
call sym.regex_automata::hybrid::dfa::Lazy::cache_next_state::h2b808b7076590e03
add esp, 4
test eax, eax
je 0x47d044
mov ecx, dword [esp + 8]
jmp 0x47d3c0
mov ecx, dword [esp + 4]
inc eax
mov edx, ebx
shl eax, 0x10
or eax, 1
mov dword [esp + 0x30], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x30]
push eax
call sym.regex_automata::hybrid::dfa::Lazy::cache_next_state::h2b808b7076590e03
add esp, 4
test eax, eax
je 0x47d09c
mov ecx, dword [esp + 0x1c]
call sym.regex_automata::util::search::MatchError::gave_up::h4849e82716864e30
jmp 0x47d3fc
call sub.kernel32.dll_GetProcessHeap
mov esi, dword [esp + 8]
test eax, eax
je 0x47d496
mov dword [0x5da100], eax
push 0xc
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x47d496
movzx ecx, byte [esp]
mov byte [eax], 0
mov byte [eax + 1], cl
mov dword [eax + 4], esi
mov dword [esp + 0x24], eax
movzx ecx, byte [eax]
test ecx, ecx
je 0x47d410
cmp ecx, 1
jne 0x47d4a7
mov esi, dword [eax + 4]
push eax
jmp 0x47cddd
push 0x56d0a0
call dbg.panic_bounds_check
add esp, 4
ud2
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x1c]
push 0x56a718
call dbg.panic_bounds_check
add esp, 4
ud2
xor ecx, ecx
xor edx, edx
push 0x56d928
call dbg.panic_bounds_check
add esp, 4
ud2
mov ecx, eax
push 0x56c8e4
call dbg.panic_bounds_check
add esp, 4
ud2
mov edx, edi
push 0x56a69c
call dbg.panic_bounds_check
add esp, 4
ud2
push 0x56d0b0
call dbg.panic_bounds_check
add esp, 4
ud2
mov ecx, edx
mov edx, eax
push 0x56c8e4
call dbg.panic_bounds_check
add esp, 4
ud2
mov ecx, 4
mov edx, 0xc
call dbg.handle_alloc_error
ud2
lea ecx, [esp + 0x28]
lea eax, [esp + 0x24]
mov dword [esp + 0x30], 0x56d130
mov dword [esp + 0x34], 1
mov dword [esp + 0x40], 0
mov edx, 0x56d1a4
mov dword [esp + 0x38], ecx
lea ecx, [esp + 0x30]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], sym.__LT_regex_automata..util..search..MatchError_u20_as_u20_core..fmt..Display_GT_::fmt::h1c4a8488f977bb55
mov dword [esp + 0x3c], 1
call dbg.panic_fmt
ud2
mov ecx, 9
push 0x56d958
call dbg.slice_start_index_len_fail
add esp, 4
ud2
mov ecx, 4
push 0x56c2b8
call dbg.slice_end_index_len_fail
add esp, 4
ud2
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], 0
lea eax, [esp + 0x30]
mov ecx, str.called__Result::unwrap____on_an__Err__value
mov edx, 0x2b
push 0x56c8f4
push 0x56c68c
push eax
call dbg.unwrap_failed
add esp, 0xc
ud2
mov ecx, 9
mov edx, eax
push 0x56d958
call dbg.slice_start_index_len_fail
add esp, 4
ud2