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

Disassembly:
sub esp, 0x10c
mov eax, dword [0x10200e40]
xor eax, esp
mov dword [esp + 0x108], eax
push ebx
mov ebx, dword [esp + 0x120]
push ebp
mov ebp, dword [esp + 0x120]
push esi
mov esi, dword [esp + 0x11c]
push edi
mov edi, dword [esp + 0x124]
mov dword [esp + 0x18], esi
cmp dword [esi + 0x78], 0xffffffff
je 0x1009dce3
test bl, 8
jne 0x1009dce3
mov edx, dword [edi + 4]
test dword [edx + 4], 0x7fff0000
jne 0x1009dce3
test dword [edx + 8], 0x8000
jne 0x1009dce3
mov eax, dword [esi + 0x10]
mov ecx, dword [edx + 0x21c]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x14]
mov dword [esp + 0x20], eax
lea eax, [esp + 0x108]
push eax
lea eax, [edi + 0x4c]
push eax
push dword [edx + 0x68]
mov eax, dword [ecx + 0x48]
push ebx
push ebp
push dword [esi + 0x78]
push edx
call eax
mov edx, eax
add esp, 0x1c
test edx, edx
jne 0x1009d9d7
movzx ecx, word [esp + 0x10a]
mov dword [edi + 0x6c], eax
movzx eax, word [esp + 0x108]
shl eax, 6
mov dword [edi + 0x1c], eax
shl ecx, 6
mov dword [edi + 0x18], ecx
movsx ecx, word [esp + 0x10c]
mov eax, ecx
mov dword [edi + 0x48], 0x62697473
shl eax, 6
mov dword [edi + 0x20], eax
movsx eax, word [esp + 0x10e]
shl eax, 6
mov dword [edi + 0x24], eax
movzx eax, word [esp + 0x110]
shl eax, 6
mov dword [edi + 0x28], eax
movsx eax, word [esp + 0x112]
shl eax, 6
mov dword [edi + 0x2c], eax
movsx eax, word [esp + 0x114]
shl eax, 6
mov dword [edi + 0x30], eax
movzx eax, word [esp + 0x116]
shl eax, 6
mov dword [edi + 0x34], eax
test bl, 0x10
je 0x1009d9c9
movsx eax, word [esp + 0x112]
mov dword [edi + 0x64], eax
movsx eax, word [esp + 0x114]
jmp 0x1009d9d4
movsx eax, word [esp + 0x10e]
mov dword [edi + 0x64], ecx
mov dword [edi + 0x68], eax
mov eax, dword [edi + 4]
cmp dl, 0x9d
jne 0x1009db59
test byte [eax + 8], 1
mov dword [esp + 0x14], eax
jne 0x1009dce3
mov dword [esp + 0x1c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x18], 0
cmp dword [eax + 0x2f0], 0
je 0x1009db6c
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x20]
push ecx
push ebp
push eax
call fcn.1009cee0
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x3c]
push eax
push 0
push ebp
push dword [esp + 0x34]
call fcn.1009cf10
xor eax, eax
add esp, 0x24
mov dword [edi + 0x6c], eax
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], eax
movsx eax, word [esp + 0x1c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov dword [edi + 0x20], eax
movzx eax, word [esp + 0x2c]
mov dword [edi + 0x24], 0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov dword [edi + 0x28], eax
movsx eax, word [esp + 0x28]
mov dword [edi + 0x2c], 0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov dword [edi + 0x30], eax
movzx eax, word [esp + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov dword [edi + 0x34], eax
xor eax, eax
mov dword [edi + 0x48], 0x62697473
mov byte [edi + 0x5e], 1
mov dword [edi + 0x64], 0
mov dword [edi + 0x68], 0
jmp 0x1009df3e
mov dword [esp + 0x10], eax
mov eax, dword [eax + 8]
test edx, edx
je 0x1009db73
test al, 1
jne 0x1009dce3
mov eax, edx
jmp 0x1009df3e
test eax, 0x20001
je 0x1009dcdc
push 1
push ebx
push edi
lea eax, [esp + 0x3c]
push esi
push eax
call fcn.100a6550
push 1
push 0
lea eax, [esp + 0x4c]
push ebp
push eax
call fcn.100a4650
lea eax, [esp + 0x54]
push eax
call fcn.100a6530
mov eax, dword [esp + 0x94]
add esp, 0x28
mov dword [edi + 0x38], eax
mov eax, dword [esp + 0xe0]
mov dword [edi + 0x3c], eax
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x31c], 3
jne 0x1009dc60
cmp word [esp + 0x50], 0
jle 0x1009dc60
test bl, 0x10
je 0x1009dbf0
mov eax, dword [esp + 0x54]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xdc]
jmp 0x1009dbfc
mov eax, dword [esp + 0x64]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
sar eax, 6
add dword [edi + 0x64], eax
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
sar eax, 6
add dword [edi + 0x68], eax
cmp dword [edi + 0x28], 0
jne 0x1009dc9e
mov eax, dword [edi + 0x38]
test eax, eax
je 0x1009dc9e
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov dword [edi + 0x28], eax
cmp dword [edi + 0x34], 0
jne 0x1009dcdc
mov eax, dword [edi + 0x3c]
test eax, eax
je 0x1009dcdc
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov dword [edi + 0x34], eax
xor eax, eax
jmp 0x1009df3e
test ebx, 0x4000
je 0x1009dcf5
mov esi, 6
jmp 0x1009df3c
mov eax, ebx
and eax, 1
mov dword [esp + 0x14], eax
jne 0x1009dd10
cmp byte [esi + 0x70], 0
jne 0x1009dd10
mov esi, 0x24
jmp 0x1009df3c
test ebx, 0x100000
je 0x1009dde0
mov eax, dword [edi + 4]
cmp dword [eax + 0x36c], 0
je 0x1009dde0
mov eax, dword [eax + 0x21c]
mov dword [esp + 0x10], eax
push ebp
push edi
mov eax, dword [eax + 0xb4]
call eax
add esp, 8
test eax, eax
jne 0x1009dde0
mov ebx, dword [esp + 0x10]
lea eax, [esp + 0x1c]
mov esi, dword [edi + 4]
push eax
lea eax, [esp + 0x24]
mov dword [edi + 0x48], 0x53564720
push eax
mov eax, dword [ebx + 0xa0]
push ebp
push 0
push esi
call eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x3c]
push eax
mov eax, dword [ebx + 0xa0]
push ebp
push 1
push esi
call eax
mov ecx, dword [edi + 4]
movzx eax, word [ecx + 0x44]
push eax
mov eax, dword [ecx + 0x58]
movzx eax, word [eax + 0xc]
push eax
movzx eax, word [esp + 0x4c]
push eax
call fcn.1008a1a0
movzx eax, ax
mov dword [esp + 0x50], eax
mov eax, dword [edi + 4]
movzx ecx, word [eax + 0x44]
mov eax, dword [eax + 0x58]
push ecx
movzx edx, word [eax + 0xe]
movzx eax, word [esp + 0x64]
push edx
push eax
call fcn.1008a1a0
movzx ecx, ax
add esp, 0x40
movzx eax, word [esp + 0x1c]
shl eax, 6
shl ecx, 6
mov dword [edi + 0x28], eax
xor eax, eax
mov dword [edi + 0x34], ecx
jmp 0x1009df3e
test ebx, 0x800000
jne 0x1009dceb
push 0
push ebx
push edi
lea eax, [esp + 0x3c]
push esi
push eax
call fcn.100a6550
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x1009df3c
mov ecx, ebx
and ecx, 0x110
cmp ecx, 0x100
jne 0x1009de32
mov eax, dword [esp + 0x104]
test eax, eax
je 0x1009de32
movzx eax, byte [eax + ebp]
shl eax, 6
mov dword [edi + 0x28], eax
jmp 0x1009df21
push 0
push 0
lea eax, [esp + 0x38]
mov dword [edi + 0x48], 0x6f75746c
push ebp
push eax
mov dword [edi + 0x80], 0
mov dword [edi + 0x7c], 0
call fcn.100a4650
mov esi, eax
add esp, 0x10
test esi, esi
jne 0x1009df05
cmp dword [edi + 0x48], 0x636f6d70
jne 0x1009de87
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x30]
mov dword [edi + 0x80], eax
mov eax, dword [ecx + 0x34]
mov dword [edi + 0x84], eax
jmp 0x1009deb8
mov eax, dword [esp + 0x3c]
lea ecx, [edi + 0x6c]
movups xmm0, xmmword [eax + 0x14]
movups xmmword [ecx], xmm0
mov eax, dword [eax + 0x24]
mov dword [ecx + 0x10], eax
and dword [edi + 0x7c], 0xfffffdff
mov eax, dword [esp + 0x74]
test eax, eax
je 0x1009deb8
push 0
neg eax
push eax
push ecx
call fcn.1008b250
add esp, 0xc
test bl, 2
jne case.0x1009ded8.1
mov eax, dword [esp + 0xcc]
cmp byte [eax + 0x155], 0
je case.0x1009ded8.2
mov eax, dword [eax + 0x158]
cmp eax, 5
ja case.0x1009ded8.2
jmp dword [eax*4 + 0x1009df58]
or dword [edi + 0x7c], 0x20
jmp case.0x1009ded8.1
or dword [edi + 0x7c], 0x30
jmp case.0x1009ded8.1
or dword [edi + 0x7c], 0x10
jmp case.0x1009ded8.1
or dword [edi + 0x7c], 8
lea eax, [esp + 0x30]
push ebp
push eax
call fcn.100a2850
add esp, 8
mov esi, eax
cmp dword [esp + 0x14], 0
jne 0x1009df21
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x2c]
cmp word [eax + 2], 0x18
jae 0x1009df21
or dword [edi + 0x7c], 0x100
mov eax, dword [esp + 0x30]
push 0
push dword [eax + 0x64]
lea eax, [esp + 0x104]
push 0
push eax
call fcn.10089350
add esp, 0x10
mov eax, esi
mov ecx, dword [esp + 0x118]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.10109e3a
add esp, 0x10c
ret