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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xb0
mov esi, esp
mov dword [esi + 0x6c], edx
mov eax, dword [0x101db764]
xor eax, ebp
mov dword [esi + 0xa8], eax
mov edx, dword [ecx + 0x920]
mov eax, dword [ecx + 0x918]
add eax, edx
shl eax, 2
call fcn.1015e8d0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 0x38], eax
mov esp, eax
lea eax, [edx + edx + 3]
and eax, 0xfffffffc
call fcn.1015e8d0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 0x10], eax
mov esp, eax
mov eax, dword [ecx + 0x1094]
sar eax, 6
mov dword [esi + 0x80], eax
mov eax, dword [ecx + 0x1098]
mov dword [esi + 0x54], eax
sar eax, 6
mov dword [esi + 0x84], eax
mov dword [esi + 0x44], eax
cmp dword [ecx + 0x948], 0
je 0x1015979c
xor eax, eax
mov dword [ecx + 0x105e], eax
mov dword [ecx + 0x105a], eax
mov dword [ecx + 0x1066], eax
mov dword [ecx + 0x1062], eax
mov dword [ecx + 0x106e], eax
mov dword [ecx + 0x106a], eax
mov dword [ecx + 0x1076], eax
mov dword [ecx + 0x1072], eax
mov dword [esi + 0xc], ecx
lea edi, [esi + 0x78]
lea eax, [ecx + 4]
lea ecx, [esi + 0x74]
lea edx, [esi + 0x7c]
mov ebx, dword [esi + 0xc]
push dword [ebx + 0x914]
mov ebx, dword [esi + 0xc]
push dword [ebx + 0x91c]
lea ebx, [esi + 0x80]
push ebx
push eax
push edi
lea ebx, [esi + 0x70]
push ebx
call fcn.1015a26c
add esp, 0x18
lea eax, [esi + 0x74]
mov cl, byte [edi]
mov edx, dword [ebx]
mov eax, dword [eax]
sar eax, cl
lea ecx, [esi + 0x7c]
mov cl, byte [ecx]
sar edx, cl
xor ecx, ecx
cmp eax, edx
mov eax, dword [esi + 0xc]
setl cl
xor edi, edi
mov edx, dword [eax + 0x10a0]
mov eax, dword [esi + 0xc]
sub edx, ecx
mov ecx, 2
imul edx, dword [eax + 0x10a4]
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 0x1040]
add edx, 0xffffff80
cmovs edx, edi
mov dword [esi + 0x34], edx
xor edx, edx
inc edx
cmp eax, ecx
cmovl edx, eax
mov eax, dword [esi + 0xc]
mov dword [esi + 0x40], edx
cmp dword [eax + 0x1044], ecx
mov eax, 0x101c5de0
mov ecx, 0x101c5de4
cmove ecx, eax
movsx eax, word [ecx + edx*2]
mov dword [esi + 0x2c], eax
mov eax, dword [esi + 0xc]
movzx eax, word [eax + 0x1084]
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0xc]
lea ebx, [eax + 0x105a]
push 0xfd71
mov eax, dword [esi + 0xc]
push dword [eax + 0x924]
push ebx
call fcn.1015d858
add esp, 0xc
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x88]
mov eax, dword [eax + 0x924]
mov dword [esi + 4], eax
lea eax, [eax + eax]
push eax
push ebx
push ecx
call fcn.101613e0
add esp, 0xc
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x1040], edi
mov edi, dword [esi + 0xc]
jne 0x1015993b
cmp dword [edi + 0x1044], 2
jne 0x101598e2
mov ax, 0x4000
mov ecx, 0xfffffff6
sub ax, word [edi + ecx + 0x105a]
add ecx, 2
jne 0x101598b2
cwde
movsx edx, word [edi + 0x1090]
mov ecx, 0xccd
cmp eax, 0xccc
cmovg ecx, eax
movzx eax, cx
imul edx, eax
shr edx, 0xe
mov dword [esi + 0x14], edx
jmp 0x1015993b
push dword [esi + 4]
push ebx
call fcn.1015d8b4
add esp, 8
cmp eax, 0x8000001
mov ecx, 0x8000000
mov edx, dword [esi + 0x2c]
cmovl ecx, eax
mov eax, 0x400000
cmp ecx, 0x3fffff
cmovg eax, ecx
lea ecx, [eax*8]
shr eax, 0xd
movzx ecx, cx
cwde
imul ecx, edx
imul eax, edx
sar ecx, 0x10
add ecx, eax
mov eax, dword [edi + 0x924]
sar ecx, 0xe
mov dword [esi + 0x2c], ecx
mov dword [esi + 4], eax
mov ax, 0x4000
mov dword [esi + 0x14], eax
mov ecx, dword [edi + 0x920]
mov eax, dword [edi + 0x104c]
mov edx, dword [esi + 0x10]
lea ebx, [ecx - 2]
sar eax, 7
mov dword [esi + 0x28], ecx
sub ebx, dword [esi + 4]
inc eax
sar eax, 1
mov dword [esi + 0x24], eax
sub ebx, eax
mov eax, ecx
mov ecx, dword [edi + 0x1080]
sub eax, ebx
lea edx, [edx + ebx*2]
mov dword [esi + 0x30], ebx
mov dword [esi + 0x64], ecx
lea ecx, [edi + ebx*2 + 0x544]
push dword [ebp + 0xc]
push dword [esi + 4]
push eax
lea eax, [esi + 0x88]
push eax
push ecx
push edx
call fcn.1015dc7c
add esp, 0x18
mov edx, dword [edi + 0x1098]
mov eax, edx
neg eax
cmovl eax, edx
test eax, eax
je 0x101599a9
bsr eax, eax
xor eax, 0x1f
jmp 0x101599ae
mov eax, 0x20
lea ecx, [eax - 1]
mov dword [esi + 8], eax
mov eax, 0x1fffffff
shl edx, cl
mov ecx, edx
mov dword [esi + 0x1c], edx
xor edx, edx
sar ecx, 0x10
idiv ecx
movzx edx, word [esi + 0x1c]
mov ebx, eax
movsx eax, bx
mov dword [esi + 0x1c], ebx
sar ebx, 0xf
mov dword [esi + 0x20], eax
imul ecx, eax
inc ebx
imul edx, eax
sar ebx, 1
sar edx, 0x10
add edx, ecx
mov ecx, dword [esi + 0x20]
shl edx, 3
neg edx
movzx eax, dx
imul ebx, edx
sar edx, 0x10
imul eax, ecx
imul edx, ecx
mov ecx, dword [esi + 0x1c]
sar eax, 0x10
shl ecx, 0x10
add ebx, ecx
add ebx, edx
xor edx, edx
add ebx, eax
mov eax, 0x3e
sub eax, dword [esi + 8]
cmp eax, 0x2e
jg 0x10159a3b
mov ecx, 0x2e
mov edx, 0x80000000
sub ecx, eax
mov eax, 0x7fffffff
sar edx, cl
shr eax, cl
cmp edx, eax
jle 0x10159a48
cmp ebx, edx
jle 0x10159a54
jmp 0x10159a5b
lea ecx, [eax - 0x2e]
sar ebx, cl
cmp eax, 0x4e
cmovl edx, ebx
jmp 0x10159a5d
mov dword [esi + 8], edx
cmp ebx, eax
mov edx, eax
jg 0x10159a5b
mov eax, dword [esi + 8]
cmp ebx, eax
cmovl ebx, eax
mov edx, ebx
shl edx, cl
mov ecx, dword [edi + 0x924]
mov ebx, dword [esi + 0x30]
cmp edx, 0x40000000
mov eax, 0x3fffffff
cmovl eax, edx
mov edx, dword [edi + 0x920]
add ebx, ecx
mov dword [esi + 0x18], ecx
cmp ebx, edx
mov dword [esi + 0x3c], edx
jge 0x10159b21
mov ecx, dword [esi + 0x18]
mov edx, dword [esi + 0x24]
mov dword [esi + 8], eax
mov eax, dword [esi + 0x28]
mov ebx, dword [esi + 4]
lea ecx, [ecx + ecx]
lea edx, [edx + edx]
lea ecx, [ecx + eax*2 - 4]
mov eax, dword [esi + 0x28]
sub ecx, edx
lea edx, [ebx + ebx]
sub ecx, edx
add dword [esi + 0x10], ecx
mov ecx, dword [esi + 0x18]
lea ecx, [ecx*4]
lea edx, [ecx + eax*4 - 8]
mov ecx, dword [esi + 0x24]
mov eax, dword [esi + 0x28]
lea ecx, [ecx*4]
sub edx, ecx
lea ecx, [ebx*4]
sub edx, ecx
mov ecx, dword [esi + 0x18]
add edx, dword [esi + 0x38]
lea ecx, [ecx + eax - 2]
mov eax, dword [esi + 8]
sub ecx, dword [esi + 0x24]
sub ecx, ebx
mov dword [esi + 4], ecx
mov ecx, eax
movzx eax, ax
sar ecx, 0x10
mov dword [esi + 8], eax
mov dword [esi + 0x20], ecx
xor ecx, ecx
mov eax, dword [esi + 0x10]
mov ebx, dword [esi + 0x20]
movsx eax, word [eax + ecx*2]
imul ebx, eax
imul eax, dword [esi + 8]
sar eax, 0x10
add eax, ebx
mov dword [edx + ecx*4], eax
mov eax, dword [esi + 4]
lea eax, [eax + ecx + 1]
inc ecx
cmp eax, dword [esi + 0x3c]
jl 0x10159afb
mov eax, dword [edi + 0x914]
test eax, eax
mov dword [esi + 0x50], eax
jle 0x10159d33
mov eax, dword [esi + 0x34]
mov ebx, dword [edi + 0x91c]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0x24]
lea eax, [edi + eax*4 + 4]
mov dword [esi + 8], ebx
mov dword [esi + 0x5c], eax
mov eax, dword [esi + 0x40]
movsx eax, word [eax + eax + 0x101c5ddc]
mov dword [esi + 0x4c], eax
movsx eax, word [esi + 0x2c]
mov dword [esi + 0x48], eax
xor eax, eax
test ebx, ebx
mov dword [esi + 0x58], eax
jle 0x10159cac
movsx eax, dx
mov dword [esi + 0x14], edx
mov edx, dword [esi + 0x38]
movsx ebx, word [edi + 0x1052]
shl ecx, 2
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x28]
mov dword [esi + 0x2c], ebx
movsx ebx, word [edi + 0x1056]
lea eax, [edx + eax*4]
movsx edx, word [edi + 0x1050]
mov dword [esi + 0x1c], eax
sub eax, ecx
xor ecx, ecx
mov dword [esi + 4], eax
mov dword [esi + 0x40], ebx
mov dword [esi + 0x30], edx
movsx edx, word [edi + 0x1054]
mov dword [esi + 0x34], edx
movsx edx, word [edi + 0x1058]
mov dword [esi + 0x60], edx
mov eax, dword [esi + 4]
mov edx, ecx
mov edi, dword [esi + 0x30]
mov ebx, edx
mov dword [esi + 0x10], edx
mov ecx, dword [eax + ecx*4 + 8]
movzx edx, cx
sar ecx, 0x10
imul edx, edi
imul ecx, edi
sar edx, 0x10
add edx, ecx
mov ecx, dword [eax + ebx*4 + 4]
mov ebx, dword [esi + 0x2c]
movzx edi, cx
sar ecx, 0x10
imul ecx, ebx
imul edi, ebx
mov ebx, dword [esi + 0x34]
add ecx, edx
sar edi, 0x10
add edi, ecx
mov ecx, dword [esi + 0x10]
mov ecx, dword [eax + ecx*4]
mov eax, dword [esi + 0x10]
movzx edx, cx
sar ecx, 0x10
imul ecx, ebx
imul edx, ebx
mov ebx, dword [esi + 0x40]
add ecx, edi
sar edx, 0x10
add edx, ecx
mov ecx, dword [esi + 4]
mov ecx, dword [ecx + eax*4 - 4]
movzx edi, cx
sar ecx, 0x10
imul ecx, ebx
imul edi, ebx
mov ebx, dword [esi + 0x60]
add ecx, edx
mov edx, dword [esi + 4]
sar edi, 0x10
add edi, ecx
mov edx, dword [edx + eax*4 - 8]
mov eax, dword [esi + 0x64]
movzx ecx, dx
sar edx, 0x10
imul eax, eax, 0xbb38435
imul edx, ebx
imul ecx, ebx
add eax, 0x3619636b
add edx, edi
mov edi, dword [esi + 0x5c]
sar ecx, 0x10
mov dword [esi + 0x64], eax
add ecx, edx
mov edx, eax
shr edx, 0x19
mov eax, dword [edi + edx*4]
mov edx, dword [esi + 0x20]
mov edi, eax
sar edi, 0x10
imul edi, edx
add edi, ecx
movzx ecx, ax
imul ecx, edx
mov edx, dword [esi + 0x1c]
sar ecx, 0x10
add ecx, edi
mov edi, dword [esi + 0x10]
lea ecx, [ecx*4 + 8]
mov dword [edx + edi*4], ecx
inc edi
cmp edi, dword [esi + 8]
mov ecx, edi
jl 0x10159bbe
mov edi, dword [esi + 0xc]
mov edx, dword [esi + 0x14]
add dword [esi + 0x28], ecx
mov ebx, dword [esi + 0x4c]
mov eax, 0xfffffff6
movsx ecx, word [edi + eax + 0x105a]
imul ecx, ebx
shr ecx, 0xf
mov word [edi + eax + 0x105a], cx
add eax, 2
jne 0x10159cb4
cmp byte [edi + 0xacd], 0
je 0x10159ce2
movsx edx, dx
imul edx, dword [esi + 0x48]
shr edx, 0xf
mov eax, dword [edi + 0x104c]
mov ebx, dword [esi + 8]
mov ecx, eax
sar ecx, 0x10
imul ecx, ecx, 0x28f
add ecx, eax
movzx eax, ax
imul eax, eax, 0x28f
shr eax, 0x10
add ecx, eax
movsx eax, word [edi + 0x90c]
shl eax, 9
lea eax, [eax + eax*8]
cmp ecx, eax
cmovg ecx, eax
mov eax, dword [esi + 0x58]
mov dword [edi + 0x104c], ecx
sar ecx, 7
inc ecx
sar ecx, 1
inc eax
cmp eax, dword [esi + 0x50]
jl 0x10159b62
jmp 0x10159d39
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0x24]
mov ebx, dword [esi + 0x38]
mov eax, dword [esi + 0x3c]
mov dword [esi + 0x24], ecx
mov dword [esi + 0x14], edx
lea ecx, [ebx + eax*4 - 0x40]
lea eax, [edi + 0x504]
push 0x40
mov dword [esi + 0x68], eax
push eax
mov dword [esi + 8], ecx
push ecx
call fcn.101613e0
add esp, 0xc
mov ecx, dword [edi + 0x918]
test ecx, ecx
jle 0x1015a052
mov eax, dword [esi + 0x3c]
lea edx, [esi + 0x9c]
mov dword [esi + 4], 0
lea ecx, [ebx + eax*4 - 0x2c]
movsx eax, word [esi + 0x44]
mov ebx, dword [ecx + 0x28]
mov dword [esi + 0x34], ecx
mov dword [esi + 0x40], eax
mov eax, dword [esi + 0x54]
sar eax, 0x15
inc eax
sar eax, 1
mov dword [esi + 0x54], eax
movsx eax, word [edx - 0x14]
mov dword [esi + 0x60], eax
movsx eax, word [edx - 0x12]
mov dword [esi + 0x5c], eax
movsx eax, word [edx - 0x10]
mov dword [esi + 0x58], eax
movsx eax, word [edx - 0xe]
mov dword [esi + 0x28], eax
movsx eax, word [edx - 0xc]
mov dword [esi + 0x50], eax
movsx eax, word [edx - 0xa]
mov dword [esi + 0x4c], eax
movsx eax, word [edx - 8]
mov dword [esi + 0x3c], eax
movsx eax, word [edx - 6]
mov dword [esi + 0x38], eax
movsx eax, word [edx - 4]
mov dword [esi + 0x48], eax
movsx eax, word [edx - 2]
mov edx, dword [ecx + 0x18]
mov dword [esi + 0x44], eax
mov dword [esi + 0x20], edx
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 0x20]
mov ecx, dword [ecx + 0x10]
mov dword [esi + 0x1c], ecx
mov ecx, dword [esi + 0x18]
mov dword [esi + 0x30], edx
jmp 0x10159e09
mov ecx, dword [edi + 0x924]
add dword [esi + 0x34], 4
mov eax, dword [esi + 0x2c]
mov edi, dword [esi + 0x60]
mov edx, ebx
mov dword [esi + 0x18], ecx
sar ecx, 1
sar edx, 0x10
imul edx, edi
add edx, ecx
movzx ecx, bx
mov ebx, eax
mov eax, dword [esi + 4]
imul ecx, edi
sar ecx, 0x10
add ecx, edx
mov edx, dword [esi + 8]
mov eax, dword [edx + eax*4 + 0x38]
mov edx, dword [esi + 0x5c]
mov edi, eax
mov dword [esi + 0x2c], eax
sar edi, 0x10
imul edi, edx
add edi, ecx
movzx ecx, ax
mov eax, dword [esi + 0x58]
imul ecx, edx
mov edx, dword [esi + 8]
sar ecx, 0x10
add ecx, edi
mov edi, ebx
sar edi, 0x10
imul edi, eax
add edi, ecx
movzx ecx, bx
imul ecx, eax
mov eax, dword [esi + 0x20]
sar ecx, 0x10
add ecx, edi
mov dword [esi + 0x10], eax
mov eax, dword [esi + 4]
mov ebx, dword [edx + eax*4 + 0x30]
mov eax, dword [esi + 0x28]
mov edi, ebx
mov dword [esi + 0x20], ebx
sar edi, 0x10
imul edi, eax
add edi, ecx
movzx ecx, bx
mov ebx, dword [esi + 0x10]
imul ecx, eax
mov eax, dword [esi + 0x50]
sar ecx, 0x10
add ecx, edi
mov edi, ebx
sar edi, 0x10
imul edi, eax
add edi, ecx
movzx ecx, bx
imul ecx, eax
mov eax, dword [esi + 0x1c]
sar ecx, 0x10
add ecx, edi
mov dword [esi + 0x10], eax
mov eax, dword [esi + 4]
mov ebx, dword [edx + eax*4 + 0x28]
mov eax, dword [esi + 0x4c]
mov edx, dword [esi + 0x10]
mov edi, ebx
mov dword [esi + 0x1c], ebx
sar edi, 0x10
imul edi, eax
add edi, ecx
movzx ecx, bx
imul ecx, eax
mov eax, dword [esi + 0x3c]
sar ecx, 0x10
add ecx, edi
mov edi, edx
sar edi, 0x10
imul edi, eax
add edi, ecx
movzx ecx, dx
mov edx, dword [esi + 0x30]
imul ecx, eax
mov eax, dword [esi + 4]
sar ecx, 0x10
add ecx, edi
mov edi, dword [esi + 8]
mov ebx, dword [edi + eax*4 + 0x20]
mov eax, dword [esi + 0x38]
mov edi, ebx
mov dword [esi + 0x30], ebx
sar edi, 0x10
imul edi, eax
add edi, ecx
movzx ecx, bx
mov ebx, dword [esi + 0x44]
imul ecx, eax
mov eax, dword [esi + 0x48]
sar ecx, 0x10
add ecx, edi
mov edi, edx
sar edi, 0x10
imul edi, eax
add edi, ecx
movzx ecx, dx
mov edx, dword [esi + 8]
imul ecx, eax
mov eax, dword [esi + 4]
sar ecx, 0x10
add ecx, edi
mov edx, dword [edx + eax*4 + 0x18]
mov eax, dword [esi + 0x18]
mov edi, edx
sar edi, 0x10
imul edi, ebx
add edi, ecx
movzx ecx, dx
imul ecx, ebx
sar ecx, 0x10
add ecx, edi
cmp eax, 0xb
jl 0x10159f8e
mov edx, dword [esi + 0x34]
add eax, 0xfffffff6
lea ebx, [esi + 0x9c]
mov dword [esi + 0x18], eax
mov edi, dword [edx]
movsx eax, word [ebx]
add edx, 0xfffffffc
add ebx, 2
mov dword [esi + 0x10], edi
sar edi, 0x10
imul edi, eax
add edi, ecx
movzx ecx, word [esi + 0x10]
imul ecx, eax
sar ecx, 0x10
add ecx, edi
dec dword [esi + 0x18]
jne 0x10159f67
mov eax, dword [esi + 8]
mov edx, dword [esi + 4]
cmp ecx, 0xf7ffffff
mov edx, dword [eax + edx*4 + 0x40]
mov eax, 0xf8000000
cmovle ecx, eax
mov eax, 0x7ffffff
cmp ecx, 0x8000000
cmovge ecx, eax
shl ecx, 4
mov ebx, edx
add ebx, ecx
js 0x10159fc9
test edx, ecx
mov eax, 0x80000000
cmovs ebx, eax
jmp 0x10159fd3
or edx, ecx
mov eax, 0x7fffffff
cmovns ebx, eax
mov ecx, ebx
mov edx, dword [esi + 0x40]
mov eax, ebx
mov edi, dword [esi + 0xc]
imul ecx, dword [esi + 0x54]
sar eax, 0x10
imul eax, edx
add ecx, eax
movzx eax, bx
imul eax, edx
mov edx, 0xffff8000
sar eax, 0x10
add ecx, eax
mov eax, ecx
sar eax, 7
inc eax
sar eax, 1
cmp ecx, 0xff7fff80
cmovl eax, edx
cmp ecx, 0x7fff7f
mov ecx, dword [esi + 8]
mov edx, dword [esi + 4]
mov dword [ecx + edx*4 + 0x40], ebx
mov ecx, 0x7fff
cmovg eax, ecx
mov ecx, 0xffff8000
cmp eax, 0xffff7fff
cmovle eax, ecx
mov ecx, 0x7fff
cmp eax, ecx
cmovge eax, ecx
mov ecx, dword [ebp + 8]
mov word [ecx + edx*2], ax
inc edx
mov ecx, dword [edi + 0x918]
mov dword [esi + 4], edx
cmp edx, ecx
jl 0x10159dfc
mov eax, dword [esi + 8]
lea eax, [eax + ecx*4]
push 0x40
push eax
push dword [esi + 0x68]
call fcn.101613e0
add esp, 0xc
mov eax, dword [esi + 0x64]
movd xmm0, dword [esi + 0x24]
mov ecx, dword [esi + 0x6c]
mov dword [edi + 0x1080], eax
mov eax, dword [esi + 0x14]
pshufd xmm0, xmm0, 0
mov word [edi + 0x1084], ax
mov eax, 0xfffffff0
movdqu xmmword [ecx + eax + 0x10], xmm0
add eax, 0x10
jne 0x1015a08b
mov ecx, dword [esi + 0xa8]
xor ecx, ebp
call fcn.1015e65c
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret