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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x10188480
push eax
mov dword fs:[0], esp
sub esp, 0x60
push ebx
push esi
push edi
mov edi, dword [ebp + 0x30]
test edi, edi
je 0x100185bc
mov eax, dword [ebp + 0x20]
mov al, byte [eax]
cmp al, 0x2b
je 0x100185b5
cmp al, 0x2d
jne 0x100185bc
mov esi, 1
jmp 0x100185be
xor esi, esi
mov ebx, dword [ebp + 0x18]
mov ecx, ebx
mov dword [esp + 0x18], esi
call fcn.10007da0
and eax, 0x3000
cmp eax, 0x3000
mov eax, dword [ebp + 0x20]
je 0x100185e2
mov ecx, 0x101e2a38
jmp 0x10018608
lea ecx, [esi + 2]
cmp ecx, edi
ja 0x10018603
cmp byte [esi + eax], 0x30
jne 0x10018603
mov dl, byte [esi + eax + 1]
cmp dl, 0x78
je 0x100185fd
cmp dl, 0x58
jne 0x10018603
mov esi, ecx
mov dword [esp + 0x18], esi
mov ecx, 0x101e2a3c
push ecx
push eax
call fcn.10165640
mov dword [esp + 0x30], eax
mov eax, 0x2e
mov word [esp + 0x1c], ax
call fcn.10168473
mov ecx, dword [eax]
lea eax, [esp + 0x1c]
mov cl, byte [ecx]
push eax
push dword [ebp + 0x20]
mov byte [esp + 0x24], cl
call fcn.10165640
add esp, 0x10
mov dword [esp + 0x20], eax
lea eax, [esp + 0x2c]
push eax
mov ecx, ebx
call fcn.10010630
push eax
mov dword [esp + 0x78], 0
call fcn.100190c0
add esp, 4
lea ecx, [esp + 0x2c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x74], 0xffffffff
call fcn.10001600
mov eax, dword [esp + 0x1c]
push 0x30
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x30]
movzx eax, ax
lea ecx, [esp + 0x13]
mov dword [esp + 0x24], eax
call fcn.10004530
lea ecx, [esp + 0x38]
push eax
call fcn.10004540
lea ecx, [esp + 0x38]
push 0
push 0
call fcn.100048a0
lea ecx, [esp + 0x38]
cmp edi, 0xffffffff
jne 0x100186b2
call fcn.100044f0
push 0
push edi
call fcn.10005370
test al, al
je 0x100186d6
push 0
push edi
push 0
lea ecx, [esp + 0x44]
call fcn.10019010
push edi
lea ecx, [esp + 0x3c]
call fcn.10005330
lea ecx, [esp + 0x38]
mov dword [esp + 0x74], 1
call fcn.10004980
mov ecx, dword [ebp + 0x20]
mov edx, dword [esp + 0x1c]
push eax
mov edx, dword [edx]
lea eax, [ecx + edi]
push eax
push ecx
mov ecx, dword [esp + 0x28]
call dword [edx + 0x2c]
lea eax, [esp + 0x2c]
push eax
mov ecx, ebx
call fcn.10010630
push eax
mov byte [esp + 0x78], 2
call fcn.10019cf0
mov ebx, eax
add esp, 4
lea ecx, [esp + 0x2c]
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x74], 1
call fcn.10001600
lea eax, [esp + 0x50]
push eax
mov ecx, ebx
call fcn.10018f90
mov byte [esp + 0x74], 3
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x10]
mov ecx, dword [esp + 0x28]
movzx eax, ax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x20]
cmp eax, edi
jne 0x1001876d
push dword [esp + 0x24]
mov eax, dword [ebp + 0x24]
push eax
lea ebx, [ecx + eax]
push ecx
lea ecx, [esp + 0x44]
call fcn.10018390
jmp 0x100187c8
mov esi, dword [esp + 0x24]
mov edi, dword [ebp + 0x24]
push esi
push dword [ebp + 0x2c]
lea ebx, [eax + edi]
push ecx
lea ecx, [esp + 0x44]
call fcn.10018390
mov eax, dword [esp + 0x20]
push esi
push dword [ebp + 0x28]
inc eax
push eax
lea ecx, [esp + 0x44]
call fcn.10018390
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ecx, [esp + 0x38]
movzx esi, ax
call fcn.10004980
mov ecx, dword [esp + 0x20]
push dword [esp + 0x24]
mov word [eax + ecx*2], si
push edi
push ecx
lea ecx, [esp + 0x44]
call fcn.10018390
mov esi, dword [esp + 0x18]
push 0
lea ecx, [esp + 0x54]
call fcn.1000f530
mov edi, eax
mov al, byte [edi]
cmp al, 0x7f
je 0x100188a0
nop
test al, al
jle 0x100188a0
movsx ecx, al
mov eax, ebx
sub eax, esi
cmp ecx, eax
jae 0x100188a0
sub ebx, ecx
mov ecx, dword [esp + 0x48]
cmp ecx, ebx
jb 0x100188e6
or eax, 0xffffffff
sub eax, ecx
cmp eax, 1
jbe 0x100188dd
lea eax, [ecx + 1]
push 0
push eax
lea ecx, [esp + 0x40]
mov dword [esp + 0x30], eax
call fcn.10005370
test al, al
je 0x1001888c
mov eax, dword [esp + 0x48]
sub eax, ebx
push eax
lea ecx, [esp + 0x3c]
lea esi, [ebx + ebx]
call fcn.10004980
add eax, esi
push eax
lea ecx, [esp + 0x40]
call fcn.10004980
add eax, 2
add eax, esi
push eax
call fcn.10001150
mov eax, dword [esp + 0x3c]
movzx eax, ax
add esp, 0xc
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x3c]
call fcn.10004980
add eax, esi
push eax
call fcn.10001180
add esp, 8
lea ecx, [esp + 0x38]
push dword [esp + 0x28]
call fcn.10005330
mov esi, dword [esp + 0x18]
cmp byte [edi + 1], 0
lea eax, [edi + 1]
cmovg edi, eax
mov al, byte [edi]
cmp al, 0x7f
jne 0x100187e0
lea ecx, [esp + 0x38]
call fcn.10003770
mov ebx, dword [ebp + 0x18]
mov edi, eax
mov ecx, ebx
mov dword [esp + 0x28], edi
call fcn.1000ee20
test edx, edx
jl 0x100188ef
jg 0x100188c3
test eax, eax
je 0x100188ef
mov ecx, ebx
call fcn.1000ee20
cmp eax, edi
jbe 0x100188ef
mov ecx, ebx
call fcn.1000ee20
mov edi, eax
sub edi, dword [esp + 0x28]
jmp 0x100188f1
lea ecx, [esp + 0x38]
call fcn.100044f0
lea ecx, [esp + 0x38]
call fcn.10004510
xor edi, edi
mov ecx, ebx
call fcn.10007da0
and eax, 0x1c0
cmp eax, 0x40
je 0x10018985
cmp eax, 0x100
je 0x10018940
mov ebx, dword [ebp + 8]
push edi
push dword [ebp + 0x1c]
lea eax, [esp + 0x38]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push eax
push ebx
call fcn.10018f20
mov ecx, dword [eax]
mov dword [ebp + 0x10], ecx
mov eax, dword [eax + 4]
add esp, 0x18
lea ecx, [esp + 0x38]
mov dword [ebp + 0x14], eax
xor edi, edi
call fcn.10004980
jmp 0x10018991
lea ecx, [esp + 0x38]
call fcn.10004980
mov ebx, dword [ebp + 8]
push esi
push eax
push dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push dword [ebp + 0x10]
push eax
push ebx
call fcn.10018eb0
mov ecx, dword [eax]
push edi
push dword [ebp + 0x1c]
mov dword [ebp + 0x10], ecx
mov ecx, dword [eax + 4]
mov dword [ebp + 0x14], ecx
push dword [eax + 4]
push dword [eax]
lea eax, [esp + 0x58]
push eax
push ebx
call fcn.10018f20
add esp, 0x30
xor edi, edi
jmp 0x100189a7
lea ecx, [esp + 0x38]
call fcn.10004980
mov ebx, dword [ebp + 8]
push esi
push eax
push dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push dword [ebp + 0x10]
push eax
push ebx
call fcn.10018eb0
add esp, 0x18
mov ecx, dword [eax]
mov dword [ebp + 0x10], ecx
mov eax, dword [eax + 4]
lea ecx, [esp + 0x38]
mov dword [ebp + 0x14], eax
call fcn.10004980
mov ecx, dword [esp + 0x28]
sub ecx, esi
push ecx
lea eax, [eax + esi*2]
push eax
push dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push dword [ebp + 0x10]
push eax
push ebx
call fcn.10018eb0
mov edx, dword [eax]
mov ecx, dword [ebp + 0x18]
add esp, 0x18
mov dword [ebp + 0x10], edx
mov eax, dword [eax + 4]
push 0
push 0
mov dword [ebp + 0x14], eax
call fcn.1000ede0
mov esi, dword [ebp + 0xc]
push edi
push dword [ebp + 0x1c]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push esi
push ebx
call fcn.10018f20
add esp, 0x18
lea ecx, [esp + 0x50]
call fcn.100034a0
lea ecx, [esp + 0x38]
call fcn.100039c0
mov ecx, dword [esp + 0x6c]
pop edi
mov eax, esi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret