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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x100
mov esi, esp
mov edi, dword [ebp + 8]
mov eax, dword [0x10305014]
xor eax, ebp
mov dword [esi + 0xf8], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0xd0], xmm0
movdqa xmmword [esi + 0xc0], xmm0
movdqa xmmword [esi + 0xb0], xmm0
xor ecx, ecx
dec ecx
mov dword [esi + 0xf0], ecx
mov dword [esi + 0xf4], ecx
mov dword [esi + 0xe8], ecx
mov dword [esi + 0xec], ecx
mov eax, dword [edi + 8]
mov dword [esi + 0x38], eax
xor eax, eax
mov dword [esi + 0xac], eax
mov dword [esi + 0xa8], eax
mov dword [esi], ecx
mov dword [esi + 0xa4], ecx
mov eax, dword [edi + 0xc]
mov dword [esi + 0x20], eax
push edi
call fcn.1011ef80
add esp, 4
mov edi, dword [edi]
mov edx, dword [edi + 0x24]
test edx, edx
js 0x10128eb4
mov eax, dword [ebp + 0x18]
mov ecx, dword [edi + 4]
mov ebx, dword [ebp + 8]
imul eax, dword [ebx + 0x10]
mov dword [esi + 0x44], eax
mov eax, ecx
mov dword [esi + 0x50], ecx
lea eax, [ecx + 0x800]
mov ecx, dword [esi + 0x38]
imul eax, ecx
lea eax, [ebx + eax*4]
lea ecx, [ecx + ecx*2]
shl ecx, 5
lea ebx, [eax + ecx]
add eax, ecx
add eax, 0x5c
mov dword [esi + 0x24], eax
mov ecx, dword [edi + 8]
lea ebx, [ebx + ecx*8]
add ebx, 0x5c
inc edx
mov eax, dword [ebp + 0x1c]
mov dword [esi + 4], eax
mov eax, dword [edi + 0x20]
mov dword [esi + 0xa0], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x14]
mov dword [esi + 0x10], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
mov dword [esi + 8], eax
lea eax, [ecx + ecx]
mov dword [esi + 0x74], eax
mov dword [esi + 0x2c], ecx
mov dword [esi + 0x60], ebx
lea eax, [ebx + ecx*8]
mov dword [esi + 0x64], eax
mov dword [esi + 0x28], edi
mov eax, dword [edi + 0x2c]
mov dword [esi + 0x90], 0xfffffff0
xor ecx, ecx
mov edi, dword [esi + 0x44]
mov ebx, eax
shl ebx, cl
cmp ebx, edi
je 0x10128330
inc ecx
add dword [esi + 0x90], 0xfffffff8
cmp edx, ecx
jne 0x10128317
jmp 0x10128eb4
xor eax, eax
inc eax
mov dword [esi + 0x68], eax
mov dword [esi + 0x14], ecx
shl eax, cl
mov dword [esi + 0x84], eax
cmp dword [ebp + 0x10], 0x4fb
ja 0x10128eb4
mov ebx, edi
cmp dword [ebp + 0x14], 0
mov eax, dword [ebp + 8]
mov edx, dword [esi + 0x38]
mov edi, dword [esi + 0x50]
je 0x10128eb4
cmp edx, 2
mov ecx, 1
cmovge ecx, edx
lea edx, [ebx*4]
neg edx
mov dword [esi], edx
lea edx, [eax + 0x205c]
lea edi, [edi*4 + 0x2000]
xor ebx, ebx
lea eax, [edx - 0x2000]
mov dword [esi + ebx*4 + 0xf0], eax
mov eax, dword [esi]
add eax, edx
mov dword [esi + ebx*4 + 0xe8], eax
inc ebx
add edx, edi
cmp ecx, ebx
jne 0x10128388
mov dword [esi + 0x94], ecx
mov eax, dword [esi + 0x28]
mov ecx, dword [eax + 0xc]
mov eax, dword [esi + 8]
cmp eax, ecx
cmovl ecx, eax
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x10129043
cmp dword [ebp + 0x10], 1
jle 0x10129043
mov dword [esi + 0x9c], ecx
xor eax, eax
mov edi, dword [ebp + 8]
cmp dword [edi + 0x34], 0
setne al
mov dword [edi + 0x38], eax
cmp dword [ebp + 0x1c], 0
mov eax, dword [esi + 0x20]
je 0x10129086
cmp eax, 1
je 0x101290a4
mov eax, dword [esi + 4]
mov edx, dword [eax + 0x1c]
bsr edi, edx
xor edi, 0x1f
mov ecx, edi
or ecx, 0xffffffe0
test edx, edx
cmove ecx, edx
mov ebx, dword [ebp + 0x10]
lea ebx, [ebx*8]
add ecx, dword [eax + 0x14]
mov dword [esi + 0x3c], ebx
cmp ecx, ebx
jge 0x10128fc2
mov dword [esi + 0x68], 0
mov al, 1
mov dword [esi + 0x78], eax
cmp ecx, 1
jne 0x10128452
push 0xf
push dword [esi + 4]
call fcn.101295d0
add esp, 8
test eax, eax
jne 0x10128fb3
xor ecx, ecx
inc ecx
mov dword [esi + 0x40], 0
pxor xmm0, xmm0
cmp dword [esi + 0x10], 0
jne 0x10129035
lea eax, [ecx + 0x10]
mov dword [esi + 0x58], 0
mov edi, 0
cmp eax, dword [esi + 0x3c]
jg 0x101284b4
push 1
mov ebx, dword [esi + 4]
push ebx
call fcn.101295d0
add esp, 8
test eax, eax
jne 0x10128918
pxor xmm0, xmm0
mov dword [esi + 0x58], 0
xor edi, edi
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x1c]
bsr ecx, eax
not ecx
or ecx, 0xffffffe0
test eax, eax
cmove ecx, eax
add ecx, dword [edx + 0x14]
movd dword [esi + 0x8c], xmm0
add ecx, 3
cmp dword [esi + 0x14], 0
je 0x101284f3
cmp ecx, dword [esi + 0x3c]
jg 0x101284f3
push 3
mov ebx, dword [esi + 4]
push ebx
call fcn.101295d0
add esp, 8
mov dword [esi + 0x40], eax
mov eax, dword [ebx + 0x1c]
bsr ecx, eax
not ecx
or ecx, 0xffffffe0
test eax, eax
cmove ecx, eax
mov eax, dword [ebx + 0x14]
add ecx, eax
add ecx, 3
mov dword [esi + 0x88], edi
mov eax, dword [esi + 0x40]
test eax, eax
mov edx, dword [esi + 0x84]
cmove edx, eax
mov dword [esi + 0x98], edx
mov dword [esi + 0x18], 0
mov eax, 0
cmp ecx, dword [esi + 0x3c]
mov ebx, dword [esi + 4]
jg 0x1012852c
push 3
push ebx
call fcn.101295d0
add esp, 8
push dword [esi + 0x14]
push dword [esi + 0x20]
push ebx
push eax
push dword [esi + 0x24]
mov edi, dword [esi + 8]
push edi
push dword [esi + 0x10]
push dword [esi + 0x28]
call fcn.101299f0
add esp, 0x20
mov eax, dword [esi + 0x2c]
lea ecx, [eax*4]
mov eax, ecx
call fcn.101308a0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 0xc], eax
mov esp, eax
mov dword [esi + 0x54], ecx
push ecx
push 0xff
push eax
call fcn.10132b90
add esp, 0xc
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 0x1c]
shl eax, 3
bsr edx, ecx
not edx
or edx, 0xffffffe0
test ecx, ecx
cmove edx, ecx
add edx, dword [ebx + 0x14]
mov ebx, edi
xor ecx, ecx
cmp dword [esi + 0x40], 0
sete cl
cmp dword [esi + 0x14], 0
setne byte [esi]
lea edi, [edx + ecx*2]
add edi, 3
mov dword [esi + 0x1c], eax
cmp edi, eax
setbe al
and al, byte [esi]
mov byte [esi + 0x34], al
cmp dword [esi + 0x10], ebx
jge 0x10128674
mov edi, edx
add ecx, ecx
add ecx, 2
movzx edx, byte [esi + 0x34]
mov eax, dword [esi + 0x1c]
sub eax, edx
cmp dword [esi + 0x40], 0
sete bl
lea edx, [edi + ecx]
mov dword [esi + 0x1c], eax
cmp edx, eax
ja 0x1012902b
push ecx
mov edi, dword [esi + 4]
push edi
call fcn.101295d0
add esp, 8
mov ecx, dword [edi + 0x1c]
bsr edx, ecx
not edx
or edx, 0xffffffe0
test ecx, ecx
cmove edx, ecx
add edx, dword [edi + 0x14]
mov dword [esi + 0x4c], edx
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
mov dword [edx + ecx*4], eax
lea edi, [ecx + 1]
cmp edi, dword [esi + 8]
mov dword [esi + 0x18], eax
je 0x10128fab
xor edx, edx
mov dl, bl
or edx, 4
mov dword [esi], eax
mov eax, dword [esi + 0x4c]
mov dword [esi + 0x30], edx
lea ecx, [eax + edx]
cmp ecx, dword [esi + 0x1c]
ja 0x10128f85
push edx
mov ebx, dword [esi + 4]
push ebx
call fcn.101295d0
add esp, 8
mov edx, dword [esi]
xor edx, eax
mov ecx, dword [ebx + 0x1c]
bsr eax, ecx
not eax
or eax, 0xffffffe0
test ecx, ecx
cmove eax, ecx
mov ecx, edx
add eax, dword [ebx + 0x14]
mov ebx, dword [esi + 8]
or dword [esi + 0x18], edx
mov dword [esi], ecx
mov edx, dword [esi + 0xc]
mov dword [edx + edi*4], ecx
inc edi
cmp ebx, edi
mov edx, dword [esi + 0x30]
jne 0x1012862c
xor eax, eax
cmp byte [esi + 0x34], 0
je 0x10128fe7
mov ecx, dword [esi + 0x40]
mov edx, dword [esi + 0x18]
lea ecx, [edx + ecx*4]
mov edi, dword [esi + 0x14]
mov dl, byte [ecx + edi*8 + 0x102f552c]
cmp dl, byte [ecx + edi*8 + 0x102f552e]
mov edi, dword [esi + 4]
je 0x101286ac
push 1
push edi
call fcn.101295d0
add esp, 8
add eax, eax
mov dword [esi + 4], edi
cmp dword [esi + 0x10], ebx
mov edi, dword [esi + 0x14]
jge 0x101286e1
mov ecx, dword [esi + 0x40]
lea eax, [eax + ecx*4]
mov dword [esi], eax
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
mov edx, dword [edx + ecx*4]
add edx, dword [esi]
movsx edx, byte [edx + edi*8 + 0x102f552c]
mov eax, edi
mov edi, dword [esi + 0xc]
mov dword [edi + ecx*4], edx
mov edi, eax
inc ecx
cmp ebx, ecx
jne 0x101286c2
mov edi, dword [esi + 4]
mov eax, dword [edi + 0x1c]
bsr ecx, eax
not ecx
or ecx, 0xffffffe0
test eax, eax
cmove ecx, eax
mov eax, dword [edi + 0x14]
add eax, ecx
add eax, 4
cmp eax, dword [esi + 0x3c]
jg 0x10128fef
push 5
push 0x102f643d
push edi
call fcn.1011fa30
add esp, 0xc
mov dword [esi + 0x70], eax
mov eax, dword [esi + 0x54]
lea ebx, [eax + 3]
mov ecx, eax
and ebx, 0xfffffffc
mov eax, ebx
call fcn.101308a0
mov edi, esp
and edi, 0xfffffff0
mov esp, edi
mov eax, 0xff
push ecx
push eax
push edi
call fcn.10132b90
add esp, 0xc
push dword [esi + 0x20]
push dword [esi + 0x14]
mov dword [esi + 0x5c], edi
push edi
push dword [esi + 0x28]
call fcn.10127f50
add esp, 0x10
mov dword [esi + 0x7c], ebx
mov eax, ebx
call fcn.101308a0
mov eax, esp
and eax, 0xfffffff0
mov esp, eax
push dword [esi + 0x54]
mov ecx, 0xff
push ecx
mov dword [esi + 0x6c], eax
push eax
call fcn.10132b90
add esp, 0xc
mov edi, dword [ebp + 0x10]
shl edi, 6
push dword [esi + 4]
call fcn.10129c50
add esp, 4
mov dword [esi + 0x18], eax
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x10]
cmp eax, edx
mov dword [esi + 0x80], edi
jge 0x10128fa3
mov dword [esi + 0x1c], 6
mov dword [esi + 0x48], edi
mov edi, eax
mov ecx, dword [esi + 0x14]
lea eax, [edi + 1]
mov dword [esi + 0x4c], eax
mov eax, dword [esi + 0xa0]
mov edx, edi
movsx edi, word [eax + edi*2 + 2]
mov dword [esi], edx
movsx eax, word [eax + edx*2]
sub edi, eax
imul edi, dword [esi + 0x20]
shl edi, cl
lea eax, [edi*8]
cmp edi, 0x31
mov ecx, 0x30
cmovl edi, ecx
cmp eax, edi
cmovl edi, eax
mov ecx, dword [esi + 0x1c]
mov eax, dword [esi + 0x18]
lea eax, [eax + ecx*8]
cmp eax, dword [esi + 0x48]
jge 0x10128f8f
xor ebx, ebx
mov eax, ecx
mov ecx, dword [esi + 0x5c]
mov edx, dword [esi]
mov dword [esi + 0x30], ebx
cmp ebx, dword [ecx + edx*4]
jge 0x1012884f
push eax
mov ebx, dword [esi + 4]
push ebx
call fcn.101295d0
add esp, 8
mov dword [esi + 0x34], eax
push ebx
call fcn.10129c50
add esp, 4
mov dword [esi + 0x18], eax
cmp dword [esi + 0x34], 0
je 0x1012884f
mov ebx, dword [esi + 0x30]
add ebx, edi
mov edx, dword [esi + 0x48]
sub edx, edi
mov ecx, dword [esi + 0x18]
add ecx, 8
xor eax, eax
inc eax
mov dword [esi + 0x48], edx
cmp ecx, edx
mov edx, dword [esi + 8]
jl 0x10128801
jmp 0x10128855
mov edx, dword [esi + 8]
mov ebx, dword [esi + 0x30]
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi]
mov dword [eax + ecx*4], ebx
mov ecx, dword [esi + 0x1c]
cmp ecx, 4
mov eax, 3
cmovge eax, ecx
dec eax
test ebx, ebx
cmovg ecx, eax
mov dword [esi + 0x1c], ecx
mov eax, dword [esi + 0x4c]
mov edi, eax
cmp eax, edx
mov ecx, dword [esi + 0x14]
jne 0x101287b3
mov eax, dword [esi + 0x7c]
call fcn.101308a0
mov eax, esp
and eax, 0xfffffff0
mov esp, eax
push dword [esi + 0x54]
push 0xff
mov dword [esi], eax
push eax
call fcn.10132b90
add esp, 0xc
mov eax, dword [esi + 0x18]
add eax, 0x30
cmp eax, dword [esi + 0x48]
jg 0x10128ffb
push 7
push str.wmW_
mov edi, dword [esi + 4]
push edi
call fcn.1011fa30
add esp, 0xc
mov dword [esi + 0x4c], eax
push edi
call fcn.10129c50
add esp, 4
not eax
add eax, dword [esi + 0x80]
xor ebx, ebx
cmp dword [esi + 0x40], 0
je 0x1012899f
mov ecx, 0
mov edx, 0
cmp dword [esi + 0x14], 2
jb 0x101289a3
mov edx, dword [esi + 0x90]
neg edx
xor ecx, ecx
cmp eax, edx
setge cl
mov edx, ecx
and edx, 1
shl edx, 3
jmp 0x101289a3
push 6
push ebx
call fcn.101296b0
add esp, 8
mov edx, 0x10
mov ecx, eax
shl edx, cl
mov dword [esi], edx
add eax, 4
push eax
push ebx
call fcn.10129980
add esp, 8
mov dword [esi + 0xc], eax
push 3
push ebx
call fcn.10129980
add esp, 8
mov ecx, dword [ebx + 0x1c]
bsr edx, ecx
not edx
or edx, 0xffffffe0
test ecx, ecx
cmove edx, ecx
mov edi, eax
mov eax, dword [ebx + 0x14]
add eax, edx
add eax, 2
cmp eax, dword [esi + 0x3c]
jg 0x10129255
push 2
push 0x102f643a
push ebx
call fcn.1011fa30
add esp, 0xc
inc edi
xorps xmm0, xmm0
cvtsi2ss xmm0, edi
mov ecx, dword [esi]
mov edx, dword [esi + 0xc]
lea ecx, [edx + ecx - 1]
mov dword [esi + 0x58], ecx
mulss xmm0, dword [0x102f605c]
mov edi, eax
jmp 0x1012849e
xor ecx, ecx
xor edx, edx
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], edx
sub eax, edx
mov dword [esi + 0x48], eax
mov edi, dword [esi + 0x7c]
mov eax, edi
call fcn.101308a0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 0x1c], eax
mov esp, eax
mov ecx, 0xff
push dword [esi + 0x54]
push ecx
push eax
call fcn.10132b90
add esp, 0xc
mov eax, edi
call fcn.101308a0
mov edi, esp
and edi, 0xfffffff0
mov esp, edi
push dword [esi + 0x54]
mov eax, 0xff
push eax
push edi
call fcn.10132b90
add esp, 0xc
lea edx, [esi + 0xa4]
lea eax, [esi + 0xa8]
lea ecx, [esi + 0xac]
push ebx
push ebx
push ebx
push dword [esi + 4]
push dword [esi + 0x14]
push dword [esi + 0x20]
mov dword [esi + 0x18], edi
push edi
push dword [esi]
push dword [esi + 0x1c]
push edx
push dword [esi + 0x48]
push eax
push ecx
push dword [esi + 0x4c]
push dword [esi + 0x5c]
push dword [esi + 0x6c]
push dword [esi + 8]
push dword [esi + 0x10]
mov edi, dword [esi + 0x28]
push edi
call fcn.10129c90
add esp, 0x4c
mov dword [esi + 0x4c], eax
push dword [esi + 0x20]
push dword [esi + 4]
push dword [esi]
push dword [esi + 0x24]
push dword [esi + 8]
push dword [esi + 0x10]
push edi
call fcn.10129bb0
add esp, 0x1c
mov ecx, dword [esi + 0x50]
mov eax, ecx
shr eax, 0x1f
add eax, ecx
shr eax, 1
sub eax, dword [esi + 0x44]
lea edi, [eax*4 + 0x2000]
mov eax, dword [esi + ebx*4 + 0xf0]
mov ecx, dword [esi + 0x44]
lea ecx, [eax + ecx*4]
push edi
push ecx
push eax
call fcn.10132610
add esp, 0xc
inc ebx
cmp dword [esi + 0x94], ebx
jne 0x10128a6f
mov ecx, dword [esi + 0x2c]
mov eax, dword [esi + 0x20]
imul ecx, eax
mov edi, eax
lea eax, [ecx + 3]
and eax, 0xfffffffc
call fcn.101308a0
mov ebx, esp
and ebx, 0xfffffff0
mov esp, ebx
mov eax, 0xff
mov dword [esi + 0x5c], ecx
push ecx
push eax
push ebx
call fcn.10132b90
add esp, 0xc
mov ecx, edi
imul ecx, dword [esi + 0x44]
shl ecx, 2
mov eax, ecx
call fcn.101308a0
mov edi, esp
and edi, 0xfffffff0
mov esp, edi
push ecx
mov eax, 0xff
push eax
push edi
call fcn.10132b90
add esp, 0xc
mov eax, dword [ebp + 8]
add eax, 0x28
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x80]
sub eax, dword [esi + 0x34]
cmp dword [esi + 0x20], 2
mov ecx, dword [esi + 0x44]
lea ecx, [edi + ecx*4]
mov edx, 0
cmovne ecx, edx
mov edx, dword [ebp + 8]
push dword [edx + 0x20]
push dword [edx + 0x24]
xor edx, edx
push edx
push dword [esi + 0x48]
push dword [esi + 0x4c]
push dword [esi + 0x14]
push dword [esi + 4]
push dword [esi + 0xa4]
push eax
push dword [esi + 0xc]
push dword [esi + 0xac]
push dword [esi + 0xa8]
push dword [esi + 0x70]
push dword [esi + 0x98]
push dword [esi + 0x1c]
mov eax, 0
push eax
mov dword [esi + 0x34], ebx
push ebx
push ecx
mov dword [esi + 0xc], edi
push edi
mov edi, dword [esi + 8]
push edi
push dword [esi + 0x10]
mov ebx, dword [esi + 0x28]
push ebx
push eax
call fcn.1012acd0
add esp, 0x5c
test byte [esi + 0x30], 1
jne 0x10128ecb
mov edx, dword [esi + 4]
mov ecx, dword [edx + 0x1c]
bsr eax, ecx
xor eax, 0xffffffe0
add eax, 0x21
test ecx, ecx
cmove eax, ecx
mov ecx, dword [esi + 0x3c]
sub ecx, dword [edx + 0x14]
add ecx, eax
push dword [esi + 0x20]
push edx
push ecx
push dword [esi + 0x18]
push dword [esi]
push dword [esi + 0x24]
push edi
push dword [esi + 0x10]
push ebx
call fcn.1011fbf0
add esp, 0x24
mov ebx, dword [esi + 0xc]
cmp byte [esi + 0x78], 0
je 0x1012900a
lea eax, [esi + 0xe8]
mov ecx, dword [esi + 0x28]
mov edx, ebx
mov ebx, dword [ebp + 8]
push dword [ebx + 0x24]
push dword [esi + 0x68]
push dword [ebx + 0x10]
push dword [esi + 0x14]
push dword [esi + 0x40]
push dword [esi + 0x38]
push dword [esi + 0x20]
push dword [esi + 0x9c]
push dword [esi + 0x10]
push dword [esi + 0x24]
push eax
call fcn.1011f310
add esp, 0x2c
xor eax, eax
mov dword [esi], eax
mov eax, dword [ebx + 0x24]
mov dword [esi + 0xc], eax
mov eax, dword [ebx + 0x3c]
cmp eax, 0x10
mov edi, 0xf
cmovl eax, edi
mov dword [ebx + 0x3c], eax
mov ecx, dword [ebx + 0x40]
cmp ecx, 0x10
cmovl ecx, edi
mov dword [ebx + 0x40], ecx
mov edi, dword [esi + 0x28]
mov edx, dword [edi + 0x2c]
mov dword [esi + 0x1c], edx
movd xmm0, dword [ebx + 0x44]
movss xmm1, dword [ebx + 0x48]
mov edx, dword [edi + 0x3c]
mov dword [esi + 0x34], edx
mov edx, dword [ebx + 0x4c]
mov dword [esi + 0x30], edx
mov edx, dword [ebx + 0x50]
mov dword [esi + 0x18], edx
mov edx, dword [esi]
mov edx, dword [esi + edx*4 + 0xe8]
sub esp, 0x30
mov edi, dword [esi + 0xc]
mov dword [esp + 0x2c], edi
mov edi, dword [esi + 0x34]
mov dword [esp + 0x24], edi
mov edi, dword [esi + 0x30]
mov dword [esp + 0x20], edi
mov edi, dword [esi + 0x18]
mov dword [esp + 0x1c], edi
mov edi, dword [esi + 0x1c]
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], eax
mov dword [esp + 8], ecx
mov eax, dword [esi + 0x50]
mov dword [esp + 0x28], eax
movd dword [esp + 0x18], xmm0
movss dword [esp + 0x14], xmm1
mov dword [esp + 4], edx
mov dword [esi + 0xc], edx
mov dword [esp], edx
call fcn.10127ca0
add esp, 0x30
cmp dword [esi + 0x14], 0
je 0x10128d25
mov eax, dword [esi + 0x28]
mov ecx, dword [eax + 0x2c]
mov eax, dword [eax + 0x3c]
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x44]
sub eax, ecx
mov edx, dword [esi + 0xc]
lea ecx, [edx + ecx*4]
mov edx, dword [ebx + 0x4c]
mov dword [esi + 0x18], edx
movd xmm0, dword [ebx + 0x44]
mov edx, dword [ebx + 0x24]
mov edi, dword [ebx + 0x3c]
mov dword [esi + 0xc], edi
sub esp, 0x30
mov dword [esp + 0x2c], edx
mov edx, dword [esi + 0x1c]
mov dword [esp + 0x24], edx
mov edx, dword [esi + 0x18]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], ecx
mov eax, dword [esi + 0x50]
mov dword [esp + 0x28], eax
mov eax, dword [esi + 0x88]
mov dword [esp + 0x20], eax
movss xmm1, dword [esi + 0x8c]
movss dword [esp + 0x18], xmm1
movd dword [esp + 0x14], xmm0
mov eax, dword [esi + 0x58]
mov dword [esp + 0xc], eax
call fcn.10127ca0
add esp, 0x30
mov eax, dword [esi]
inc eax
cmp dword [esi + 0x94], eax
jne 0x10128bef
mov eax, dword [ebx + 0x3c]
mov dword [ebx + 0x40], eax
movss xmm0, dword [ebx + 0x44]
movss dword [ebx + 0x48], xmm0
mov eax, dword [ebx + 0x4c]
mov dword [ebx + 0x50], eax
mov ecx, dword [esi + 0x58]
mov dword [ebx + 0x3c], ecx
movss xmm0, dword [esi + 0x8c]
movss dword [ebx + 0x44], xmm0
mov eax, dword [esi + 0x88]
mov dword [ebx + 0x4c], eax
cmp dword [esi + 0x14], 0
je 0x10128d77
mov dword [ebx + 0x40], ecx
movss dword [ebx + 0x48], xmm0
mov dword [ebx + 0x50], eax
cmp dword [esi + 0x20], 1
mov edi, dword [esi + 0x2c]
je 0x101290e6
cmp dword [esi + 0x40], 0
jne 0x10128f55
mov eax, dword [esi + 0x2c]
lea edi, [eax*8]
push edi
push dword [esi + 0x60]
push dword [esi + 0x64]
call fcn.10132610
add esp, 0xc
push edi
mov edi, dword [esi + 0x2c]
push dword [esi + 0x24]
push dword [esi + 0x60]
call fcn.10132610
add esp, 0xc
mov edx, dword [esi + 0x74]
mov eax, dword [esi + 0x84]
add eax, dword [ebx + 0x34]
cmp eax, 0xa1
jge 0x10128ddd
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
mulss xmm0, dword [0x102d7cd0]
jmp 0x10128de5
movss xmm0, dword [0x102f6060]
mov ebx, dword [esi + 8]
test edi, edi
jle 0x10128e1a
xor eax, eax
inc eax
cmp edx, 2
cmovge eax, edx
lea ecx, [edi*8]
lea ecx, [ecx + ecx*2]
mov edx, dword [esi + 0x24]
movss xmm1, dword [edx + ecx]
addss xmm1, xmm0
minss xmm1, dword [edx]
movss dword [edx + ecx], xmm1
add edx, 4
dec eax
jne 0x10128e02
cmp dword [esi + 0x10], 0
jg 0x101290fe
cmp ebx, edi
jl 0x10129127
mov ebx, dword [esi + 0x10]
test ebx, ebx
jg 0x1012917e
mov edi, dword [esi + 0x2c]
mov ebx, dword [esi + 8]
cmp ebx, edi
jl 0x101291dd
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x1c]
mov edi, dword [ebp + 8]
mov dword [edi + 0x28], eax
lea eax, [edi + 0x54]
mov ebx, dword [esi + 0x28]
add ebx, 0x10
lea ecx, [esi + 0xe8]
mov edx, dword [ebp + 0x14]
push dword [ebp + 0x20]
push eax
push ebx
push dword [edi + 0x10]
push dword [esi + 0x38]
mov ebx, dword [esi + 0x44]
push ebx
call fcn.10129260
add esp, 0x18
mov dword [edi + 0x34], 0
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x1c]
bsr ecx, eax
not ecx
or ecx, 0xffffffe0
test eax, eax
cmove ecx, eax
add ecx, dword [edx + 0x14]
cmp ecx, dword [esi + 0x3c]
jg 0x1012923e
mov eax, edx
cmp dword [edx + 0x2c], 0
jne 0x10129249
mov eax, ebx
cdq
idiv dword [edi + 0x10]
mov dword [esi], eax
mov ecx, dword [esi + 0xf8]
xor ecx, ebp
call fcn.10130483
mov eax, dword [esi]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push 1
mov ebx, dword [esi + 4]
push ebx
call fcn.10129980
add esp, 8
mov dword [esi + 0x30], eax
mov ecx, dword [ebx + 0x1c]
bsr eax, ecx
xor eax, 0xffffffe0
add eax, 0x21
test ecx, ecx
cmove eax, ecx
mov ecx, dword [esi + 0x3c]
sub ecx, dword [ebx + 0x14]
add ecx, eax
push dword [esi + 0x20]
push ebx
push ecx
push dword [esi + 0x18]
push dword [esi]
push dword [esi + 0x24]
push edi
push dword [esi + 0x10]
push dword [esi + 0x28]
call fcn.1011fbf0
add esp, 0x24
cmp dword [esi + 0x30], 0
mov ecx, dword [esi + 0x44]
mov ebx, dword [esi + 0xc]
je 0x10128bab
mov eax, dword [ebp + 8]
push dword [eax + 0x24]
push dword [eax + 0x28]
push dword [esi + 0x1c]
push dword [esi + 0x64]
push dword [esi + 0x60]
push dword [esi + 0x24]
push edi
push dword [esi + 0x10]
push ecx
push dword [esi + 0x20]
push dword [esi + 0x14]
push dword [esi + 0x34]
push ebx
push dword [esi + 0x28]
call fcn.1012aa20
add esp, 0x38
jmp 0x10128bab
test edi, edi
mov edx, dword [esi + 0x74]
jle 0x10128dbc
xor eax, eax
inc eax
cmp edx, 2
cmovge eax, edx
mov ecx, dword [esi + 0x24]
movss xmm0, dword [ecx + edi*8]
minss xmm0, dword [ecx]
movss dword [ecx + edi*8], xmm0
add ecx, 4
dec eax
jne 0x10128f6c
jmp 0x10128dbc
mov ebx, dword [esi + 8]
mov ecx, dword [esi]
jmp 0x10128664
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi]
mov dword [eax + ecx*4], 0
mov edx, dword [esi + 8]
jmp 0x10128874
mov dword [esi + 0x48], edi
jmp 0x10128884
mov ebx, dword [esi + 8]
jmp 0x10128674
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 0x1c]
bsr edi, edx
xor edi, 0x1f
mov dword [esi + 0x68], eax
mov eax, 0x20
sub eax, edi
test edx, edx
cmove eax, edx
mov edx, dword [esi + 0x3c]
add eax, edx
mov ecx, dword [esi + 4]
mov dword [ecx + 0x14], eax
mov dword [esi + 0x78], 0
mov ecx, edx
jmp 0x10128452
mov edi, dword [esi + 4]
jmp 0x101286ac
mov dword [esi + 0x70], 2
jmp 0x10128718
mov dword [esi + 0x4c], 5
mov edi, dword [esi + 4]
jmp 0x101288cb
cmp dword [esi + 0x5c], 0
jle 0x10128bb5
xor eax, eax
mov ecx, dword [esi + 0x24]
mov dword [ecx + eax*4], 0xc1e00000
inc eax
cmp dword [esi + 0x5c], eax
jne 0x10129019
jmp 0x10128bb5
mov dword [esi + 0x4c], edi
xor eax, eax
jmp 0x10128605
mov dword [esi + 0x58], 0
xor edi, edi
jmp 0x101284b4
mov edi, dword [ebp + 8]
mov ecx, edi
mov ebx, dword [esi + 0x44]
mov edx, ebx
push dword [esi + 0x14]
call fcn.1028c070
add esp, 4
lea eax, [edi + 0x54]
mov dword [esi], eax
mov eax, dword [esi + 0x28]
add eax, 0x10
lea ecx, [esi + 0xe8]
mov edx, dword [ebp + 0x14]
push dword [ebp + 0x20]
push dword [esi]
push eax
push dword [edi + 0x10]
push dword [esi + 0x38]
push ebx
call fcn.10129260
add esp, 0x18
jmp 0x10128eac
lea eax, [esi + 0xb0]
push dword [ebp + 0x10]
push edx
mov dword [esi + 4], eax
push eax
call fcn.1011f8f0
mov eax, dword [esi + 0x20]
add esp, 0xc
jmp 0x101283f2
cmp dword [esi + 0x2c], 0
jle 0x101283fb
mov eax, dword [esi + 0x50]
lea eax, [eax*4 + 0x2060]
imul eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x2c]
lea eax, [eax + ecx*4]
add eax, edi
add eax, 0x5c
xor ecx, ecx
mov edx, dword [esi + 0x24]
movss xmm0, dword [edx + ecx*4]
maxss xmm0, dword [eax + ecx*4]
movss dword [edx + ecx*4], xmm0
inc ecx
cmp dword [esi + 0x2c], ecx
jne 0x101290cc
jmp 0x101283fb
mov ecx, dword [esi + 0x24]
lea eax, [ecx + edi*4]
push dword [esi + 0x54]
push ecx
push eax
call fcn.10132610
add esp, 0xc
jmp 0x10128d84
xor eax, eax
mov ecx, 0xc1e00000
mov edx, dword [esi + 0x24]
mov dword [edx + eax*4], 0
mov edx, dword [esi + 0x64]
mov dword [edx + eax*4], ecx
mov edx, dword [esi + 0x60]
mov dword [edx + eax*4], ecx
inc eax
cmp dword [esi + 0x10], eax
je 0x10128e24
jmp 0x10129105
mov eax, dword [esi + 0x2c]
mov ecx, eax
mov edx, dword [esi + 8]
sub ecx, edx
mov dword [esi], ecx
mov ecx, dword [esi + 0x50]
lea ecx, [ecx*4 + 0x2060]
imul ecx, dword [esi + 0x38]
lea edi, [ecx + edx*4]
mov ebx, dword [ebp + 8]
lea edx, [edi + ebx]
mov ecx, eax
shl ecx, 4
add ecx, edx
add ecx, 0x5c
lea edx, [edx + eax*8]
add edx, 0x5c
add edi, ebx
add edi, 0x5c
xor ebx, ebx
mov eax, 0xc1e00000
mov dword [edi + ebx*4], 0
mov dword [ecx + ebx*4], eax
mov dword [edx + ebx*4], eax
inc ebx
cmp dword [esi], ebx
je 0x10128e2c
jmp 0x10129166
mov eax, dword [esi + 0x50]
lea edx, [eax*4 + 0x2060]
imul edx, dword [esi + 0x38]
mov edi, dword [esi + 0x2c]
lea eax, [edi + edi*2]
lea eax, [edx + eax*4]
mov ecx, dword [ebp + 8]
lea eax, [ecx + eax + 0x5c]
mov dword [esi], eax
lea ecx, [edi + edi*4]
lea ecx, [edx + ecx*4]
mov eax, dword [ebp + 8]
lea eax, [eax + ecx + 0x5c]
mov dword [esi + 0xc], eax
lea edx, [edx + edi*4]
mov eax, dword [ebp + 8]
add edx, eax
add edx, 0x5c
xor edi, edi
mov eax, 0xc1e00000
mov dword [edx + edi*4], 0
mov ecx, dword [esi + 0xc]
mov dword [ecx + edi*4], eax
mov ecx, dword [esi]
mov dword [ecx + edi*4], eax
inc edi
cmp ebx, edi
je 0x10128e37
jmp 0x101291c0
mov eax, edi
sub eax, ebx
mov dword [esi], eax
mov ecx, dword [esi + 0x50]
lea ecx, [ecx*4 + 0x2060]
imul ecx, dword [esi + 0x38]
lea edx, [edi + edi*2]
lea edx, [ecx + edx*4]
lea edx, [edx + ebx*4]
mov eax, edi
lea edi, [edi + edi*4]
lea edi, [ecx + edi*4]
lea edi, [edi + ebx*4]
add ebx, eax
lea ebx, [ecx + ebx*4]
mov ecx, dword [ebp + 8]
lea eax, [ecx + edx]
add eax, 0x5c
lea edx, [ecx + edi]
add edx, 0x5c
lea edi, [ecx + ebx]
add edi, 0x5c
xor ebx, ebx
mov ecx, 0xc1e00000
mov dword [edi + ebx*4], 0
mov dword [edx + ebx*4], ecx
mov dword [eax + ebx*4], ecx
inc ebx
cmp dword [esi], ebx
je 0x10128e45
jmp 0x10129226
mov dword [esi], 0xfffffffd
jmp 0x10128eb4
mov dword [edi + 0x2c], 1
jmp 0x10128eac
xor eax, eax
jmp 0x1012897c