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

Disassembly:
sub esp, 0x90
push ebx
push ebp
push esi
push edi
mov esi, ecx
mov ecx, 0xa581b8
call fcn.0062fc90
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], 0
fild qword [esp + 0x58]
fmul qword [0x790fe0]
fadd qword [0x788558]
call fcn.0076a6b0
cmp eax, 0xc
mov dword [esp + 0x4c], eax
ja 0x58677c
mov edi, dword [esp + 0xa4]
xor ebx, ebx
push edi
mov ecx, 0x81a800
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], ebx
call fcn.005453b0
movsx eax, byte [eax + 0x11b]
mov dword [esp + 0x58], eax
mov eax, dword [esi + 0x38]
cmp eax, ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x18], 0x23
jne 0x5867f2
mov dword [esp + 0x48], 0xf
push ebx
push ebx
lea ecx, [esp + 0x2c]
call fcn.004911c0
mov eax, dword [esp + 0x2c]
mov ecx, 0xa
mov dword [esp + 0x24], vtable.DynamicVectorClass_char__.0
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], ebx
mov esi, 0x7cb728
jmp 0x586821
mov ecx, dword [esp + 0x38]
cmp dword [esp + 0x34], eax
jl 0x58684a
mov dl, byte [esp + 0x31]
test dl, dl
jne 0x586833
cmp eax, ebx
jne 0x586862
cmp ecx, ebx
jle 0x586862
mov edx, dword [esp + 0x24]
add eax, ecx
push ebx
push eax
lea ecx, [esp + 0x2c]
call dword [edx + 8]
test al, al
je 0x58685e
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x28]
mov eax, ecx
inc ecx
mov dword [esp + 0x34], ecx
mov ecx, dword [esi]
mov dword [edx + eax*4], ecx
mov eax, dword [esp + 0x2c]
add esi, 4
cmp esi, 0x7cb7b8
jl 0x58681d
mov ecx, str.Neutral
call fcn.004f8880
mov ecx, eax
call fcn.004ecb10
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x68], eax
cmp ebp, ebx
jle 0x586b7b
mov ecx, dword [esp + 0x20]
lea eax, [ebp + ebp]
cmp ecx, eax
jge 0x586b7b
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x48]
mov ecx, esi
mov dword [esp + 0x80], ebx
sub ecx, eax
mov dword [esp + 0x84], eax
inc ecx
mov dword [esp + 0x88], ebx
mov dword [esp + 0x7c], ecx
fild qword [esp + 0x7c]
fstp qword [esp + 0x60]
fild qword [esp + 0x84]
fstp qword [esp + 0x40]
mov ecx, 0xa581b8
call fcn.0062fc90
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], ebx
fild qword [esp + 0x6c]
fmul qword [esp + 0x60]
fmul qword [0x790db8]
fadd qword [esp + 0x40]
call fcn.0076a6b0
cmp eax, esi
mov dword [esp + 0x3c], eax
ja 0x5868d7
mov edx, dword [esp + 0x28]
mov ecx, dword [edx + eax*4]
call fcn.00458050
mov esi, eax
cmp esi, 0xffffffff
je 0x586b71
push 0x5e0
call fcn.0076d5a7
add esp, 4
cmp eax, ebx
je 0x586957
mov ecx, dword [esp + 0x68]
mov edx, dword [0xa1dfec]
push ecx
mov ecx, dword [edx + esi*4]
push ecx
mov ecx, eax
call fcn.00438b60
mov ebp, eax
mov dword [esp + 0x40], ebx
mov dword [esp + 0x14], ebp
mov byte [esp + 0x12], 0
jmp 0x58696e
mov dword [esp + 0x14], ebx
mov ebp, ebx
mov dword [esp + 0x40], ebx
mov byte [esp + 0x12], 0
jmp 0x58696e
mov ebp, dword [esp + 0x14]
xor ebx, ebx
cmp dword [esp + 0x40], 0x3c
jge 0x586b4e
mov ecx, 0xa581b8
call fcn.0062fc90
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], ebx
fild qword [esp + 0x8c]
fmul qword [0x791048]
call fcn.0076a6b0
mov esi, eax
cmp esi, 0xe
ja 0x586979
mov ecx, 0xa581b8
call fcn.0062fc90
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], ebx
fild qword [esp + 0x74]
fmul qword [0x791048]
call fcn.0076a6b0
cmp eax, 0xe
ja 0x5869aa
mov bx, word [edi]
mov di, word [edi + 2]
lea ecx, [esi - 7]
add eax, 0xfffffff9
add di, cx
mov ecx, dword [ebp + 0x418]
add bx, ax
push 1
mov edx, dword [ecx]
mov word [esp + 0x58], bx
mov word [esp + 0x5a], di
call dword [edx + 0x90]
mov ebp, eax
mov byte [esp + 0x13], 1
mov ax, word [ebp]
cmp ax, 0x7fff
jne 0x586a18
cmp word [ebp + 2], ax
je 0x586a9d
mov ecx, dword [esp + 0x54]
mov dx, word [ebp + 2]
add eax, ecx
add dx, di
lea ecx, [esp + 0x60]
mov word [esp + 0x50], ax
mov word [esp + 0x52], dx
mov eax, dword [esp + 0x50]
push ecx
mov ecx, 0x81a800
mov dword [esp + 0x64], eax
call fcn.005453b0
mov esi, eax
mov eax, dword [esi + 0xe4]
test eax, eax
jne 0x586a84
mov ecx, esi
call fcn.0047b190
test al, al
je 0x586a84
movsx edx, byte [esi + 0x11b]
cmp edx, dword [esp + 0x58]
jne 0x586a84
cmp dword [esi + 0xec], 3
je 0x586a84
push 1
push esi
mov ecx, 0x81a800
call fcn.005573e0
test al, al
jne 0x586a89
mov byte [esp + 0x13], 0
mov al, byte [esp + 0x13]
add ebp, 4
test al, al
je 0x586b2e
jmp 0x586a04
mov al, byte [esp + 0x13]
test al, al
je 0x586b2e
movsx ecx, di
movsx eax, bx
shl ecx, 8
shl eax, 8
add ecx, 0x80
add eax, 0x80
mov dword [esp + 0x98], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x94], eax
lea eax, [esp + 0x94]
mov edx, dword [ecx]
push 0
push eax
mov dword [esp + 0xa4], 0
call dword [edx + 0xd4]
test al, al
je 0x586b2e
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
inc esi
cmp eax, ecx
mov byte [esp + 0x12], 1
mov dword [esp + 0x1c], esi
jge 0x586b2a
dec ecx
cmp eax, ecx
mov dword [esp + 0x34], ecx
jge 0x586b2a
mov ecx, dword [esp + 0x28]
inc eax
mov edx, dword [ecx + eax*4]
mov dword [ecx + eax*4 - 4], edx
mov ecx, dword [esp + 0x34]
cmp eax, ecx
jl 0x586b16
dec dword [esp + 0x18]
mov ecx, dword [esp + 0x40]
mov al, byte [esp + 0x12]
mov edi, dword [esp + 0xa4]
inc ecx
test al, al
mov dword [esp + 0x40], ecx
je 0x586968
xor ebx, ebx
jmp 0x586b64
mov al, byte [esp + 0x12]
test al, al
jne 0x586b64
cmp ebp, ebx
je 0x586b64
mov eax, dword [ebp]
push 1
mov ecx, ebp
call dword [eax + 0x20]
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x4c]
inc eax
mov dword [esp + 0x20], eax
cmp dword [esp + 0x1c], ebp
jl 0x58688e
mov eax, dword [esp + 0x28]
pop edi
pop esi
pop ebp
cmp eax, ebx
mov dword [esp + 0x18], vtable.VectorClass_char__.0
pop ebx
je 0x586ba0
mov cl, byte [esp + 0x21]
test cl, cl
je 0x586ba0
push eax
call fcn.0076d2d5
add esp, 4
add esp, 0x90
ret 4