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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa8
mov edx, dword [ecx]
mov eax, dword [ecx + 8]
lea esi, [esp + 0x60]
mov dword [esp + 0x3c], ecx
mov ecx, esi
mov dword [esp + 0x20], edx
push 9
push 0x7be90d
mov dword [esp + 0xc], eax
push eax
call fcn.004aad00
add esp, 0xc
cmp dword [esi], 0
je 0x59d575
mov ebx, dword [esp + 0x80]
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x94]
mov esi, ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 8], eax
sub esi, ecx
cmp esi, eax
jae 0x59d7de
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x90]
mov dword [esp + 0x2c], ebx
cmp ecx, eax
mov edi, eax
mov ebx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x28], ecx
cmova edi, ecx
neg ebx
mov dword [esp + 0x40], edi
sub edi, ecx
mov dword [esp + 0x5c], ebx
mov ebx, edx
dec edx
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x68]
sub ebx, eax
mov eax, ecx
mov dword [esp + 0x54], edx
neg eax
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x78]
mov dword [esp + 0x38], eax
add eax, ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x88]
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x18]
mov cl, byte [eax + esi]
xor eax, eax
xor edx, edx
inc edx
shld eax, edx, cl
shl edx, cl
test cl, 0x20
mov ecx, 0
cmovne eax, edx
cmovne edx, ecx
and eax, dword [esp + 0x30]
and edx, dword [esp + 0x34]
or edx, eax
jne 0x59d487
mov eax, dword [esp + 0x5c]
add eax, esi
cmp eax, dword [esp + 8]
jae 0x59d7de
mov eax, dword [esp + 0xc]
mov ebx, esi
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x58]
sub esi, eax
cmp dword [esp + 0x1c], 0xffffffff
cmovne ecx, eax
mov dword [esp + 0x10], ecx
mov cl, byte [edx + ebx]
jmp 0x59d432
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
lea edx, [esi - 1]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x14], esi
cmp ecx, eax
cmovb eax, ecx
cmp dword [esp + 0x1c], 0xffffffff
cmove eax, ecx
lea ecx, [eax - 1]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x54]
lea edi, [ecx + esi]
mov ecx, eax
sub ecx, 1
jb 0x59d4f6
mov esi, dword [esp + 0x24]
cmp esi, dword [esp + 0xc]
jae 0x59d8f7
lea esi, [edx + eax]
cmp esi, dword [esp + 8]
jae 0x59d905
mov esi, dword [esp + 0x38]
mov bl, byte [esi + eax - 1]
cmp bl, byte [edi + eax]
mov eax, ecx
je 0x59d4b7
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0xc]
sub ebx, dword [esp + 0x28]
add ebx, ecx
jmp 0x59d555
cmp dword [esp + 0x1c], 0xffffffff
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x48]
cmove ecx, dword [esp + 0xc]
lea esi, [edx + eax]
mov eax, dword [esp + 0x50]
cmp ecx, edx
cmovbe ecx, edx
add ecx, dword [esp + 0x4c]
sub ecx, 1
jb 0x59d669
sub eax, 1
jb 0x59d980
cmp esi, dword [esp + 8]
jae 0x59d98f
mov dl, byte [ebx]
mov edi, dword [esp + 0x18]
inc ebx
cmp dl, byte [edi + esi]
lea esi, [esi + 1]
je 0x59d520
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
sub ebx, eax
cmp dword [esp + 0x1c], 0xffffffff
je 0x59d560
mov dword [esp + 0x10], eax
mov esi, ebx
sub esi, dword [esp + 0xc]
cmp esi, dword [esp + 8]
jb 0x59d42b
jmp 0x59d7de
cmp byte [esp + 0x6e], 0
jne 0x59d7de
mov cl, byte [esp + 0x6d]
mov eax, dword [esp + 0x68]
test cl, cl
sete dl
test eax, eax
je 0x59d7d1
mov edi, dword [esp + 0x94]
mov esi, dword [esp + 0x90]
xor ebx, ebx
mov ecx, edx
dec ebx
mov edx, ebx
mov dword [esp + 8], edi
cmp eax, edi
jae 0x59d5bd
cmp byte [esi + eax], 0xbf
jg 0x59d5c3
jmp 0x59d9d1
jne 0x59d9d1
mov bl, byte [esi + eax - 1]
test bl, bl
js 0x59d5d0
movzx ebx, bl
jmp 0x59d620
movzx edx, byte [esi + eax - 2]
cmp dl, 0xc0
jge 0x59d5fe
mov dword [esp + 0x14], ecx
movzx ecx, byte [esi + eax - 3]
cmp cl, 0xc0
jge 0x59d603
movzx edi, byte [esi + eax - 4]
and ecx, 0x3f
and edi, 7
shl edi, 6
or ecx, edi
mov edi, dword [esp + 8]
jmp 0x59d606
and edx, 0x1f
jmp 0x59d612
and ecx, 0xf
shl ecx, 6
and edx, 0x3f
or edx, ecx
mov ecx, dword [esp + 0x14]
and bl, 0x3f
shl edx, 6
movzx ebx, bl
or ebx, edx
xor edx, edx
dec edx
test cl, 1
je 0x59d87c
cmp ebx, 0x110000
je 0x59d7de
cmp ebx, 0x80
mov ecx, edx
jb 0x59d65a
mov ecx, 0xfffffffe
cmp ebx, 0x800
jb 0x59d65a
xor ecx, ecx
cmp ebx, 0x10000
setb cl
or ecx, 0xfffffffc
add eax, ecx
mov ecx, 0
jne 0x59d5ae
jmp 0x59d66d
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 4]
lea esi, [ecx + 9]
mov dword [esp + 0x14], ecx
xor edi, edi
mov dword [esp + 8], esi
lea eax, [edx - 0x11]
mov dword [esp + 0x10], eax
mov eax, esi
sub eax, edx
sub edx, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x20]
add edx, 0xfffffff7
lea ecx, [eax + ecx + 9]
mov eax, esi
mov ebx, dword [esp + 4]
add esi, edi
je 0x59d6ca
cmp dword [esp + 4], esi
jbe 0x59d6bc
cmp byte [ecx + edi], 0xbf
jle 0x59d9af
mov ebx, dword [esp + 4]
sub ebx, eax
jmp 0x59d6ca
mov ebx, dword [esp + 0xc]
add ebx, edi
mov ebx, edx
jne 0x59d9af
test ebx, ebx
je 0x59d6e2
mov bl, byte [ecx + edi]
add bl, 0xd0
cmp bl, 0xa
jae 0x59d6e2
mov esi, dword [esp + 8]
inc eax
inc edi
dec edx
jmp 0x59d69c
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x20]
test esi, esi
lea ebx, [eax + edi]
mov eax, dword [esp + 4]
lea edx, [ebx + ecx]
je 0x59d717
mov eax, dword [esp + 4]
sub eax, ebx
jbe 0x59d715
cmp byte [edx], 0xbf
jg 0x59d717
mov edx, dword [esp + 4]
push 0x7be9c8
push edx
push ebx
jmp 0x59d9f1
jne 0x59d705
cmp eax, 8
jb 0x59d7de
mov eax, 0x6c6f6320
mov dword [esp + 0x18], ebx
mov ebx, edx
xor eax, dword [edx]
mov edx, 0x206e6d75
xor edx, dword [ebx + 4]
or edx, eax
jne 0x59d7de
mov al, 1
mov dword [esp + 0x34], ebx
lea ebx, [edi + ecx + 0x11]
mov ecx, dword [esp + 0x14]
sub dword [esp + 0x10], edi
add edi, 0x11
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x18]
lea edx, [eax + 8]
mov eax, ecx
neg eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], eax
mov eax, ecx
add eax, edi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 4]
je 0x59d7b3
mov eax, dword [esp + 0x24]
cmp dword [esp + 4], eax
jbe 0x59d793
cmp byte [ebx + ecx], 0xbf
jle 0x59d9df
mov eax, dword [esp + 4]
sub eax, edx
jmp 0x59d7b3
mov eax, dword [esp + 0x10]
mov dword [esp + 0x38], ebx
mov ebx, edx
mov edx, ecx
cmp ecx, eax
jne 0x59d9df
mov edx, dword [esp + 0x1c]
add eax, edx
mov edx, ebx
mov ebx, dword [esp + 0x38]
test eax, eax
je 0x59d849
mov al, byte [ebx + ecx]
add al, 0xd0
cmp al, 0xa
jae 0x59d849
dec dword [esp + 0x10]
inc edx
inc edi
inc ebx
jmp 0x59d769
test cl, cl
mov ecx, 0
jne 0x59d66d
mov al, 1
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x3c]
lea esi, [esp + 0x60]
mov eax, dword [ecx + 8]
movsd xmm0, qword [ecx]
mov ecx, esi
mov dword [esi + 8], eax
movsd qword [esi], xmm0
call fcn.004a28ac
mov ebx, dword [esi]
mov esi, dword [esi + 8]
mov al, byte [0x803894]
mov ecx, 0x14
mov edx, 4
call fcn.004889b0
test eax, eax
je 0x59d9c0
xor ecx, ecx
cmp byte [esp + 0xc], 0
mov edx, dword [esp + 8]
mov dword [eax], ecx
mov dword [eax + 4], ebx
mov dword [eax + 8], esi
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
add edi, ecx
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x34]
cmp edi, dword [esp + 4]
jb 0x59d7e4
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 8]
jb 0x59d898
cmp dword [esp + 8], 0
je 0x59d885
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 4]
jae 0x59d883
cmp byte [ebx + ecx], 0xc0
jge 0x59d885
jmp 0x59d898
mov ecx, eax
jmp 0x59d66d
jne 0x59d898
test esi, esi
je 0x59d8b2
mov ecx, dword [esp + 0x18]
cmp dword [esp + 4], ecx
jbe 0x59d8b0
cmp byte [edx], 0xbf
jg 0x59d8b2
mov edx, dword [esp + 4]
mov ecx, ebx
push 0x7be9e8
push dword [esp + 0x1c]
push dword [esp + 0x10]
jmp 0x59d9f1
jne 0x59d898
mov edx, dword [esp + 8]
lea esi, [esp + 0x60]
mov ecx, esi
add edx, ebx
push eax
call fcn.004ac230
add esp, 4
cmp byte [esi], 0
jne 0x59d7e4
mov edx, dword [esp + 0x30]
mov eax, edi
sub eax, edx
jb 0x59d9fb
mov ecx, dword [esp + 0x64]
test edx, edx
je 0x59d91b
cmp dword [esp + 4], edx
jbe 0x59d915
cmp byte [ebx + edx], 0xc0
jge 0x59d91b
jmp 0x59d9fb
mov edx, dword [esp + 0xc]
push 0x7bdbf0
jmp 0x59d9a5
mov edx, dword [esp + 8]
mov ecx, esi
push 0x7bdc00
jmp 0x59d9a5
jne 0x59d9fb
cmp dword [esp + 0x24], 0
je 0x59d92c
cmp dword [esp + 4], edi
jne 0x59d9fb
lea esi, [esp + 0x60]
mov dword [esp + 8], ecx
add edx, ebx
mov ecx, esi
push eax
call fcn.004ac230
add esp, 4
cmp byte [esi], 0
jne 0x59d7e4
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x64]
cmp dword [esp + 4], ecx
jb 0x59d973
test ecx, ecx
je 0x59d96c
cmp dword [esp + 4], ecx
jbe 0x59d96c
cmp byte [ebx + ecx], 0xbf
jle 0x59da0c
mov eax, dword [esp + 0x3c]
mov dword [eax + 8], ecx
mov dword [esp + 0xc], 0
jmp 0x59d7e4
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0xc]
push 0x7bdbd0
jmp 0x59d9a5
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 8]
add ecx, dword [esp + 0x14]
cmp edx, ecx
cmova ecx, edx
push 0x7bdbe0
call fcn.006521f0
add esp, 4
ud2
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 4]
push 0x7be9b8
push edx
push esi
jmp 0x59d9f1
mov ecx, 4
mov edx, 0x14
call fcn.00651860
ud2
mov ecx, esi
mov edx, edi
push 0x7bdc30
push eax
push 0
jmp 0x59d9f1
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 4]
push 0x7be9d8
push edx
push dword [esp + 0x2c]
call fcn.00652800
add esp, 0xc
ud2
mov eax, edx
mov edx, dword [esp + 4]
mov ecx, ebx
push 0x7be9f8
push edi
push eax
jmp 0x59d9f1
mov ecx, str.assertion_failed:_self.is_char_boundary_new_len_
mov edx, 0x30
push 0x7f35d4
call fcn.006522d0
jmp 0x59d9aa