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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xc8
mov eax, dword [0x101e3070]
xor eax, esp
mov dword [esp + 0xc4], eax
cmp word [ebp + 0x10], 0
xorps xmm0, xmm0
mov eax, dword [ebp + 8]
push esi
mov dword [esp + 0x8c], eax
mov eax, dword [ebp + 0x14]
push edi
mov edi, ecx
mov dword [esp + 0x94], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x98], eax
mov dword [esp + 0x38], edx
mov eax, dword [edi]
mov dword [esp + 0x20], edi
mov dword [esp + 0x34], 0
movlpd qword [esp + 0x80], xmm0
mov eax, dword [eax]
mov dword [esp + 0x74], eax
je 0x10085963
test byte [eax + 0x3c], 0x80
je 0x10085963
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0xc4]
xor ecx, esp
call fcn.100a66bf
mov esp, ebp
pop ebp
ret
movzx eax, word [edx]
mov dword [esp + 0x9c], eax
cmp eax, 0x3f
ja 0x1008594d
movzx ecx, ax
xor edx, edx
xor esi, esi
movlpd qword [esp + 0x48], xmm0
mov eax, ecx
movlpd qword [esp + 0x58], xmm0
bts edx, eax
mov byte [esp + 0x24], 1
cmp eax, 0x20
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x3c], 0
cmovae esi, edx
xor edx, esi
cmp eax, 0x40
mov eax, dword [esp + 0x4c]
cmovae esi, edx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
add edx, 0xffffffff
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x5c]
adc esi, 0xffffffff
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 0x84]
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x80]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], esi
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x64]
cmp edx, eax
ja 0x10086130
jb 0x10085a0b
cmp esi, dword [esp + 0x8c]
jae 0x10086137
movzx eax, word [ebp + 0x10]
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x3c], eax
jg 0x1008612c
cmp dword [esp + 0x3c], 0
mov edi, dword [esp + 0x20]
jle 0x10085a4a
mov edi, dword [esp + 0x34]
mov ecx, dword [esp + 0x68]
or ecx, dword [edi + 8]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x70]
or ecx, dword [edi + 0xc]
mov edi, dword [esp + 0x20]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x3c], eax
jge 0x10085a6b
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x3c]
mov eax, dword [eax + 0x18]
mov eax, dword [eax + esi*4]
mov esi, dword [esp + 0x18]
jmp 0x10085a72
mov eax, dword [esp + 0x94]
test dword [eax + 0x24], 0x400
mov dword [esp + 0x34], eax
jne 0x10086126
mov edx, eax
movzx eax, byte [edx + 0x10]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 4]
shl ecx, 4
mov edi, dword [ecx + eax + 0x38]
xor eax, eax
mov dword [esp + 0x44], edi
mov dword [esp + 0x28], eax
cmp dword [esp + 0x2c], eax
jle 0x10085bee
xor esi, esi
mov dword [esp + 0xc], esi
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov dword [esp + 0x48], ecx
cmovae edx, ecx
and ecx, dword [esp + 0x18]
mov eax, edx
mov dword [esp + 0x58], edx
and eax, dword [esp + 0x14]
or ecx, eax
jne 0x10085bce
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 4]
mov esi, dword [esi + eax]
test esi, esi
je 0x10085b12
nop dword [eax]
mov eax, dword [esi + 4]
test eax, 0x1000
je 0x10085b12
test eax, 0x40000
je 0x10085b0b
mov eax, dword [esi + 0x14]
mov eax, dword [eax + 4]
mov esi, dword [eax]
jmp 0x10085b0e
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x10085af0
cmp byte [esi], 0x98
jne 0x10085bce
cmp dword [esi + 0x1c], edi
jne 0x10085bce
mov eax, dword [esp + 0x70]
mov edx, edi
mov ecx, dword [esp + 0x68]
not eax
push 0
push 0x182
not ecx
push eax
movsx eax, word [esi + 0x20]
push ecx
mov ecx, dword [esp + 0x30]
push eax
add ecx, 0x148
call fcn.10082080
mov edi, eax
add esp, 0x14
test edi, edi
je 0x10085bca
test byte [edi + 0x12], 0x82
je 0x10085bb2
cmp word [esi + 0x20], 0
jl 0x10085bb2
mov eax, dword [esp + 0x38]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0xc]
mov edx, dword [edx + eax]
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
call fcn.1004c8a0
test eax, eax
jne 0x10085b89
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 8]
mov esi, dword [eax]
mov eax, dword [esp + 0x20]
mov edx, dword [edi]
mov ecx, dword [eax]
call fcn.1004c8a0
test eax, eax
jne 0x10085ba3
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 8]
push dword [eax]
push esi
call fcn.1001eb60
add esp, 8
test eax, eax
jne 0x10085bca
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
or eax, dword [esp + 0x48]
or edx, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x28]
add dword [esp + 0xc], 0x18
inc eax
mov esi, dword [esp + 0xc]
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x2c]
jl 0x10085ab0
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 0x24]
test eax, 0x1000
jne 0x10085f4d
test eax, 0x100
je 0x10085c12
xor edi, edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x48], edi
lea eax, [edi + 1]
jmp 0x10085c40
mov edi, dword [edx + 0x1c]
mov dword [esp + 0x50], edi
test edi, edi
je 0x1008594d
test byte [edi + 0x38], 4
jne 0x1008594d
movzx eax, word [edi + 0x32]
cmp byte [edi + 0x36], 0
mov dword [esp + 0x48], eax
movzx eax, word [edi + 0x34]
setne byte [esp + 0x24]
movzx eax, ax
xor cl, cl
xor esi, esi
mov byte [esp + 0x1f], 0
mov byte [esp + 0x1e], 0
mov dword [esp + 0x28], ecx
mov dword [esp + 0x54], esi
mov dword [esp + 0x80], eax
test eax, eax
je 0x10085f4d
mov dword [esp + 0x78], esi
nop dword [eax]
movzx ecx, word [edx + 0x18]
cmp esi, ecx
jge 0x10085cad
cmp word [edx + 0x2a], 0
jne 0x10085cad
mov eax, dword [edx + 0x30]
mov eax, dword [eax + esi*4]
movzx eax, word [eax + 0x12]
test eax, 0x182
je 0x10085cad
test eax, 0x100
mov ecx, 0
mov eax, dword [esp + 0x24]
movzx eax, al
cmove ecx, eax
mov byte [esp + 0x24], cl
jmp 0x10085f2d
test edi, edi
je 0x10085cd3
mov eax, dword [edi + 4]
movsx edx, word [eax + esi*2]
mov eax, dword [edi + 0x1c]
mov dword [esp + 0xc], edx
mov al, byte [esi + eax]
mov byte [esp + 0x13], al
mov eax, dword [edi + 0xc]
movsx eax, word [eax + 0x20]
cmp edx, eax
jne 0x10085cdf
jmp 0x10085cd8
mov byte [esp + 0x13], 0
or edx, 0xffffffff
mov dword [esp + 0xc], edx
cmp byte [esp + 0x24], 0
je 0x10085d0c
test edx, edx
js 0x10085d0c
cmp esi, ecx
jl 0x10085d0c
mov eax, dword [edi + 0xc]
lea ecx, [edx + edx*2]
mov edx, dword [esp + 0x24]
xor esi, esi
movzx edx, dl
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0x14], 0
cmove edx, esi
mov dword [esp + 0x24], edx
xor esi, esi
mov byte [esp + 0xb], 1
xor edi, edi
mov dword [esp + 0x58], edi
nop dword [eax]
cmp esi, dword [esp + 0x2c]
jge 0x10085e5b
xor edx, edx
xor ecx, ecx
mov eax, esi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x18]
and ecx, dword [esp + 0x14]
or edx, ecx
jne 0x10085e47
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 4]
mov ecx, dword [edi + ecx]
test ecx, ecx
je 0x10085d82
nop
mov eax, dword [ecx + 4]
test eax, 0x1000
je 0x10085d82
test eax, 0x40000
je 0x10085d7b
mov eax, dword [ecx + 0x14]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx]
jmp 0x10085d7e
mov ecx, dword [ecx + 0xc]
test ecx, ecx
jne 0x10085d60
mov eax, dword [ebp + 0xc]
and eax, 0x300
neg eax
sbb al, al
and al, byte [esp + 0xb]
cmp dword [esp + 0xc], 0xffffffff
mov dl, al
mov byte [esp + 0xb], dl
mov byte [esp + 0x33], al
jl 0x10085dd1
cmp byte [ecx], 0x98
jne 0x10085e4b
mov edi, dword [esp + 0x44]
cmp dword [ecx + 0x1c], edi
mov edi, dword [esp + 0x58]
mov byte [esp + 0xb], dl
jne 0x10085e4b
movsx eax, word [ecx + 0x20]
mov byte [esp + 0xb], dl
cmp eax, dword [esp + 0xc]
jne 0x10085e4b
jmp 0x10085df6
mov eax, dword [esp + 0x50]
push dword [esp + 0x44]
mov byte [esp + 0xf], dl
mov eax, dword [eax + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x7c]
mov edx, dword [edx + eax]
call fcn.10052480
add esp, 4
test eax, eax
jne 0x10085e47
cmp dword [esp + 0xc], 0
jl 0x10085e89
mov eax, dword [esp + 0x38]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x20]
mov edx, dword [edx + edi]
mov ecx, dword [eax]
call fcn.1004c8a0
mov ecx, eax
test ecx, ecx
jne 0x10085e23
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 8]
mov al, byte [esp + 0x33]
mov edx, dword [esp + 0x54]
mov byte [esp + 0xb], al
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x20]
push dword [eax + edx*4]
push dword [ecx]
call fcn.1001eb60
add esp, 8
test eax, eax
je 0x10085e89
mov dl, byte [esp + 0xb]
add edi, 0x18
inc esi
mov dword [esp + 0x58], edi
test dl, dl
jne 0x10085d20
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x10085e6e
mov eax, dword [esp + 0x48]
movzx eax, ax
cmp ecx, eax
jge 0x10085e73
mov byte [esp + 0x24], 0
mov ecx, dword [esp + 0x28]
test cl, cl
je 0x10085f4d
mov byte [esp + 0x24], 1
jmp 0x10085f58
test dword [ebp + 0xc], 0x100
jne 0x10085ef0
cmp byte [esp + 0x1f], 0
lea ecx, [esi + esi*2]
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 4]
je 0x10085eb8
mov dl, byte [esp + 0x13]
xor dl, byte [esp + 0x1e]
cmp dl, byte [eax + ecx*8 + 0xc]
sete al
test al, al
je 0x10085e5b
jmp 0x10085ef0
mov dh, byte [eax + ecx*8 + 0xc]
xor dh, byte [esp + 0x13]
mov byte [esp + 0x1e], dh
je 0x10085eeb
mov eax, dword [esp + 0x3c]
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [esp + 0x98]
cmovae edx, ecx
or dword [eax], ecx
or dword [eax + 4], edx
mov byte [esp + 0x1f], 1
cmp dword [esp + 0xc], 0
mov eax, 1
mov edx, dword [esp + 0x28]
movzx edx, dl
cmovl edx, eax
xor eax, eax
bts eax, esi
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x34]
xor ecx, ecx
cmp esi, 0x20
cmovae ecx, eax
xor eax, ecx
cmp esi, 0x40
mov esi, dword [esp + 0x54]
cmovae ecx, eax
or dword [esp + 0x18], eax
or dword [esp + 0x14], ecx
add dword [esp + 0x78], 0x18
inc esi
mov dword [esp + 0x54], esi
cmp esi, dword [esp + 0x80]
jge 0x10085e73
mov edi, dword [esp + 0x50]
jmp 0x10085c70
cmp byte [esp + 0x24], 0
je 0x1008610a
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x6c]
or ecx, dword [eax + 8]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x40]
or ecx, dword [eax + 0xc]
xor eax, eax
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x48], eax
test ecx, ecx
jle 0x1008610e
xor esi, esi
mov dword [esp + 0x28], esi
nop word [eax + eax]
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov dword [esp + 0x80], ecx
cmovae edx, ecx
and ecx, dword [esp + 0x18]
mov eax, edx
mov dword [esp + 0x58], edx
and eax, dword [esp + 0x14]
or ecx, eax
jne 0x100860ea
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 4]
mov esi, dword [esi + eax]
mov eax, dword [esp + 0x20]
test esi, esi
jne 0x10085feb
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov eax, dword [esp + 0x78]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0xc], eax
jmp 0x10086055
cmp byte [esi], 0x98
lea ecx, [eax + 0x44]
jne 0x10086001
mov edx, dword [esi + 0x1c]
call fcn.10081cf0
mov ecx, eax
mov edi, edx
jmp 0x1008604b
mov edx, dword [esi + 0x10]
call fcn.10081940
mov ecx, dword [esp + 0x20]
mov edi, edx
mov edx, dword [esi + 0xc]
mov dword [esp + 0xc], eax
lea ecx, [ecx + 0x44]
call fcn.10081940
mov ecx, dword [esp + 0x20]
or edi, edx
or dword [esp + 0xc], eax
test dword [esi + 4], 0x800
mov edx, dword [esi + 0x14]
lea ecx, [ecx + 0x44]
je 0x1008603e
call fcn.10080b70
jmp 0x10086043
call fcn.100819d0
mov ecx, dword [esp + 0xc]
or ecx, eax
or edi, edx
mov eax, ecx
mov dword [esp + 0xc], ecx
or eax, edi
jne 0x100860b9
mov dword [esp + 0xb8], 0
xorps xmm0, xmm0
movaps xmmword [esp + 0xa0], xmm0
movq qword [esp + 0xb0], xmm0
mov byte [esp + 0xb4], 1
mov dword [esp + 0xa4], 0x1004e550
mov dword [esp + 0xa8], 0x1004e660
mov dword [esp + 0xb8], 0
test esi, esi
je 0x100860b9
mov edx, esi
lea ecx, [esp + 0xa0]
call fcn.1004a820
cmp byte [esp + 0xb4], 0
je 0x100860ea
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x40]
not ecx
and ecx, dword [esp + 0xc]
not eax
and eax, edi
or ecx, eax
jne 0x100860ea
mov eax, dword [esp + 0x18]
or eax, dword [esp + 0x80]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
or eax, dword [esp + 0x58]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x48]
add dword [esp + 0x28], 0x18
inc eax
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
mov dword [esp + 0x48], eax
cmp eax, ecx
jl 0x10085f90
jmp 0x1008610e
mov ecx, dword [esp + 0x2c]
inc dword [esp + 0x3c]
cmp byte [esp + 0x24], 0
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
je 0x1008612c
jmp 0x100859f0
cmp byte [eax + 0x1d], 0
jne 0x1008613d
mov eax, dword [esp + 0x64]
cmp esi, dword [esp + 0x8c]
jne 0x10086158
cmp edx, eax
jne 0x10086158
mov al, byte [esp + 0x9c]
pop edi
pop esi
mov ecx, dword [esp + 0xc4]
xor ecx, esp
call fcn.100a66bf
mov esp, ebp
pop ebp
ret
cmp byte [esp + 0x24], 0
jne 0x100861cc
lea eax, [ecx - 1]
mov dword [esp + 0x40], eax
test eax, eax
jle 0x1008594d
mov edi, dword [esp + 0x14]
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
mov eax, ecx
adc edx, 0xffffffff
and eax, esi
mov esi, edx
and esi, edi
cmp eax, ecx
jne 0x1008619d
cmp esi, edx
je 0x100861b4
mov eax, dword [esp + 0x40]
dec eax
mov dword [esp + 0x40], eax
test eax, eax
jle 0x1008594d
mov esi, dword [esp + 0x18]
jmp 0x10086172
mov al, byte [esp + 0x40]
pop edi
pop esi
mov ecx, dword [esp + 0xc4]
xor ecx, esp
call fcn.100a66bf
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0xcc]
or al, 0xff
pop edi
pop esi
xor ecx, esp
call fcn.100a66bf
mov esp, ebp
pop ebp
ret