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

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x78c
mov edi, ecx
mov ebp, eax
mov ecx, dword [ebp + 0xbc]
mov dword [esp + 0x5c], edx
mov edx, dword [edx + 0xf0]
mov dword [esp + 0x60], ecx
mov dword [esp + 0x58], edx
mov edx, dword [ebp + 0xc4]
mov dword [esp + 0x80], edx
mov eax, ecx
shr eax, 1
lea ebx, [ecx + ecx]
mov dword [esp + 0x64], eax
add ebx, ebx
add ebx, ebx
mov dword [esp + 0x68], ebx
mov esi, edi
shl esi, 4
mov ebx, dword [esp + 0x7ac]
add esi, edx
mov dword [esp + 0x6c], esi
mov edx, ebx
shl edx, 4
imul edx, ecx
mov ecx, dword [ebp + 0xc8]
lea ebx, [ebx + ebx]
mov dword [esp + 0x70], edx
lea edx, [esi + edx]
mov dword [esp + 0x74], edx
lea edx, [edi + edi]
add edx, edx
add edx, edx
add ebx, ebx
add ebx, ebx
imul ebx, eax
add ecx, edx
add ecx, ebx
mov eax, dword [esp + 0x80]
mov dword [esp + 0x78], ecx
mov ecx, dword [ebp + 0xcc]
add ecx, edx
add ecx, ebx
mov edx, dword [esp + 0x5c]
mov edx, dword [edx + 0xec]
mov dword [esp + 0x7c], ecx
test edx, edx
je 0x10016bb5
cmp edx, 1
je 0x10016bb5
mov ecx, dword [esp + 0x5c]
mov ebx, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x34], ebx
test ecx, ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], edx
je 0x10016b84
mov edx, dword [esp + 0x2c]
mov esi, ebx
add esi, 0x80000000
adc esi, 0x80000000
add edx, 0x80000000
adc edx, 0x80000000
sar esi, 1
mov dword [esp + 0x34], esi
sar edx, 1
mov dword [esp + 0x30], edx
mov esi, dword [esp + 0x34]
mov edx, esi
sar edx, 1
and esi, 3
add edx, dword [esi*4 + 0x1008ba40]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov edx, esi
sar edx, 1
and esi, 3
add edx, dword [esi*4 + 0x1008ba40]
mov dword [esp + 0x38], edx
jmp 0x10016cfa
mov edx, dword [esp + 0x5c]
mov ecx, dword [ebp + 0x18]
mov ebx, dword [edx]
test ecx, ecx
je 0x10016c27
mov esi, dword [edx + 8]
mov dword [esp + 0x80], eax
mov eax, dword [edx + 0x18]
mov dword [esp + 0x84], edi
mov edi, dword [edx + 0x10]
mov edx, ebx
add edx, 0x80000000
adc edx, 0x80000000
add esi, 0x80000000
adc esi, 0x80000000
sar edx, 1
add edi, 0x80000000
adc edi, 0x80000000
sar esi, 1
add edx, esi
sar edi, 1
add edx, edi
mov edi, dword [esp + 0x84]
add eax, 0x80000000
adc eax, 0x80000000
sar eax, 1
add edx, eax
mov eax, dword [esp + 0x80]
jmp 0x10016c34
mov esi, edx
mov edx, dword [esi + 8]
add edx, ebx
add edx, dword [esi + 0x10]
add edx, dword [esi + 0x18]
mov esi, edx
sar esi, 3
and edx, 0xf
add esi, dword [edx*4 + 0x1008b9e0]
test ecx, ecx
mov dword [esp + 0x40], esi
je 0x10016cbd
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x5c]
mov edx, dword [eax + 4]
mov esi, dword [eax + 0xc]
mov dword [esp + 0x84], edi
mov edi, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x2c], edx
add edx, 0x80000000
adc edx, 0x80000000
add esi, 0x80000000
adc esi, 0x80000000
sar edx, 1
add edi, 0x80000000
adc edi, 0x80000000
sar esi, 1
add edx, esi
sar edi, 1
add edx, edi
mov edi, dword [esp + 0x84]
add eax, 0x80000000
adc eax, 0x80000000
sar eax, 1
add edx, eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x30], edx
jmp 0x10016ce5
mov esi, dword [esp + 0x5c]
mov edx, dword [esi + 0xc]
mov dword [esp + 0x84], edi
mov edi, dword [esi + 4]
add edx, edi
add edx, dword [esi + 0x14]
add edx, dword [esi + 0x1c]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x84]
mov dword [esp + 0x30], edx
mov esi, edx
mov edx, esi
sar edx, 3
and esi, 0xf
add edx, dword [esi*4 + 0x1008b9e0]
mov dword [esp + 0x38], edx
test ecx, ecx
je 0x10016d9e
movzx edx, byte [esp + 0x7bc]
mov dword [esp + 0x88], ebp
mov dword [esp + 0x84], edi
lea ecx, [edx + edx]
add ecx, ecx
mov dword [esp + 0x28], 0
mov dword [esp + 0x1c], ebx
lea edx, [ecx + ecx]
add edx, ecx
mov ecx, dword [ebp + 0xf4]
add edx, ebp
mov ebp, dword [esp + 0x60]
lea edi, [edi + edi]
add edi, edi
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x7ac]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x24], ebp
add edi, edi
mov ebp, dword [esp + 0x88]
add edi, edi
mov dword [esp + 0x14], edi
lea esi, [edx + edx]
add esi, esi
mov edi, dword [esp + 0x84]
add esi, esi
add esi, esi
mov dword [esp + 0x18], esi
lea edx, [ecx + 0x40]
mov dword [esp + 0xc], edx
lea edx, [ecx + 0x80]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x20], edx
mov edx, dword [ebx + 0xd0]
call fcn.10015b10
jmp 0x10017416
movzx edx, byte [esp + 0x7bc]
mov esi, dword [esp + 0x2c]
lea ecx, [edx + edx]
add ecx, ecx
lea edx, [ecx + ecx]
add edx, ecx
mov dword [esp + 0x4c], edx
lea edx, [ebp + edx]
mov dword [esp + 0x44], edx
mov edx, dword [edx + 0xd0]
lea ecx, [edi + edi]
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x48], ecx
lea ecx, [ecx + ecx]
mov dword [esp + 0x3c], ecx
and esi, 1
mov ecx, dword [esp + 0x7ac]
lea ecx, [ecx + ecx]
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x50], ecx
lea ecx, [ecx + ecx]
mov dword [esp + 0x30], ecx
mov ecx, ebx
and ecx, 1
add ecx, ecx
add ecx, esi
mov dword [esp + 0x34], ecx
je 0x10016f08
cmp ecx, 1
jne 0x10016e77
mov esi, dword [esp + 0x30]
mov dword [esp + 0x88], ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x60]
add ebx, 0x80000000
adc ebx, 0x80000000
lea ecx, [ebp - 1]
shr ecx, 0x1f
sar ebx, 1
lea ecx, [ebp + ecx - 1]
sar ecx, 1
imul ecx, edi
imul esi, edi
mov ebp, dword [esp + 0x3c]
push 0
push edi
add eax, ebp
add eax, esi
add edx, ebp
add esi, edx
add esi, ebx
add esi, ecx
push esi
push eax
mov edi, dword [esp + 0x94]
mov ebp, dword [esp + 0x98]
call dword [0x1031e3c4]
add esp, 0x10
jmp 0x10016f6e
mov esi, dword [esp + 0x3c]
lea ecx, [ebx - 1]
shr ecx, 0x1f
lea ecx, [ebx + ecx - 1]
sar ecx, 1
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x30]
add eax, esi
imul ecx, dword [esp + 0x60]
add edx, esi
cmp ebx, 2
jne 0x10016ed7
mov ebx, dword [esp + 0x2c]
add ebx, 0x80000000
adc ebx, 0x80000000
add eax, ecx
add ecx, edx
add ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x60]
push 0
push edx
sar ebx, 1
imul ebx, edx
add ecx, ebx
push ecx
push eax
call dword [0x1031e3c0]
add esp, 0x10
jmp 0x10016f6e
mov ebx, dword [esp + 0x2c]
lea esi, [ebx - 1]
shr esi, 0x1f
lea ebx, [ebx + esi - 1]
sar ebx, 1
add eax, ecx
add ecx, edx
add ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x60]
imul ebx, edx
add ecx, ebx
push 0
push edx
push ecx
push eax
call dword [0x1031e3c8]
add esp, 0x10
jmp 0x10016f6e
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x88], ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x60]
push edi
add ebx, 0x80000000
adc ebx, 0x80000000
add ecx, 0x80000000
adc ecx, 0x80000000
sar ebx, 1
add eax, ebp
sar ecx, 1
imul ecx, edi
imul esi, edi
add edx, ebp
add eax, esi
add esi, edx
add esi, ebx
add esi, ecx
push esi
push eax
mov edi, dword [esp + 0x90]
mov ebp, dword [esp + 0x94]
call dword [0x1031e3bc]
add esp, 0xc
mov edx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x5c]
mov ecx, dword [ebp + 0xc4]
mov edx, dword [ebp + edx + 0xd0]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x48]
lea edx, [edx + edi*8 + 8]
mov dword [esp + 0x48], edx
mov edx, dword [ebx + 8]
mov ebx, dword [ebx + 0xc]
mov esi, edx
and esi, 1
add esi, esi
mov eax, ebx
and eax, 1
add esi, eax
mov dword [esp + 0x34], esi
je 0x100170b0
cmp esi, 1
jne 0x10017021
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x88], ebp
mov dword [esp + 0x84], edi
add edx, 0x80000000
adc edx, 0x80000000
mov edi, dword [esp + 0x48]
lea eax, [ebx - 1]
sar edx, 1
shr eax, 0x1f
lea ebp, [ebx + eax - 1]
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x60]
imul ebx, eax
sar ebp, 1
imul ebp, eax
add ecx, edi
add ecx, ebx
push 0
push eax
add esi, edi
add ebx, esi
add ebx, edx
add ebx, ebp
push ebx
push ecx
mov edi, dword [esp + 0x94]
mov ebp, dword [esp + 0x98]
call dword [0x1031e3c4]
add esp, 0x10
jmp 0x10017116
mov eax, dword [esp + 0x30]
imul eax, dword [esp + 0x60]
mov dword [esp + 0x30], eax
lea esi, [edx - 1]
shr esi, 0x1f
lea edx, [edx + esi - 1]
mov esi, dword [esp + 0x48]
add dword [esp + 0x2c], esi
sar edx, 1
add ecx, esi
mov esi, dword [esp + 0x34]
cmp esi, 2
jne 0x10017081
mov esi, eax
add ebx, 0x80000000
adc ebx, 0x80000000
add ecx, esi
add esi, dword [esp + 0x2c]
sar ebx, 1
add esi, edx
mov edx, dword [esp + 0x60]
imul ebx, edx
add esi, ebx
push 0
push edx
push esi
push ecx
call dword [0x1031e3c0]
add esp, 0x10
jmp 0x10017116
lea esi, [ebx - 1]
shr esi, 0x1f
lea esi, [ebx + esi - 1]
mov ebx, eax
sar esi, 1
add ecx, ebx
add ebx, dword [esp + 0x2c]
add ebx, edx
mov edx, dword [esp + 0x60]
imul esi, edx
add ebx, esi
push 0
push edx
push ebx
push ecx
call dword [0x1031e3c8]
add esp, 0x10
jmp 0x10017116
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x88], ebp
mov ebp, dword [esp + 0x60]
imul eax, ebp
add edx, 0x80000000
adc edx, 0x80000000
mov dword [esp + 0x84], edi
add ebx, 0x80000000
adc ebx, 0x80000000
mov edi, dword [esp + 0x48]
sar edx, 1
sar ebx, 1
imul ebx, ebp
add ecx, edi
add ecx, eax
push ebp
add esi, edi
add eax, esi
add eax, edx
add eax, ebx
push eax
push ecx
mov edi, dword [esp + 0x90]
mov ebp, dword [esp + 0x94]
call dword [0x1031e3bc]
add esp, 0xc
mov edx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x7ac]
mov esi, dword [ebp + 0xc4]
mov edx, dword [ebp + edx + 0xd0]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x50]
lea ecx, [edx + ebx*8 + 8]
mov edx, dword [esp + 0x5c]
mov ebx, dword [edx + 0x14]
mov eax, ebx
mov dword [esp + 0x34], ecx
mov ecx, dword [edx + 0x10]
mov edx, ecx
and edx, 1
add edx, edx
and eax, 1
add edx, eax
je 0x1001726d
cmp edx, 1
jne 0x100171c0
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x34]
add ecx, 0x80000000
adc ecx, 0x80000000
lea edx, [ebx - 1]
shr edx, 0x1f
sar ecx, 1
lea eax, [ebx + edx - 1]
mov ebx, dword [esp + 0x3c]
mov edx, dword [esp + 0x60]
imul edi, edx
mov dword [esp + 0x34], edi
sar eax, 1
imul eax, edx
add esi, ebx
add ebx, dword [esp + 0x30]
push 0
push edx
add ebx, edi
add ebx, ecx
add ebx, eax
add esi, edi
push ebx
push esi
mov edi, dword [esp + 0x94]
call dword [0x1031e3c4]
add esp, 0x10
jmp 0x100172c7
lea eax, [ecx - 1]
shr eax, 0x1f
lea ecx, [ecx + eax - 1]
mov eax, dword [esp + 0x3c]
sar ecx, 1
add esi, eax
add eax, dword [esp + 0x30]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x34]
imul eax, dword [esp + 0x60]
mov dword [esp + 0x34], eax
cmp edx, 2
jne 0x1001722e
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x60]
push 0
push edi
add ebx, 0x80000000
adc ebx, 0x80000000
add edx, eax
add edx, ecx
sar ebx, 1
imul ebx, edi
add esi, eax
add edx, ebx
push edx
push esi
mov edi, dword [esp + 0x94]
call dword [0x1031e3c0]
add esp, 0x10
jmp 0x100172c7
mov dword [esp + 0x84], edi
mov edi, eax
lea edx, [ebx - 1]
shr edx, 0x1f
lea eax, [ebx + edx - 1]
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x3c]
push 0
sar eax, 1
imul eax, edx
add ebx, edi
add ebx, ecx
push edx
add ebx, eax
push ebx
add esi, edi
push esi
mov edi, dword [esp + 0x94]
call dword [0x1031e3c8]
add esp, 0x10
jmp 0x100172c7
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x60]
imul eax, edi
mov dword [esp + 0x34], eax
add ecx, 0x80000000
adc ecx, 0x80000000
add ebx, 0x80000000
adc ebx, 0x80000000
sar ecx, 1
add esi, edx
sar ebx, 1
imul ebx, edi
add esi, eax
add edx, dword [esp + 0x30]
push edi
add edx, eax
add edx, ecx
add edx, ebx
push edx
push esi
mov edi, dword [esp + 0x90]
call dword [0x1031e3bc]
add esp, 0xc
mov esi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x5c]
mov ebx, dword [ebp + 0xc4]
mov edx, dword [ebp + esi + 0xd0]
mov dword [esp + 0x30], edx
mov edx, dword [ecx + 0x18]
mov ecx, dword [ecx + 0x1c]
mov esi, edx
and esi, 1
add esi, esi
mov eax, ecx
and eax, 1
add esi, eax
je 0x100173d1
cmp esi, 1
jne 0x10017349
mov eax, dword [esp + 0x34]
add edx, 0x80000000
adc edx, 0x80000000
lea esi, [ecx - 1]
shr esi, 0x1f
sar edx, 1
lea ecx, [ecx + esi - 1]
mov esi, dword [esp + 0x48]
sar ecx, 1
add ebx, esi
add esi, dword [esp + 0x30]
add ebx, eax
add esi, eax
add esi, edx
mov edx, dword [esp + 0x60]
imul ecx, edx
add esi, ecx
push 0
push edx
push esi
push ebx
call dword [0x1031e3c4]
add esp, 0x10
jmp 0x10017416
lea eax, [edx - 1]
shr eax, 0x1f
lea edx, [edx + eax - 1]
sar edx, 1
cmp esi, 2
jne 0x10017398
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x34]
add ecx, 0x80000000
adc ecx, 0x80000000
add ebx, esi
add esi, dword [esp + 0x30]
sar ecx, 1
add ebx, eax
add esi, eax
add esi, edx
mov edx, dword [esp + 0x60]
imul ecx, edx
add esi, ecx
push 0
push edx
push esi
push ebx
call dword [0x1031e3c0]
add esp, 0x10
jmp 0x10017416
mov eax, dword [esp + 0x34]
lea esi, [ecx - 1]
shr esi, 0x1f
lea ecx, [ecx + esi - 1]
sar ecx, 1
mov esi, dword [esp + 0x48]
add ebx, esi
add esi, dword [esp + 0x30]
add ebx, eax
add esi, eax
add esi, edx
mov edx, dword [esp + 0x60]
imul ecx, edx
push 0
push edx
add esi, ecx
push esi
push ebx
call dword [0x1031e3c8]
add esp, 0x10
jmp 0x10017416
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x34]
add edx, 0x80000000
adc edx, 0x80000000
add ecx, 0x80000000
adc ecx, 0x80000000
sar edx, 1
add ebx, esi
add esi, dword [esp + 0x30]
sar ecx, 1
add ebx, eax
add esi, eax
add esi, edx
mov edx, dword [esp + 0x60]
imul ecx, edx
push edx
add esi, ecx
push esi
push ebx
call dword [0x1031e3bc]
add esp, 0xc
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x7ac]
mov ebx, dword [esp + 0x40]
mov edx, dword [ebp + 0xc8]
mov ecx, dword [ecx + 0xd4]
add edi, edi
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x38]
add edi, edi
add edi, edi
lea esi, [esi + esi]
add esi, esi
add esi, esi
and ebx, 1
add ebx, ebx
and ecx, 1
add ebx, ecx
je 0x1001757f
cmp ebx, 1
jne 0x100174cc
mov eax, dword [esp + 0x40]
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x38]
add eax, 0x80000000
adc eax, 0x80000000
lea ecx, [ebx - 1]
shr ecx, 0x1f
sar eax, 1
lea ecx, [ebx + ecx - 1]
mov ebx, dword [esp + 0x64]
push 0
sar ecx, 1
imul ecx, ebx
add edx, edi
imul esi, ebx
add ebp, edi
add edx, esi
push ebx
add esi, ebp
add esi, eax
add esi, ecx
push esi
push edx
mov ebx, dword [esp + 0x64]
mov ebp, dword [esp + 0x98]
mov esi, dword [esp + 0x90]
call dword [0x1031e3c4]
add esp, 0x10
jmp 0x100175eb
mov eax, dword [esp + 0x40]
add dword [esp + 0x2c], edi
lea ecx, [eax - 1]
shr ecx, 0x1f
lea ecx, [eax + ecx - 1]
sar ecx, 1
mov dword [esp + 0x30], ecx
add edx, edi
mov ecx, esi
imul ecx, dword [esp + 0x64]
mov dword [esp + 0x34], ecx
cmp ebx, 2
jne 0x1001753a
mov eax, dword [esp + 0x38]
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x64]
add eax, 0x80000000
adc eax, 0x80000000
add edx, ecx
add ecx, dword [esp + 0x2c]
add ecx, dword [esp + 0x30]
push 0
push edi
sar eax, 1
imul eax, edi
add ecx, eax
push ecx
push edx
mov edi, dword [esp + 0x94]
call dword [0x1031e3c0]
add esp, 0x10
jmp 0x100175eb
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x38]
lea ecx, [edi - 1]
shr ecx, 0x1f
lea eax, [edi + ecx - 1]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x64]
sar eax, 1
imul eax, edi
add edx, ecx
add ecx, dword [esp + 0x2c]
add ecx, dword [esp + 0x30]
push 0
push edi
add ecx, eax
push ecx
push edx
mov edi, dword [esp + 0x94]
call dword [0x1031e3c8]
add esp, 0x10
jmp 0x100175eb
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x88], ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x80], esi
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x64]
add eax, 0x80000000
adc eax, 0x80000000
push ebx
sar eax, 1
add ecx, 0x80000000
adc ecx, 0x80000000
add edx, edi
imul esi, ebx
sar ecx, 1
imul ecx, ebx
add edx, esi
add ebp, edi
add esi, ebp
add esi, eax
add esi, ecx
push esi
push edx
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x8c]
mov ebp, dword [esp + 0x94]
call dword [0x1031e3bc]
add esp, 0xc
mov edx, dword [esp + 0x44]
mov ecx, dword [ebp + 0xcc]
mov edx, dword [edx + 0xd8]
mov dword [esp + 0x2c], edx
test ebx, ebx
je 0x100176d9
cmp ebx, 1
jne 0x10017659
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x38]
add edx, 0x80000000
adc edx, 0x80000000
lea ebx, [eax - 1]
shr ebx, 0x1f
sar edx, 1
lea eax, [eax + ebx - 1]
sar eax, 1
add ecx, edi
add edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x64]
imul esi, ebx
imul eax, ebx
add ecx, esi
add esi, edi
push 0
push ebx
add esi, edx
add esi, eax
push esi
push ecx
call dword [0x1031e3c4]
add esp, 0x10
jmp 0x1001771f
imul esi, dword [esp + 0x64]
mov eax, dword [esp + 0x40]
lea edx, [eax - 1]
shr edx, 0x1f
lea edx, [eax + edx - 1]
sar edx, 1
add ecx, edi
add edi, dword [esp + 0x2c]
cmp ebx, 2
jne 0x100176aa
mov ebx, dword [esp + 0x38]
add ebx, 0x80000000
adc ebx, 0x80000000
add ecx, esi
add esi, edi
sar ebx, 1
add esi, edx
mov edx, dword [esp + 0x64]
imul ebx, edx
add esi, ebx
push 0
push edx
push esi
push ecx
call dword [0x1031e3c0]
add esp, 0x10
jmp 0x1001771f
mov eax, dword [esp + 0x38]
lea ebx, [eax - 1]
shr ebx, 0x1f
lea ebx, [eax + ebx - 1]
sar ebx, 1
add ecx, esi
add esi, edi
add esi, edx
mov edx, dword [esp + 0x64]
imul ebx, edx
add esi, ebx
push 0
push edx
push esi
push ecx
call dword [0x1031e3c8]
add esp, 0x10
jmp 0x1001771f
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 0x64]
imul esi, edx
add eax, 0x80000000
adc eax, 0x80000000
add ebx, 0x80000000
adc ebx, 0x80000000
sar eax, 1
add ecx, edi
sar ebx, 1
imul ebx, edx
add ecx, esi
add edi, dword [esp + 0x2c]
push edx
add esi, edi
add esi, eax
add esi, ebx
push esi
push ecx
call dword [0x1031e3bc]
add esp, 0xc
xor esi, esi
mov bl, 5
mov edx, dword [ebp + 0x88]
test edx, edx
je 0x10017734
mov edx, 2
jmp 0x10017736
xor edx, edx
mov eax, dword [esp + 0x7b0]
mov edi, 1
mov cl, bl
shl edi, cl
test edi, eax
je 0x1001782b
lea ecx, [esp + 0xcb]
and ecx, 0xffffffc0
lea edi, [esi + esi]
add edi, edi
add edi, edi
add edi, edi
add edi, edi
add edi, edi
add edi, edi
add ecx, edi
xor eax, eax
mov dword [ecx], eax
mov dword [esp + 0x54], ecx
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x1c], eax
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], eax
mov dword [ecx + 0x28], eax
mov dword [ecx + 0x2c], eax
mov dword [ecx + 0x30], eax
mov dword [ecx + 0x34], eax
mov dword [ecx + 0x38], eax
mov dword [ecx + 0x3c], eax
mov dword [ecx + 0x40], eax
mov dword [ecx + 0x44], eax
mov dword [ecx + 0x48], eax
mov dword [ecx + 0x4c], eax
mov dword [ecx + 0x50], eax
mov dword [ecx + 0x54], eax
mov dword [ecx + 0x58], eax
mov dword [ecx + 0x5c], eax
mov dword [ecx + 0x60], eax
mov dword [ecx + 0x64], eax
mov dword [ecx + 0x68], eax
mov dword [ecx + 0x6c], eax
mov dword [ecx + 0x70], eax
mov dword [ecx + 0x74], eax
mov dword [ecx + 0x78], eax
mov dword [ecx + 0x7c], eax
push edx
mov edx, ecx
push edx
push dword [esp + 0x7bc]
call fcn.10038f5c
add esp, 0xc
lea eax, [esp + 0x44b]
mov edx, dword [ebp + 0x14]
test edx, edx
jne 0x1001780a
mov edx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x58]
and eax, 0xffffffc0
add edi, eax
push edx
push edi
call dword [0x1031e448]
add esp, 0xc
jmp 0x10017823
mov edx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x58]
and eax, 0xffffffc0
add edi, eax
push edx
push edi
call dword [0x1031e434]
add esp, 0xc
push edi
call dword [0x1031e450]
pop ecx
add bl, 0xff
add esi, 1
cmp esi, 6
jb 0x10017723
mov eax, dword [ebp + 0x80]
test eax, eax
je 0x10017860
mov edx, dword [esp + 0x5c]
mov eax, dword [edx + 0xf4]
test eax, eax
je 0x10017860
mov eax, dword [esp + 0x60]
mov dword [esp + 0x68], eax
add eax, eax
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x7b0]
test al, 0x20
je 0x10017889
mov ecx, dword [esp + 0x60]
lea edx, [esp + 0x44b]
push ecx
and edx, 0xffffffc0
push edx
mov eax, dword [esp + 0x7c]
push eax
call dword [0x1031e3b8]
add esp, 0xc
mov eax, dword [esp + 0x7b0]
test al, 0x10
je 0x100178c0
mov ebx, dword [esp + 0x70]
mov ebp, dword [esp + 0x6c]
mov ecx, dword [esp + 0x60]
lea edx, [esp + 0x44b]
lea eax, [ebp + ebx + 8]
and edx, 0xffffffc0
push ecx
add edx, 0x80
push edx
push eax
call dword [0x1031e3b8]
add esp, 0xc
mov eax, dword [esp + 0x7b0]
test al, 8
je 0x100178f7
mov ebp, dword [esp + 0x74]
mov ebx, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
lea edx, [esp + 0x44b]
lea eax, [ebp + ebx]
and edx, 0xffffffc0
push ecx
add edx, 0x100
push edx
push eax
call dword [0x1031e3b8]
add esp, 0xc
mov eax, dword [esp + 0x7b0]
test al, 4
je 0x1001792e
mov ebp, dword [esp + 0x74]
mov ebx, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
lea edx, [esp + 0x44b]
lea eax, [ebp + ebx + 8]
and edx, 0xffffffc0
push ecx
add edx, 0x180
push edx
push eax
call dword [0x1031e3b8]
add esp, 0xc
mov eax, dword [esp + 0x7b0]
test al, 2
je 0x10017960
mov ecx, dword [esp + 0x64]
lea edx, [esp + 0x44b]
push ecx
and edx, 0xffffffc0
add edx, 0x200
push edx
mov eax, dword [esp + 0x80]
push eax
call dword [0x1031e3b8]
add esp, 0xc
mov eax, dword [esp + 0x7b0]
test al, 1
je 0x10017992
mov ecx, dword [esp + 0x64]
lea edx, [esp + 0x44b]
push ecx
and edx, 0xffffffc0
add edx, 0x280
push edx
mov eax, dword [esp + 0x84]
push eax
call dword [0x1031e3b8]
add esp, 0xc
add esp, 0x78c
pop ebx
pop ebp
pop esi
pop edi
ret