Function at 0x4871f0
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 0x5818b0
mov dword [esp + 0x24], eax
push eax
call fcn.00470590
add esp, 0xc
cmp dword [esp + 0x40], 0
je 0x4873e3
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 0x4873ea
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 0x487490
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 0x48732a
nop dword [eax + eax]
lea eax, [edi + ebx]
cmp eax, dword [esp]
mov eax, dword [esp + 0x18]
jae 0x4873ea
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 0x4872e0
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 0x48737f
cmp ecx, dword [esp + 0x18]
mov esi, ecx
jae 0x487992
lea ecx, [ebx + esi]
cmp ecx, dword [esp]
jae 0x487985
mov ecx, dword [esp + 0x10]
movzx ebx, byte [ecx + esi]
lea ecx, [esi - 1]
cmp bl, byte [eax + esi]
mov ebx, edi
je 0x487340
sub edx, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
add edx, esi
mov dword [esp + 0xc], eax
jmp 0x4873d0
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 0x4875b6
cmp dword [esp + 0x2c], ecx
je 0x4879a2
lea esi, [edi + ecx]
mov ebx, edi
cmp esi, dword [esp]
jae 0x4879b4
mov esi, dword [esp + 0x10]
movzx ebx, byte [esi + ecx]
cmp bl, byte [eax + ecx]
lea ecx, [ecx + 1]
je 0x487390
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 0x4872ad
jmp 0x4873ea
cmp byte [esp + 0x4e], 0
je 0x487450
mov al, 1
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
cmp dword [ecx], ebx
jbe 0x487a5c
mov eax, dword [0x5970d8]
mov ecx, dword [esp + 0x14]
test ebx, ebx
je 0x487429
push ebx
push ecx
push 0
push eax
call sub.KERNEL32.dll_HeapReAlloc
mov esi, eax
test eax, eax
jne 0x487437
mov ecx, 1
mov edx, ebx
call fcn.00429f40
push ecx
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov esi, 1
movzx eax, byte [0x597110]
mov eax, dword [0x5970d8]
test eax, eax
jne 0x487a82
jmp 0x487a70
mov eax, dword [esp + 0x48]
movzx ecx, byte [esp + 0x4d]
test eax, eax
je 0x4875ba
mov edx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
cmp eax, edx
mov dword [esp], edx
jae 0x4875c5
cmp byte [edi + eax], 0xc0
jge 0x4875cb
mov edx, dword [esp]
mov ecx, edi
push 0x5816d8
push eax
push 0
call fcn.0046fcc0
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 0x487510
mov eax, dword [esp + 0x34]
add eax, ebx
cmp eax, dword [esp]
mov eax, dword [esp + 0x18]
jae 0x4873ea
mov edi, dword [esp + 0x3c]
mov edx, ebx
sub ebx, eax
movzx ecx, byte [edi + edx]
jmp 0x4874c0
cmp esi, dword [esp + 0x18]
jae 0x487552
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], ebx
nop
sub eax, 1
jb 0x48755d
lea ecx, [eax + ebx]
cmp ecx, dword [esp]
jae 0x487985
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 0x487520
sub edx, dword [esp + 0x24]
add edx, eax
jmp 0x4875a2
cmp dword [esp + 0x24], 0
jne 0x487992
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 0x487636
lea edi, [ebx + ecx]
cmp edi, dword [esp]
jae 0x4879b8
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 0x487570
sub edx, dword [esp + 0x38]
mov ebx, edx
sub ebx, dword [esp + 0x18]
cmp ebx, dword [esp]
jb 0x4874a9
jmp 0x4873ea
mov ebx, edi
jmp 0x487636
xor ebx, ebx
test cl, cl
jne 0x487636
jmp 0x4873ea
jne 0x48747e
movzx ebx, byte [edi + eax - 1]
test bl, bl
jns 0x48762c
movzx edx, byte [edi + eax - 2]
cmp dl, 0xbf
jg 0x48760e
movzx esi, byte [edi + eax - 3]
mov dword [esp + 0x10], esi
cmp byte [esp + 0x10], 0xbf
jg 0x487613
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 0x487618
and edx, 0x1f
jmp 0x487624
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 0x4877c5
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 0x48769e
nop dword [eax]
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
jae 0x487690
cmp byte [ecx + esi], 0xbf
jle 0x487b30
sub ebx, edi
jmp 0x48769e
mov ebx, dword [esp + 0x10]
add ebx, esi
mov ebx, edx
jne 0x487b30
test ebx, ebx
je 0x4876be
movzx ebx, byte [ecx + esi]
add bl, 0xd0
cmp bl, 0xa
jae 0x4876be
mov ebx, dword [esp + 0x1c]
inc edi
inc esi
dec edx
mov eax, dword [esp]
add eax, esi
jne 0x487670
jmp 0x48769e
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 0x4876f4
mov ecx, ebx
sub ecx, edi
jbe 0x4876f2
cmp byte [edx], 0xbf
jg 0x4876f4
mov ecx, dword [esp + 0x14]
mov edx, ebx
push 0x5819cc
push ebx
push edi
call fcn.0046fcc0
jne 0x4876e0
mov dword [esp + 0x2c], edx
mov dl, 1
cmp ecx, 8
mov dword [esp + 0x10], edx
jb 0x4873f4
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 0x4873f4
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 0x4877a4
cmp dword [esp + 0x28], ebx
jae 0x487780
mov edi, dword [esp + 0xc]
cmp byte [edx + edi], 0xbf
jle 0x487b53
mov edi, ebx
sub edi, ecx
jmp 0x4877a4
mov edi, dword [esp + 0x18]
mov dword [esp + 0x30], edx
cmp dword [esp + 0xc], edi
jne 0x487b53
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 0x487820
mov edi, dword [esp + 0xc]
movzx ebx, byte [edx + edi]
add bl, 0xd0
cmp bl, 0xa
jae 0x487834
dec dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
inc ecx
inc esi
inc edx
jmp 0x487750
cmp ebx, 0x110000
je 0x4873ea
mov ecx, 0xffffffff
cmp ebx, 0x80
jb 0x4877f9
mov ecx, 0xfffffffe
cmp ebx, 0x800
jb 0x4877f9
xor ecx, ecx
cmp ebx, 0x10000
setb cl
or ecx, 0xfffffffc
add ecx, eax
je 0x4878b5
cmp ecx, dword [esp]
mov ebx, ecx
jae 0x4878bc
cmp byte [edi + ebx], 0xbf
jg 0x4878c2
mov edx, dword [esp]
mov eax, ebx
jmp 0x487481
add esi, dword [esp + 0xc]
mov edi, dword [esp]
mov edx, dword [esp + 0x2c]
cmp esi, ebx
jae 0x48784b
jmp 0x4873f4
add esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp]
mov edx, dword [esp + 0x2c]
cmp esi, ebx
jb 0x4873f4
cmp dword [esp + 8], edi
jb 0x487876
test edi, edi
je 0x487867
cmp edi, ebx
jae 0x487865
mov ecx, dword [esp + 0x14]
cmp byte [ecx + edi], 0xc0
jge 0x487867
jmp 0x487876
jne 0x487876
test eax, eax
je 0x48788d
cmp ebx, dword [esp + 8]
jbe 0x48788b
cmp byte [edx], 0xbf
jg 0x48788d
mov ecx, dword [esp + 0x14]
mov edx, ebx
push 0x5819ec
push dword [esp + 0xc]
push edi
call fcn.0046fcc0
jne 0x487876
sub dword [esp + 8], edi
je 0x4873f4
add edi, dword [esp + 0x14]
movzx eax, byte [edi]
cmp eax, 0x2d
je 0x4878d7
cmp eax, 0x2b
jne 0x4878e2
dec dword [esp + 8]
je 0x4873f4
inc edi
jmp 0x4878e2
xor ebx, ebx
jmp 0x487636
jne 0x487816
cmp byte [edi + ebx - 1], 0
jns 0x487636
cmp byte [edi + ebx - 2], 0xbf
jmp 0x487636
cmp dword [esp + 8], 1
je 0x4873f4
cmp dword [esp + 8], 9
jae 0x48793b
xor ecx, ecx
movzx eax, byte [edi]
add eax, 0xffffffd0
cmp eax, 9
ja 0x4873f4
inc edi
dec dword [esp + 8]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2]
jne 0x4878eb
cmp esi, dword [esp + 0x20]
jb 0x487b6a
cmp dword [esp + 0x20], 0
je 0x4879d4
mov edx, dword [esp + 0x20]
cmp edx, ebx
jae 0x4879ce
mov eax, dword [esp + 0x14]
cmp byte [eax + edx], 0xc0
jge 0x4879d4
jmp 0x487b6a
mov edx, dword [esp + 8]
xor ecx, ecx
test edx, edx
mov dword [esp + 8], edx
je 0x487907
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 0x4873f4
test dl, dl
jne 0x4873f4
mov ecx, eax
mov eax, dword [esp]
mov edx, dword [esp + 8]
inc eax
dec edx
add ecx, edi
mov edi, eax
jae 0x487941
jmp 0x4873f4
mov edx, dword [esp]
push 0x5816b8
call fcn.00469a50
mov edx, dword [esp + 0x18]
mov ecx, esi
push 0x5816a8
call fcn.00469a50
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x18]
push 0x581688
call fcn.00469a50
mov eax, dword [esp + 0x24]
mov edx, dword [esp]
add ebx, eax
cmp edx, ebx
cmova ebx, edx
mov ecx, ebx
push 0x581698
call fcn.00469a50
jne 0x487b6a
cmp dword [esp + 0x28], 0
je 0x4879e3
cmp esi, ebx
jne 0x487b6a
mov eax, dword [esp + 0x20]
sub esi, eax
je 0x4873f4
add eax, dword [esp + 0x14]
mov edx, eax
movzx eax, byte [eax]
cmp eax, 0x2d
je 0x487a0c
cmp eax, 0x2b
jne 0x487a15
dec esi
je 0x4873f4
inc edx
jmp 0x487a15
cmp esi, 1
je 0x4873f4
cmp esi, 9
mov dword [esp], ecx
jae 0x487abe
xor edi, edi
movzx eax, byte [edx]
add eax, 0xffffffd0
cmp eax, 9
ja 0x4873f4
lea ecx, [edi + edi*4]
inc edx
dec esi
lea edi, [eax + ecx*2]
jne 0x487a23
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 4]
cmp ebx, edx
jae 0x487b04
mov dword [esp + 0x10], 0
cmp dword [ecx], ebx
ja 0x487400
mov esi, dword [esp + 0x14]
movzx eax, byte [0x597110]
mov eax, dword [0x5970d8]
test eax, eax
jne 0x487a82
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x487b44
mov dword [0x5970d8], eax
push 0x14
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x487b44
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 0x487a3c
movzx ebx, byte [edx]
mov eax, edi
mov dword [esp + 0x20], edx
mul ecx
seto dl
add ebx, 0xffffffd0
cmp ebx, 9
ja 0x4873f0
test dl, dl
jne 0x4873f0
mov edx, dword [esp + 0x20]
mov edi, eax
dec esi
inc edx
add edi, ebx
mov ebx, dword [esp + 0x1c]
jae 0x487ac5
jmp 0x4873f4
test edx, edx
je 0x487b16
cmp ebx, edx
jbe 0x487b16
mov eax, dword [esp + 0x14]
cmp byte [eax + edx], 0xbf
jle 0x487b7f
mov ebx, edx
mov dword [ecx + 8], edx
mov dword [esp + 0x10], 0
cmp dword [ecx], ebx
ja 0x487400
jmp 0x487a5c
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
push 0x5819bc
push edx
push eax
call fcn.0046fcc0
mov ecx, 4
mov edx, 0x14
call fcn.00429f40
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
push 0x5819dc
push edx
push dword [esp + 0x30]
call fcn.0046fcc0
mov ecx, dword [esp + 0x14]
mov edx, ebx
push 0x5819fc
push esi
push dword [esp + 0x28]
call fcn.0046fcc0
mov ecx, str.assertion_failed:_self.is_char_boundary_new_len_GaX
mov edx, 0x30
push 0x581e64
call fcn.0046b190
nop word cs:[eax + eax]
nop dword [eax]