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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x98
mov edx, ecx
mov ecx, dword [ecx + 4]
mov eax, dword [edx + 0xc]
cmp ecx, 1
je 0x4905f7
test ecx, ecx
jne 0x4905fb
test eax, eax
jne 0x4905fb
mov dword [esp + 4], str.Invalid
xor ecx, ecx
jmp 0x490619
test eax, eax
je 0x49060e
lea esi, [esp + 0x44]
mov ecx, esi
call fcn.004017d0
mov edx, dword [esi + 4]
mov eax, dword [esi + 8]
jmp 0x490642
mov eax, dword [edx]
mov ecx, dword [eax]
mov dword [esp + 4], ecx
mov ecx, dword [eax + 4]
mov ebx, ecx
call fcn.0045f0f1
mov esi, eax
mov edi, edx
push ebx
push dword [esp + 8]
push edx
call fcn.0047eb10
mov edx, edi
mov eax, ebx
add esp, 0xc
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], ebx
lea esi, [esp + 0x50]
mov ecx, esi
mov dword [esp + 8], edx
push 9
push 0x4ad516
mov dword [esp + 8], eax
push eax
call fcn.00409950
add esp, 0xc
cmp dword [esi], 0
je 0x490807
mov ebx, dword [esp + 0x70]
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x8c]
mov esi, ebx
mov dword [esp + 0x10], ecx
sub esi, ecx
mov dword [esp + 4], eax
cmp esi, eax
jae 0x49080e
mov edi, dword [esp + 0x74]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x10]
cmp edx, eax
mov dword [esp + 0x20], edx
cmova eax, edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], ecx
lea eax, [ecx - 1]
mov dword [esp + 0x38], eax
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x24]
mov cl, byte [eax + esi]
xor eax, eax
xor edx, edx
inc edx
shld eax, edx, cl
shl edx, cl
test cl, 0x20
cmovne eax, edx
mov ecx, 0
cmovne edx, ecx
and eax, dword [esp + 0x3c]
and edx, dword [esp + 0x40]
or edx, eax
je 0x490783
mov dword [esp + 0x30], ebx
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
cmp eax, ebx
cmovb ebx, eax
cmp edi, 0xffffffff
cmove ebx, eax
lea eax, [ebx - 1]
mov dword [esp + 0x28], eax
lea edi, [esi - 1]
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x38]
lea edx, [eax + esi]
mov ecx, ebx
sub ecx, 1
jb 0x490789
mov eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x10]
jae 0x490ba4
lea esi, [edi + ebx]
cmp esi, dword [esp + 4]
jae 0x490bb2
mov eax, dword [esp + 0x14]
mov al, byte [eax + ebx - 1]
cmp al, byte [edx + ebx]
mov ebx, ecx
je 0x490742
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x20]
add ecx, eax
mov eax, dword [esp + 0x10]
mov esi, ecx
jmp 0x4907e8
mov eax, dword [esp + 0x10]
jmp 0x4907ec
cmp dword [esp + 0x2c], 0xffffffff
mov edi, dword [esp + 0x18]
cmove edi, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
cmp edi, edx
cmovbe edi, edx
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x24]
add eax, ecx
cmp edi, edx
je 0x490905
cmp dword [esp + 0x1c], edx
je 0x490bc2
lea esi, [ecx + edx]
cmp esi, dword [esp + 4]
jae 0x490bd4
mov ecx, dword [esp + 0x14]
mov bl, byte [ecx + edx]
lea esi, [edx + 1]
cmp bl, byte [eax + edx]
mov ecx, dword [esp + 0xc]
mov edx, esi
je 0x4907aa
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
sub esi, eax
mov edi, dword [esp + 0x2c]
cmp edi, 0xffffffff
je 0x4907f5
mov dword [esp + 0x18], eax
mov ebx, esi
sub esi, dword [esp + 0x10]
cmp esi, dword [esp + 4]
jb 0x4906e9
jmp 0x49080e
cmp byte [esp + 0x5e], 0
je 0x490819
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x4909d8
mov dl, byte [esp + 0x5d]
mov eax, dword [esp + 0x58]
test dl, dl
sete cl
test eax, eax
je 0x4908f8
mov esi, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov dword [esp + 4], edx
cmp eax, dword [esp + 4]
jae 0x490851
cmp byte [esi + eax], 0xbf
jg 0x490857
jmp 0x490c81
jne 0x490c81
mov dl, byte [esi + eax - 1]
test dl, dl
js 0x490864
movzx edi, dl
jmp 0x4908b5
movzx ebx, byte [esi + eax - 2]
cmp bl, 0xc0
jge 0x490892
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], ecx
movzx ecx, byte [esi + eax - 3]
cmp cl, 0xc0
jge 0x490897
movzx edi, byte [esi + eax - 4]
and edi, 7
shl edi, 6
and ecx, 0x3f
or ecx, edi
jmp 0x49089a
and ebx, 0x1f
jmp 0x4908aa
and ecx, 0xf
shl ecx, 6
mov ebx, dword [esp + 0x14]
and ebx, 0x3f
or ebx, ecx
mov ecx, dword [esp + 0xc]
shl ebx, 6
and dl, 0x3f
movzx edi, dl
or edi, ebx
test cl, 1
je 0x490903
cmp edi, 0x110000
je 0x49080e
xor ebx, ebx
dec ebx
cmp edi, 0x80
jb 0x4908ec
mov ebx, 0xfffffffe
cmp edi, 0x800
jb 0x4908ec
xor ebx, ebx
cmp edi, 0x10000
setb bl
or ebx, 0xfffffffc
xor ecx, ecx
add eax, ebx
jne 0x490840
jmp 0x490905
xor ecx, ecx
test dl, dl
jne 0x490905
jmp 0x49080e
mov ecx, eax
lea esi, [ecx + 9]
mov eax, dword [esp]
lea edx, [eax - 0x11]
mov dword [esp + 0x10], edx
mov edx, eax
sub edx, ecx
add edx, 0xfffffff7
mov eax, dword [esp + 8]
mov dword [esp + 0xc], ecx
add ecx, eax
add ecx, 9
xor edi, edi
mov dword [esp + 0x14], edx
mov eax, esi
mov dword [esp + 4], esi
mov ebx, dword [esp]
add esi, edi
je 0x49095a
cmp dword [esp], esi
jbe 0x49094b
cmp byte [ecx + edi], 0xbf
mov ebx, edx
jg 0x49095a
jmp 0x490c5f
cmp dword [esp + 0x14], edi
jne 0x490c5f
mov ebx, dword [esp]
sub ebx, eax
test ebx, ebx
je 0x490972
mov bl, byte [ecx + edi]
add bl, 0xd0
cmp bl, 0xa
jae 0x490972
inc eax
inc edi
dec edx
mov esi, dword [esp + 4]
jmp 0x490932
mov eax, dword [esp + 4]
lea edx, [eax + edi]
mov ecx, dword [esp + 8]
lea eax, [edx + ecx]
mov dword [esp + 0x1c], eax
mov eax, dword [esp]
test esi, esi
je 0x4909ae
mov eax, dword [esp]
sub eax, edx
jbe 0x4909ac
mov ebx, dword [esp + 0x1c]
cmp byte [ebx], 0xbf
jg 0x4909ae
mov eax, edx
mov edx, dword [esp]
push 0x4ad5d8
push edx
push eax
call fcn.0048d8e0
jne 0x49099b
mov dword [esp + 0x18], edx
mov dl, 1
mov dword [esp + 0x14], edx
cmp eax, 8
jb 0x4909d8
mov eax, 0x6c6f6320
mov ebx, dword [esp + 0x1c]
xor eax, dword [ebx]
mov edx, 0x206e6d75
xor edx, dword [ebx + 4]
or edx, eax
je 0x490a6c
mov eax, dword [esp]
cmp dword [esp + 0x44], eax
mov ecx, eax
jbe 0x490a0e
mov eax, dword [0x4c0b18]
test ecx, ecx
je 0x490a12
mov esi, ecx
push ecx
push dword [esp + 0xc]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_HeapReAlloc]
mov dword [esp + 8], eax
test eax, eax
jne 0x490a28
xor ecx, ecx
inc ecx
mov edx, esi
call fcn.0048d220
mov esi, ecx
jmp 0x490a28
mov esi, ecx
push dword [esp + 8]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
xor eax, eax
inc eax
mov dword [esp + 8], eax
mov al, byte [0x4c0b90]
xor ebx, ebx
xor ecx, ecx
mov edx, 0x14
call fcn.0046de40
test eax, eax
je 0x490c72
cmp byte [esp + 0x14], 0
mov edx, dword [esp + 4]
cmovne edx, ebx
cmovne edi, ebx
mov dword [eax], ebx
mov ecx, dword [esp + 8]
mov dword [eax + 4], ecx
mov dword [eax + 8], esi
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
sub dword [esp + 0x10], edi
lea edx, [edi + ecx]
add edx, 0x11
add edi, 0x11
mov eax, dword [esp + 0x18]
lea ecx, [eax + 8]
mov ebx, dword [esp + 0xc]
mov eax, ebx
neg eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], ecx
mov eax, dword [esp]
add ebx, edi
je 0x490ace
mov eax, dword [esp]
cmp eax, ebx
jbe 0x490abc
mov eax, dword [esp + 0xc]
cmp byte [edx + eax], 0xbf
jle 0x490c94
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x24]
add eax, ecx
jmp 0x490ace
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x10]
jne 0x490c94
sub eax, dword [esp + 0x28]
test eax, eax
je 0x490af2
mov eax, dword [esp + 0xc]
mov al, byte [edx + eax]
add al, 0xd0
cmp al, 0xa
jae 0x490af2
inc dword [esp + 0x28]
inc edi
dec dword [esp + 0x10]
inc edx
mov eax, dword [esp]
mov ebx, dword [esp + 0xc]
jmp 0x490a97
add edi, dword [esp + 0xc]
mov eax, dword [esp]
cmp edi, eax
mov edx, dword [esp + 0x18]
jae 0x490b06
jmp 0x4909db
mov eax, edx
sub eax, dword [esp + 4]
mov ecx, dword [esp + 8]
jb 0x490b46
cmp dword [esp + 4], 0
je 0x490b34
mov edx, dword [esp + 4]
cmp dword [esp], edx
jbe 0x490b2e
cmp byte [ecx + edx], 0xc0
mov edx, dword [esp + 0x18]
jge 0x490b34
jmp 0x490b46
mov edx, dword [esp + 0x18]
jne 0x490b46
test esi, esi
je 0x490b5c
cmp dword [esp], edx
jbe 0x490b5a
mov esi, dword [esp + 0x1c]
cmp byte [esi], 0xbf
jg 0x490b5c
mov eax, edx
mov edx, dword [esp]
push 0x4ad5f8
push eax
push dword [esp + 0xc]
call fcn.0048d8e0
jne 0x490b46
mov edx, dword [esp + 4]
add edx, ecx
lea esi, [esp + 0x50]
mov ecx, esi
push eax
call fcn.0040c4e0
add esp, 4
cmp byte [esi], 0
jne 0x4909d8
mov eax, edi
mov esi, dword [esp + 0x20]
sub eax, esi
mov ecx, dword [esp + 8]
jb 0x490ca7
mov edx, dword [esp + 0x54]
test esi, esi
je 0x490bf1
cmp dword [esp], esi
jbe 0x490beb
cmp byte [ecx + esi], 0xc0
jge 0x490bf1
jmp 0x490ca7
mov edx, dword [esp + 0x10]
push 0x4ad254
call fcn.0048d350
mov ecx, esi
mov edx, dword [esp + 4]
push 0x4ad264
call fcn.0048d350
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
push 0x4ad234
call fcn.0048d350
add ecx, dword [esp + 0x20]
mov edx, dword [esp + 4]
cmp edx, ecx
cmova ecx, edx
push 0x4ad244
call fcn.0048d350
jne 0x490ca7
test ebx, ebx
je 0x490bfe
cmp dword [esp], edi
jne 0x490ca7
mov dword [esp + 4], edx
add esi, ecx
lea edi, [esp + 0x50]
mov ecx, edi
mov edx, esi
push eax
call fcn.0040c4e0
add esp, 4
cmp byte [edi], 0
jne 0x4909d8
mov edi, dword [esp + 0x54]
mov eax, dword [esp]
mov ecx, dword [esp + 0xc]
cmp eax, ecx
jae 0x490c3a
mov dword [esp + 0x14], 0
jmp 0x4909db
test ecx, ecx
je 0x490c4c
cmp eax, ecx
jbe 0x490c4c
mov eax, dword [esp + 8]
cmp byte [eax + ecx], 0xbf
jle 0x490cb2
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x14], 0
mov eax, ecx
jmp 0x4909db
mov ecx, dword [esp + 8]
mov edx, dword [esp]
push 0x4ad5c8
push edx
push esi
call fcn.0048d8e0
mov ecx, 4
mov edx, 0x14
call fcn.0048d220
mov ecx, esi
mov edx, dword [esp + 4]
push 0x4ad284
push eax
push 0
call fcn.0048d8e0
mov ecx, dword [esp + 8]
mov edx, dword [esp]
push 0x4ad5e8
push edx
push ebx
call fcn.0048d8e0
mov edx, dword [esp]
push 0x4ad608
push edi
jmp 0x490c6c
mov ecx, str.assertion_failed:_self.is_char_boundary_new_len__rustc_25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04library_alloc_src_string.rs
mov edx, 0x30
push 0x4aeda0
call fcn.0048d410