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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x88
mov edx, dword [ecx + 4]
mov eax, dword [ecx + 8]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x40]
mov esi, edx
mov dword [esp + 0x14], edx
push 9
push 0x57c838
mov dword [esp + 0x24], eax
push eax
call fcn.00470500
add esp, 0xc
cmp dword [esp + 0x40], 0
je 0x4877d3
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x74]
mov ebx, edx
mov dword [esp], eax
sub ebx, ecx
cmp ebx, eax
jae 0x4877da
mov eax, dword [esp + 0x78]
mov edi, ecx
mov esi, dword [esp + 0x70]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 8], esi
cmp eax, ecx
mov dword [esp + 0x24], eax
cmova edi, eax
cmp dword [esp + 0x64], 0xffffffff
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x48]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0x38], edi
je 0x487880
mov eax, dword [esp + 0x68]
mov edi, ecx
sub esi, ecx
neg edi
mov dword [esp + 0x20], esi
mov dword [esp + 0x34], edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 8]
mov esi, 1
movzx ecx, byte [eax + ebx]
xor eax, eax
shld eax, esi, cl
shl esi, cl
test cl, 0x20
mov ecx, 0
cmovne eax, esi
cmovne esi, ecx
and eax, dword [esp + 0x30]
and esi, dword [esp + 0x28]
or esi, eax
jne 0x48771a
nop dword [eax + eax]
lea eax, [edi + ebx]
cmp eax, dword [esp]
mov eax, dword [esp + 0x18]
jae 0x4877da
mov edx, ebx
sub ebx, eax
mov eax, dword [esp + 0x20]
mov esi, 1
movzx ecx, byte [eax + edx]
xor eax, eax
shld eax, esi, cl
shl esi, cl
test cl, 0x20
mov ecx, 0
cmovne eax, esi
cmovne esi, ecx
and eax, dword [esp + 0x30]
and esi, dword [esp + 0x28]
or esi, eax
je 0x4876d0
mov eax, dword [esp + 0x18]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
mov edi, ebx
cmp eax, ecx
cmovb ecx, eax
mov eax, dword [esp + 8]
dec ecx
add eax, ebx
cmp ecx, 0xffffffff
je 0x48776f
cmp ecx, dword [esp + 0x18]
mov esi, ecx
jae 0x487d82
lea ecx, [ebx + esi]
cmp ecx, dword [esp]
jae 0x487d75
mov ecx, dword [esp + 0x10]
movzx ebx, byte [ecx + esi]
lea ecx, [esi - 1]
cmp bl, byte [eax + esi]
mov ebx, edi
je 0x487730
sub edx, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
add edx, esi
mov dword [esp + 0xc], eax
jmp 0x4877c0
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0xc]
cmp esi, ecx
cmovbe esi, ecx
mov dword [esp + 0xc], esi
cmp dword [esp + 0xc], ecx
je 0x4879a6
cmp dword [esp + 0x2c], ecx
je 0x487d92
lea esi, [edi + ecx]
mov ebx, edi
cmp esi, dword [esp]
jae 0x487da4
mov esi, dword [esp + 0x10]
movzx ebx, byte [esi + ecx]
cmp bl, byte [eax + ecx]
lea ecx, [ecx + 1]
je 0x487780
mov eax, dword [esp + 0x38]
sub edx, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x18]
mov ebx, edx
mov edi, dword [esp + 0x34]
sub ebx, eax
cmp ebx, dword [esp]
jb 0x48769d
jmp 0x4877da
cmp byte [esp + 0x4e], 0
je 0x487840
mov al, 1
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
cmp dword [ecx], ebx
jbe 0x487e4c
mov eax, dword [0x5920d8]
mov ecx, dword [esp + 0x14]
test ebx, ebx
je 0x487819
push ebx
push ecx
push 0
push eax
call sub.KERNEL32.dll_HeapReAlloc
mov esi, eax
test eax, eax
jne 0x487827
mov ecx, 1
mov edx, ebx
call fcn.00429f60
push ecx
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov esi, 1
movzx eax, byte [0x592110]
mov eax, dword [0x5920d8]
test eax, eax
jne 0x487e72
jmp 0x487e60
mov eax, dword [esp + 0x48]
movzx ecx, byte [esp + 0x4d]
test eax, eax
je 0x4879aa
mov edx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
cmp eax, edx
mov dword [esp], edx
jae 0x4879b5
cmp byte [edi + eax], 0xc0
jge 0x4879bb
mov edx, dword [esp]
mov ecx, edi
push 0x57c660
push eax
push 0
call fcn.0046fc30
mov edi, edx
mov edx, esi
lea esi, [eax - 1]
mov eax, ecx
neg eax
mov dword [esp + 0x34], eax
mov eax, edx
mov edx, edi
sub eax, ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 8]
movzx ecx, byte [eax + ebx]
nop word cs:[eax + eax]
nop dword [eax + eax]
xor eax, eax
mov edi, 1
shld eax, edi, cl
shl edi, cl
test cl, 0x20
mov ecx, 0
cmovne eax, edi
cmovne edi, ecx
and eax, dword [esp + 0x30]
and edi, dword [esp + 0x28]
or edi, eax
jne 0x487900
mov eax, dword [esp + 0x34]
add eax, ebx
cmp eax, dword [esp]
mov eax, dword [esp + 0x18]
jae 0x4877da
mov edi, dword [esp + 0x3c]
mov edx, ebx
sub ebx, eax
movzx ecx, byte [edi + edx]
jmp 0x4878b0
cmp esi, dword [esp + 0x18]
jae 0x487942
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], ebx
nop
sub eax, 1
jb 0x48794d
lea ecx, [eax + ebx]
cmp ecx, dword [esp]
jae 0x487d75
mov edi, dword [esp + 0x10]
movzx ebx, byte [edi + eax]
mov edi, edx
mov edx, dword [esp + 8]
cmp bl, byte [edx + ecx]
mov ebx, dword [esp + 0xc]
mov edx, edi
je 0x487910
sub edx, dword [esp + 0x24]
add edx, eax
jmp 0x487992
cmp dword [esp + 0x24], 0
jne 0x487d82
mov eax, dword [esp + 8]
add eax, ebx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x24]
mov ecx, eax
nop dword [eax]
cmp dword [esp + 0x2c], ecx
je 0x487a26
lea edi, [ebx + ecx]
cmp edi, dword [esp]
jae 0x487da8
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
movzx eax, byte [eax + ecx]
cmp al, byte [edi + ecx]
mov eax, dword [esp + 0x24]
lea ecx, [ecx + 1]
je 0x487960
sub edx, dword [esp + 0x38]
mov ebx, edx
sub ebx, dword [esp + 0x18]
cmp ebx, dword [esp]
jb 0x487899
jmp 0x4877da
mov ebx, edi
jmp 0x487a26
xor ebx, ebx
test cl, cl
jne 0x487a26
jmp 0x4877da
jne 0x48786e
movzx ebx, byte [edi + eax - 1]
test bl, bl
jns 0x487a1c
movzx edx, byte [edi + eax - 2]
cmp dl, 0xbf
jg 0x4879fe
movzx esi, byte [edi + eax - 3]
mov dword [esp + 0x10], esi
cmp byte [esp + 0x10], 0xbf
jg 0x487a03
movzx esi, byte [edi + eax - 4]
and esi, 7
shl esi, 6
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x10]
and esi, 0x3f
add esi, dword [esp + 0x18]
mov dword [esp + 0x10], esi
jmp 0x487a08
and edx, 0x1f
jmp 0x487a14
and dword [esp + 0x10], 0xf
mov esi, dword [esp + 0x10]
and edx, 0x3f
shl esi, 6
or edx, esi
shl edx, 6
and ebx, 0x3f
or ebx, edx
test cl, cl
je 0x487bb5
mov ebx, eax
lea edi, [ebx + 9]
mov ecx, ebx
mov ebx, dword [esp + 0x1c]
xor esi, esi
mov dword [esp + 0xc], ecx
mov dword [esp], edi
lea eax, [ebx - 0x11]
mov edx, ebx
mov dword [esp + 0x18], eax
mov eax, edi
sub edx, ecx
sub eax, ebx
add edx, 0xfffffff7
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
lea ecx, [eax + ecx + 9]
mov eax, dword [esp]
add eax, esi
je 0x487a8e
nop dword [eax]
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
jae 0x487a80
cmp byte [ecx + esi], 0xbf
jle 0x487f20
sub ebx, edi
jmp 0x487a8e
mov ebx, dword [esp + 0x10]
add ebx, esi
mov ebx, edx
jne 0x487f20
test ebx, ebx
je 0x487aae
movzx ebx, byte [ecx + esi]
add bl, 0xd0
cmp bl, 0xa
jae 0x487aae
mov ebx, dword [esp + 0x1c]
inc edi
inc esi
dec edx
mov eax, dword [esp]
add eax, esi
jne 0x487a60
jmp 0x487a8e
mov ecx, dword [esp]
mov ebx, dword [esp + 0x1c]
test eax, eax
lea edi, [ecx + esi]
mov ecx, dword [esp + 0x14]
lea edx, [edi + ecx]
mov ecx, ebx
je 0x487ae4
mov ecx, ebx
sub ecx, edi
jbe 0x487ae2
cmp byte [edx], 0xbf
jg 0x487ae4
mov ecx, dword [esp + 0x14]
mov edx, ebx
push 0x57c954
push ebx
push edi
call fcn.0046fc30
jne 0x487ad0
mov dword [esp + 0x2c], edx
mov dl, 1
cmp ecx, 8
mov dword [esp + 0x10], edx
jb 0x4877e4
mov dword [esp + 8], edi
mov edi, dword [esp + 0x2c]
mov ecx, 0x6c6f6320
mov edx, 0x206e6d75
xor ecx, dword [edi]
xor edx, dword [edi + 4]
or edx, ecx
jne 0x4877e4
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0xc]
sub dword [esp + 0x18], esi
lea edx, [esi + ecx + 0x11]
mov ecx, dword [esp + 8]
neg edi
add esi, 0x11
mov dword [esp + 0x24], edi
add ecx, 8
mov dword [esp + 0x20], ecx
nop word [eax + eax]
mov edi, dword [esp + 0xc]
add edi, esi
mov dword [esp + 0x28], edi
mov edi, ebx
je 0x487b94
cmp dword [esp + 0x28], ebx
jae 0x487b70
mov edi, dword [esp + 0xc]
cmp byte [edx + edi], 0xbf
jle 0x487f43
mov edi, ebx
sub edi, ecx
jmp 0x487b94
mov edi, dword [esp + 0x18]
mov dword [esp + 0x30], edx
cmp dword [esp + 0xc], edi
jne 0x487f43
mov edx, ecx
mov ecx, ebx
mov ebx, dword [esp + 0x24]
add edi, ebx
mov ebx, ecx
mov ecx, edx
mov edx, dword [esp + 0x30]
test edi, edi
je 0x487c10
mov edi, dword [esp + 0xc]
movzx ebx, byte [edx + edi]
add bl, 0xd0
cmp bl, 0xa
jae 0x487c24
dec dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
inc ecx
inc esi
inc edx
jmp 0x487b40
cmp ebx, 0x110000
je 0x4877da
mov ecx, 0xffffffff
cmp ebx, 0x80
jb 0x487be9
mov ecx, 0xfffffffe
cmp ebx, 0x800
jb 0x487be9
xor ecx, ecx
cmp ebx, 0x10000
setb cl
or ecx, 0xfffffffc
add ecx, eax
je 0x487ca5
cmp ecx, dword [esp]
mov ebx, ecx
jae 0x487cac
cmp byte [edi + ebx], 0xbf
jg 0x487cb2
mov edx, dword [esp]
mov eax, ebx
jmp 0x487871
add esi, dword [esp + 0xc]
mov edi, dword [esp]
mov edx, dword [esp + 0x2c]
cmp esi, ebx
jae 0x487c3b
jmp 0x4877e4
add esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp]
mov edx, dword [esp + 0x2c]
cmp esi, ebx
jb 0x4877e4
cmp dword [esp + 8], edi
jb 0x487c66
test edi, edi
je 0x487c57
cmp edi, ebx
jae 0x487c55
mov ecx, dword [esp + 0x14]
cmp byte [ecx + edi], 0xc0
jge 0x487c57
jmp 0x487c66
jne 0x487c66
test eax, eax
je 0x487c7d
cmp ebx, dword [esp + 8]
jbe 0x487c7b
cmp byte [edx], 0xbf
jg 0x487c7d
mov ecx, dword [esp + 0x14]
mov edx, ebx
push 0x57c974
push dword [esp + 0xc]
push edi
call fcn.0046fc30
jne 0x487c66
sub dword [esp + 8], edi
je 0x4877e4
add edi, dword [esp + 0x14]
movzx eax, byte [edi]
cmp eax, 0x2d
je 0x487cc7
cmp eax, 0x2b
jne 0x487cd2
dec dword [esp + 8]
je 0x4877e4
inc edi
jmp 0x487cd2
xor ebx, ebx
jmp 0x487a26
jne 0x487c06
cmp byte [edi + ebx - 1], 0
jns 0x487a26
cmp byte [edi + ebx - 2], 0xbf
jmp 0x487a26
cmp dword [esp + 8], 1
je 0x4877e4
cmp dword [esp + 8], 9
jae 0x487d2b
xor ecx, ecx
movzx eax, byte [edi]
add eax, 0xffffffd0
cmp eax, 9
ja 0x4877e4
inc edi
dec dword [esp + 8]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2]
jne 0x487cdb
cmp esi, dword [esp + 0x20]
jb 0x487f5a
cmp dword [esp + 0x20], 0
je 0x487dc4
mov edx, dword [esp + 0x20]
cmp edx, ebx
jae 0x487dbe
mov eax, dword [esp + 0x14]
cmp byte [eax + edx], 0xc0
jge 0x487dc4
jmp 0x487f5a
mov edx, dword [esp + 8]
xor ecx, ecx
test edx, edx
mov dword [esp + 8], edx
je 0x487cf7
mov dword [esp], edi
movzx edi, byte [edi]
mov eax, ecx
mov ecx, 0xa
mul ecx
seto dl
add edi, 0xffffffd0
cmp edi, 9
ja 0x4877e4
test dl, dl
jne 0x4877e4
mov ecx, eax
mov eax, dword [esp]
mov edx, dword [esp + 8]
inc eax
dec edx
add ecx, edi
mov edi, eax
jae 0x487d31
jmp 0x4877e4
mov edx, dword [esp]
push 0x57c640
call fcn.004699c0
mov edx, dword [esp + 0x18]
mov ecx, esi
push 0x57c630
call fcn.004699c0
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x18]
push 0x57c610
call fcn.004699c0
mov eax, dword [esp + 0x24]
mov edx, dword [esp]
add ebx, eax
cmp edx, ebx
cmova ebx, edx
mov ecx, ebx
push 0x57c620
call fcn.004699c0
jne 0x487f5a
cmp dword [esp + 0x28], 0
je 0x487dd3
cmp esi, ebx
jne 0x487f5a
mov eax, dword [esp + 0x20]
sub esi, eax
je 0x4877e4
add eax, dword [esp + 0x14]
mov edx, eax
movzx eax, byte [eax]
cmp eax, 0x2d
je 0x487dfc
cmp eax, 0x2b
jne 0x487e05
dec esi
je 0x4877e4
inc edx
jmp 0x487e05
cmp esi, 1
je 0x4877e4
cmp esi, 9
mov dword [esp], ecx
jae 0x487eae
xor edi, edi
movzx eax, byte [edx]
add eax, 0xffffffd0
cmp eax, 9
ja 0x4877e4
lea ecx, [edi + edi*4]
inc edx
dec esi
lea edi, [eax + ecx*2]
jne 0x487e13
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 4]
cmp ebx, edx
jae 0x487ef4
mov dword [esp + 0x10], 0
cmp dword [ecx], ebx
ja 0x4877f0
mov esi, dword [esp + 0x14]
movzx eax, byte [0x592110]
mov eax, dword [0x5920d8]
test eax, eax
jne 0x487e72
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x487f34
mov dword [0x5920d8], eax
push 0x14
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x487f34
xor ecx, ecx
cmp byte [esp + 0x10], 0
mov edx, dword [esp]
mov dword [eax], 0
mov dword [eax + 4], esi
mov dword [eax + 8], ebx
cmovne edx, ecx
cmovne edi, ecx
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
mov ecx, 0xa
test esi, esi
je 0x487e2c
movzx ebx, byte [edx]
mov eax, edi
mov dword [esp + 0x20], edx
mul ecx
seto dl
add ebx, 0xffffffd0
cmp ebx, 9
ja 0x4877e0
test dl, dl
jne 0x4877e0
mov edx, dword [esp + 0x20]
mov edi, eax
dec esi
inc edx
add edi, ebx
mov ebx, dword [esp + 0x1c]
jae 0x487eb5
jmp 0x4877e4
test edx, edx
je 0x487f06
cmp ebx, edx
jbe 0x487f06
mov eax, dword [esp + 0x14]
cmp byte [eax + edx], 0xbf
jle 0x487f6f
mov ebx, edx
mov dword [ecx + 8], edx
mov dword [esp + 0x10], 0
cmp dword [ecx], ebx
ja 0x4877f0
jmp 0x487e4c
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
push 0x57c944
push edx
push eax
call fcn.0046fc30
mov ecx, 4
mov edx, 0x14
call fcn.00429f60
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
push 0x57c964
push edx
push dword [esp + 0x30]
call fcn.0046fc30
mov ecx, dword [esp + 0x14]
mov edx, ebx
push 0x57c984
push esi
push dword [esp + 0x28]
call fcn.0046fc30
mov ecx, str.assertion_failed:_self.is_char_boundary_new_len_
mov edx, 0x30
push 0x57ce40
call fcn.0046b100
nop word cs:[eax + eax]
nop dword [eax]