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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x138
mov eax, dword [0x4b3080]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
mov ebx, ecx
mov dword [ebp - 0xbc], eax
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0xac], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x94], eax
xor eax, eax
push esi
mov esi, dword [ebp + 0x1c]
cmp ecx, 0x4fc
push edi
mov edi, edx
mov dword [ebp - 0x6c], 0x4fc
cmovg ecx, dword [ebp - 0x6c]
mov edx, dword [ebp + 8]
mov dword [ebp - 0x9c], edi
mov dword [ebp - 0xa4], ebx
mov dword [ebp - 0x68], edx
mov dword [ebp - 0x88], eax
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xc0], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x78], 0xffffffff
mov dword [ebp - 8], 0xffffffff
mov dword [ebp - 0x7c], ecx
mov dword [ebx + 0x4728], eax
cmp dword [ebx + 0x90], eax
jne 0x436464
mov ecx, dword [ebx + 0x84]
imul eax, edx, 0x190
cmp eax, ecx
je 0x436461
imul eax, edx, 0xc8
cmp eax, ecx
je 0x436461
imul eax, edx, 0x64
cmp eax, ecx
je 0x436461
imul edx, edx, 0x32
cmp edx, ecx
je 0x43645e
imul eax, dword [ebp - 0x68], 0x19
cmp eax, ecx
je 0x43645e
lea eax, [ecx + ecx*2]
cmp edx, eax
jne 0x43893e
mov edx, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x7c]
imul eax, edx, 0x190
cmp eax, dword [ebx + 0x84]
jl 0x43893e
test ecx, ecx
jle 0x43893e
mov eax, dword [ebx + 4]
mov edx, dword [ebx]
add eax, ebx
add edx, ebx
mov dword [ebp - 0xb8], eax
cmp dword [ebx + 0x60], 0x803
mov dword [ebp - 0x80], edx
jne 0x4364a2
mov dword [ebp - 0xc], 0
jmp 0x4364a8
mov eax, dword [ebx + 0x68]
mov dword [ebp - 0xc], eax
mov eax, dword [ebx + 0x9c]
mov ecx, dword [ebp + 0x14]
cmp ecx, eax
cmovge ecx, eax
lea eax, [ebp - 0x64]
push eax
push 0x271f
push edx
mov dword [ebp + 0x14], ecx
call fcn.00446e10
xor eax, eax
add esp, 0xc
cmp dword [ebx + 0x2c], 7
mov dword [ebp - 0x60], eax
jl 0x4365d0
cmp dword [ebx + 0x84], 0xbb80
jne 0x4365d0
mov eax, dword [ebx + 0x21e8]
lea ecx, [ebx + 0xac]
mov edx, dword [ebp - 0x94]
mov dword [ebp - 0x78], eax
mov eax, dword [ebx + 0x21ec]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x90], eax
mov dword [ebp - 0xa8], ecx
test edx, edx
je 0x4365bc
mov eax, 0x16da0
mov ebx, ecx
cmp esi, eax
mov ecx, 0x1e0
cmovle eax, esi
mov edi, dword [ebx + 0x1ae4]
mov esi, eax
mov dword [ebp - 0xb4], eax
sub esi, edi
push fcn.00435a60
push dword [ebp + 0x14]
cmp esi, 0x1e0
mov eax, esi
push dword [ebp + 0x28]
cmovg eax, ecx
mov ecx, ebx
push 0xfffffffffffffffe
push 0
push edi
push eax
push edx
mov edx, dword [ebp - 0x90]
call fcn.0043ed90
mov edx, dword [ebp - 0x94]
sub esi, 0x1e0
add esp, 0x20
add edi, 0x1e0
mov ecx, 0x1e0
test esi, esi
jg 0x436540
mov eax, dword [ebp - 0xb4]
lea edx, [ebp - 0x60]
mov esi, dword [ebp - 0x68]
sub eax, esi
mov ecx, dword [ebp - 0xa8]
mov edi, dword [ebp - 0x9c]
mov dword [ebx + 0x1ae4], eax
mov ebx, dword [ebp - 0xa4]
push esi
call fcn.0043eba0
mov eax, dword [ebp - 0x60]
add esp, 4
jmp 0x4365d3
mov esi, dword [ebp - 0x68]
lea edx, [ebp - 0x60]
push esi
call fcn.0043eba0
mov eax, dword [ebp - 0x60]
add esp, 4
jmp 0x4365d3
mov esi, dword [ebp - 0x68]
movss xmm0, dword [0x4a77b4]
mov dword [ebx + 0x80], 0xffffffff
mov dword [ebx + 0x4724], 0
test eax, eax
je 0x436688
cmp dword [ebx + 0x70], 0xfffffc18
jne 0x43663f
subss xmm0, dword [ebp - 0x4c]
sub esp, 8
mulss xmm0, dword [0x4a7a98]
cvtps2pd xmm0, xmm0
addsd xmm0, qword [0x4a78b8]
movsd qword [ebp - 0x98], xmm0
fld qword [ebp - 0x98]
fstp qword [esp]
call fcn.00485bd0
add esp, 8
call fcn.00483c10
mov dword [ebx + 0x80], eax
mov ecx, dword [ebp - 0x48]
cmp ecx, 0xc
jg 0x436653
mov dword [ebx + 0x4724], 0x44d
jmp 0x436688
cmp ecx, 0xe
jg 0x436664
mov dword [ebx + 0x4724], 0x44e
jmp 0x436688
cmp ecx, 0x10
jg 0x436675
mov dword [ebx + 0x4724], 0x44f
jmp 0x436688
xor eax, eax
cmp ecx, 0x12
setg al
add eax, 0x450
mov dword [ebx + 0x4724], eax
cmp dword [ebx + 0x64], 2
jne 0x4366b2
cmp dword [ebx + 0x6c], 1
je 0x4366b2
lea eax, [ebx + 0x3810]
mov edx, esi
push eax
push dword [ebx + 0x84]
mov ecx, edi
call fcn.00436040
add esp, 8
movaps xmm3, xmm0
jmp 0x4366b5
xorps xmm3, xmm3
push dword [ebp - 0x7c]
mov edx, esi
mov ecx, ebx
call fcn.004351b0
mov ecx, dword [ebx + 0x84]
mov edi, eax
mov eax, ecx
mov dword [ebx + 0x94], edi
cdq
add esp, 4
idiv esi
cmp dword [ebx + 0x88], 0
mov edx, eax
mov dword [ebp - 0xb4], edx
jne 0x43673a
lea eax, [ecx + ecx*2]
cdq
idiv esi
mov esi, eax
lea eax, [edi + edi*2]
cdq
and edx, 7
lea ecx, [edx + eax]
mov eax, esi
cdq
sub eax, edx
sar ecx, 3
sar eax, 1
add eax, ecx
mov ecx, dword [ebp - 0x7c]
cdq
idiv esi
cmp eax, ecx
cmovl ecx, eax
mov eax, 0x55555556
mov dword [ebp - 0x7c], ecx
imul ecx, esi
shl ecx, 3
imul ecx
mov ecx, dword [ebx + 0x84]
mov edi, edx
shr edi, 0x1f
add edi, edx
mov edx, dword [ebp - 0xb4]
mov dword [ebx + 0x94], edi
mov esi, dword [ebp - 0x7c]
cmp esi, 3
jl 0x438898
lea eax, [edx + edx*2]
shl eax, 3
cmp edi, eax
jl 0x438898
cmp edx, 0x32
jge 0x436775
mov eax, edx
imul eax, esi
cmp eax, 0x12c
jl 0x438898
cmp edi, 0x960
jl 0x438898
mov eax, edx
imul eax, esi
mov esi, dword [ebx + 0x64]
shl eax, 3
mov dword [ebp - 0xa8], eax
mov eax, ecx
cdq
idiv dword [ebp - 0x68]
lea ecx, [eax - 0x32]
lea eax, [esi + esi*4]
lea eax, [eax*8 + 0x14]
imul ecx, eax
mov eax, dword [ebx + 0x70]
sub edi, ecx
mov dword [ebp - 0x94], edi
cmp eax, 0xbb9
jne 0x4367b5
mov edi, 0x7f
jmp 0x4367ff
cmp eax, 0xbba
jne 0x4367c0
xor edi, edi
jmp 0x4367ff
mov eax, dword [ebx + 0x80]
mov ecx, dword [ebx + 0x60]
test eax, eax
js 0x4367ec
imul edi, eax, 0x147
sar edi, 8
cmp ecx, 0x801
jne 0x4367ff
mov eax, 0x73
cmp edi, eax
cmovl eax, edi
mov edi, eax
jmp 0x4367ff
cmp ecx, 0x800
mov edi, 0x30
mov eax, 0x73
cmove edi, eax
mov ecx, dword [ebx + 0x6c]
mov dword [ebp - 0x90], ecx
cmp ecx, 0xfffffc18
je 0x43681d
cmp esi, 2
jne 0x43681d
lea edx, [ebx + 0x37d0]
jmp 0x43684d
lea edx, [ebx + 0x37d0]
cmp esi, 2
jne 0x436845
cmp dword [edx], esi
mov ecx, 0x7918
mov eax, 0x7148
cmovne eax, ecx
xor ecx, ecx
cmp dword [ebp - 0x94], eax
setg cl
inc ecx
jmp 0x436847
mov ecx, esi
mov dword [ebp - 0x90], ecx
mov dword [edx], ecx
mov esi, dword [ebx + 0x84]
mov eax, esi
cdq
idiv dword [ebp - 0x68]
mov dword [ebp - 0x74], esi
lea ecx, [eax - 0x32]
mov eax, dword [ebp - 0x90]
lea eax, [eax + eax*4]
lea eax, [eax*8 + 0x14]
imul ecx, eax
mov eax, dword [ebx + 0x94]
sub eax, ecx
cmp dword [ebx + 0x60], 0x803
mov dword [ebp - 0x90], eax
jne 0x4368a2
mov eax, 0x3ea
mov dword [ebx + 0x37f0], 0x3ea
mov dword [ebp - 0x70], eax
jmp 0x4369ad
mov eax, dword [ebx + 0x7c]
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x74], esi
cmp eax, 0xfffffc18
jne 0x4369a7
movss xmm2, dword [0x4a77b4]
mov edx, esi
movss xmm1, dword [0x4a7adc]
subss xmm2, xmm3
movaps xmm0, xmm1
mulss xmm0, xmm3
mulss xmm3, dword [0x4a7af0]
mulss xmm1, xmm2
mulss xmm2, dword [0x4a7b00]
addss xmm0, xmm1
addss xmm2, xmm3
cvttss2si ecx, xmm0
cvttss2si eax, xmm2
sub eax, ecx
imul eax, edi
imul eax, edi
sar eax, 0xe
add eax, ecx
cmp dword [ebx + 0x60], 0x800
cmove edx, esi
lea ecx, [eax + 0x1f40]
cmovne ecx, eax
mov eax, dword [ebx + 0x37f4]
cmp eax, 0x3ea
jne 0x43692c
add ecx, 0xfffff060
jmp 0x43693b
test eax, eax
jle 0x43693b
add ecx, 0xfa0
mov dword [ebp - 0x74], edx
mov esi, edx
xor eax, eax
cmp dword [ebp - 0x90], ecx
setge al
cmp dword [ebx + 0x30], 0
lea eax, [eax*2 + 0x3e8]
mov dword [ebp - 0x70], eax
mov dword [ebx + 0x37f0], eax
je 0x436985
mov dword [ebp - 0x70], eax
mov eax, 0x80
sub eax, edi
sar eax, 4
cmp dword [ebx + 0x28], eax
jle 0x436982
mov eax, 0x3e8
mov dword [ebx + 0x37f0], 0x3e8
mov dword [ebp - 0x70], eax
jmp 0x436985
mov eax, dword [ebp - 0x70]
cmp dword [ebx + 0x34], 0
je 0x4369ad
mov dword [ebp - 0x70], eax
cmp edi, 0x64
jle 0x4369ad
mov eax, 0x3e8
mov dword [ebx + 0x37f0], 0x3e8
mov dword [ebp - 0x70], eax
jmp 0x4369ad
mov dword [ebx + 0x37f0], eax
mov ecx, dword [ebp - 0x68]
cmp eax, 0x3ea
je 0x4369e0
mov dword [ebp - 0x70], eax
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ecx, eax
jge 0x4369e0
mov dword [ebx + 0x37f0], 0x3ea
mov esi, 0x3ea
jmp 0x4369e3
mov esi, dword [ebp - 0x70]
cmp dword [ebx + 0xa4], 0
je 0x4369fb
mov dword [ebx + 0x37f0], 0x3ea
mov esi, 0x3ea
cmp dword [ebp - 0xb4], 0x32
mov edx, 0x2ee0
mov eax, 0x1f40
cmovg eax, edx
imul eax, ecx
mov ecx, dword [ebp - 0x74]
shl ecx, 3
cdq
idiv ecx
cmp dword [ebp - 0x7c], eax
jge 0x436a2f
mov dword [ebx + 0x37f0], 0x3ea
mov esi, 0x3ea
cmp dword [ebx + 0x37d0], 1
jne 0x436a6c
cmp dword [ebx + 0x37f8], 2
jne 0x436a6c
cmp dword [ebx + 0x40], 0
jne 0x436a6c
cmp esi, 0x3ea
je 0x436a6c
cmp dword [ebx + 0x37f4], 0x3ea
je 0x436a6c
mov dword [ebx + 0x37d0], 2
mov eax, 1
jmp 0x436a6e
xor eax, eax
mov dword [ebx + 0x40], eax
mov ecx, dword [ebx + 0x37f4]
test ecx, ecx
jle 0x436a98
mov eax, dword [ebx + 0x37f0]
cmp eax, 0x3ea
je 0x436bed
cmp ecx, 0x3ea
je 0x436bf9
xor edx, edx
mov esi, dword [ebp - 0x68]
cmp dword [ebx + 0x3804], 0
je 0x436ac7
mov edx, 1
mov dword [ebx + 0x3804], 0
mov dword [ebp - 0x8c], edx
mov dword [ebp - 0xb0], edx
mov dword [ebp - 0xa0], edx
test edx, edx
je 0x436b2a
mov eax, 0x51eb851f
imul dword [ebx + 0x84]
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, ecx
add ecx, esi
imul eax, dword [ebp - 0x7c]
cdq
idiv ecx
mov ecx, eax
mov eax, 0x101
cmp ecx, 0x101
cmovg ecx, eax
cmp dword [ebx + 0x88], 0
mov dword [ebp - 0x84], ecx
je 0x436b2a
mov eax, 0x51eb851f
imul dword [ebx + 0x94]
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ecx, eax
cmovge ecx, eax
mov dword [ebp - 0x84], ecx
cmp dword [ebx + 0x37f0], 0x3ea
je 0x436b67
cmp dword [ebx + 0x37f4], 0x3ea
jne 0x436b67
mov edx, dword [ebx + 0xa8]
lea eax, [ebp - 0x138]
mov ecx, dword [ebp - 0xb8]
push eax
call fcn.0043d760
add esp, 4
mov dword [ebp - 0xa0], 1
mov eax, dword [ebx + 0x37f0]
cmp eax, 0x3ea
je 0x436b87
cmp dword [ebx + 0x3808], 0
jne 0x436b87
cmp dword [ebx + 0x50], 0
je 0x436d9f
mov edx, dword [ebp - 0x90]
mov esi, 0x451
mov dword [ebp - 0x74], edx
cmp eax, 0x3ea
je 0x436bca
mov ecx, dword [ebx + 0x2c]
mov eax, 0x51eb851f
add ecx, 0x2d
imul ecx, edx
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebx + 0x88], 0
mov dword [ebp - 0x74], eax
jne 0x436bca
sub eax, 0x3e8
mov dword [ebp - 0x74], eax
cmp dword [ebx + 0x64], 2
jne 0x436c64
cmp dword [ebx + 0x6c], 1
je 0x436c64
mov edx, 0x49fbe0
mov eax, 0x49fc34
jmp 0x436c6e
cmp ecx, 0x3ea
je 0x436a98
xor ebx, ebx
mov edx, 1
cmp eax, 0x3ea
mov dword [ebp - 0x8c], edx
setne bl
mov dword [ebp - 0xb0], ebx
mov ebx, dword [ebp - 0xa4]
jne 0x436a9a
mov esi, dword [ebp - 0x68]
mov eax, 0x51eb851f
imul dword [ebx + 0x84]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jl 0x436c57
mov edx, dword [ebp - 0x8c]
mov dword [ebx + 0x37f0], ecx
mov dword [ebp - 0xc0], 1
jmp 0x436a9d
xor edx, edx
mov dword [ebp - 0x8c], edx
jmp 0x436a9d
mov edx, 0x49fbc0
mov eax, 0x49fc10
mov ecx, dword [edx]
sub ecx, dword [eax]
imul ecx, edi
mov dword [ebp - 0x70], eax
imul ecx, edi
sar ecx, 0xe
add ecx, dword [eax]
mov dword [ebp - 0xe0], ecx
mov ecx, dword [edx + 4]
sub ecx, dword [eax + 4]
imul ecx, edi
imul ecx, edi
sar ecx, 0xe
add ecx, dword [eax + 4]
mov dword [ebp - 0xdc], ecx
mov ecx, dword [edx + 8]
sub ecx, dword [eax + 8]
imul ecx, edi
imul ecx, edi
sar ecx, 0xe
add ecx, dword [eax + 8]
mov dword [ebp - 0xd8], ecx
mov ecx, dword [edx + 0xc]
sub ecx, dword [eax + 0xc]
imul ecx, edi
imul ecx, edi
sar ecx, 0xe
add ecx, dword [eax + 0xc]
mov dword [ebp - 0xd4], ecx
mov ecx, dword [edx + 0x10]
sub ecx, dword [eax + 0x10]
imul ecx, edi
imul ecx, edi
sar ecx, 0xe
add ecx, dword [eax + 0x10]
mov dword [ebp - 0xd0], ecx
mov ecx, dword [edx + 0x14]
sub ecx, dword [eax + 0x14]
imul ecx, edi
imul ecx, edi
sar ecx, 0xe
add ecx, dword [eax + 0x14]
mov dword [ebp - 0xcc], ecx
mov ecx, dword [edx + 0x18]
sub ecx, dword [eax + 0x18]
imul ecx, edi
imul ecx, edi
sar ecx, 0xe
add ecx, dword [eax + 0x18]
mov dword [ebp - 0xc8], ecx
mov ecx, dword [edx + 0x1c]
sub ecx, dword [eax + 0x1c]
imul ecx, edi
imul ecx, edi
mov edi, dword [ebp - 0x74]
sar ecx, 0xe
add ecx, dword [eax + 0x1c]
mov dword [ebp - 0xc4], ecx
lea ecx, [ebp - 0xc4]
nop word [eax + eax]
cmp dword [ebx + 0x3808], 0
mov eax, dword [ecx - 4]
mov edx, dword [ecx]
jne 0x436d5c
cmp dword [ebx + 0x3800], esi
jl 0x436d5a
sub eax, edx
jmp 0x436d5c
add eax, edx
cmp edi, eax
jge 0x436d6c
dec esi
sub ecx, 8
cmp esi, 0x44d
jg 0x436d40
cmp dword [ebx + 0x3808], 0
mov dword [ebx + 0x3800], esi
jne 0x436d9f
cmp dword [ebx + 0x37f0], 0x3ea
je 0x436d9f
cmp dword [ebx + 0x54], 0
jne 0x436d9f
cmp esi, 0x44f
jle 0x436d9f
mov dword [ebx + 0x3800], 0x44f
mov eax, dword [ebx + 0x78]
mov ecx, dword [ebx + 0x3800]
cmp ecx, eax
jle 0x436db4
mov dword [ebx + 0x3800], eax
mov ecx, eax
mov eax, dword [ebx + 0x74]
cmp eax, 0xfffffc18
je 0x436dc6
mov dword [ebx + 0x3800], eax
mov ecx, eax
mov edx, dword [ebx + 0x37f0]
mov eax, ecx
mov esi, edx
mov edi, 0x44f
cmp edx, 0x3ea
je 0x436df6
cmp dword [ebp - 0xa8], 0x3a98
jge 0x436df6
mov eax, edi
cmp ecx, eax
cmovl eax, ecx
mov dword [ebx + 0x3800], eax
mov edx, dword [ebx + 0x84]
mov ecx, eax
cmp edx, 0x5dc0
jg 0x436e1c
cmp eax, 0x450
jle 0x436e1c
mov dword [ebx + 0x3800], 0x450
mov ecx, 0x450
mov eax, ecx
cmp edx, 0x3e80
jg 0x436e32
cmp ecx, edi
jle 0x436e32
mov dword [ebx + 0x3800], edi
mov eax, edi
mov ecx, eax
cmp edx, 0x2ee0
jg 0x436e52
cmp eax, 0x44e
jle 0x436e52
mov dword [ebx + 0x3800], 0x44e
mov ecx, 0x44e
cmp edx, 0x1f40
jg 0x436e6c
cmp ecx, 0x44d
jle 0x436e6c
mov dword [ebx + 0x3800], 0x44d
mov edx, dword [ebx + 0x4724]
test edx, edx
je 0x436f07
cmp dword [ebx + 0x74], 0xfffffc18
jne 0x436f07
mov ecx, dword [ebx + 0x37d0]
mov edi, dword [ebp - 0x90]
imul eax, ecx, 0x4650
cmp edi, eax
jg 0x436eb0
mov esi, dword [ebx + 0x37f0]
cmp esi, 0x3ea
jne 0x436eb0
lea ecx, [esi + 0x63]
jmp 0x436eeb
imul eax, ecx, 0x5dc0
cmp edi, eax
jg 0x436ec7
cmp esi, 0x3ea
jne 0x436ec7
lea ecx, [esi + 0x64]
jmp 0x436eeb
imul eax, ecx, 0x7530
cmp edi, eax
jg 0x436ed8
mov ecx, 0x44f
jmp 0x436eeb
imul eax, ecx, 0xabe0
xor ecx, ecx
cmp edi, eax
setg cl
add ecx, 0x450
mov eax, dword [ebx + 0x3800]
cmp edx, ecx
cmovg ecx, edx
cmp eax, ecx
mov dword [ebx + 0x4724], ecx
cmovge eax, ecx
mov dword [ebx + 0x3800], eax
push dword [ebp + 0x14]
push 0xfc4
push dword [ebp - 0x80]
call fcn.00446e10
mov ecx, dword [ebx + 0x37f0]
add esp, 0xc
cmp ecx, 0x3ea
jne 0x436f3e
cmp dword [ebx + 0x3800], 0x44e
jne 0x436f3e
mov dword [ebx + 0x3800], 0x44f
cmp dword [ebx + 0xa4], 0
je 0x436f51
mov dword [ebx + 0x3800], 0x44d
mov esi, dword [ebx + 0x84]
mov eax, 0x51eb851f
mov edi, dword [ebp - 0x68]
imul esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jle 0x4371b0
cmp ecx, 0x3ea
je 0x436f8b
cmp dword [ebx + 0x3800], 0x44f
jle 0x4371b0
mov eax, dword [ebp - 0x78]
cmp eax, 0xffffffff
je 0x436fa2
mov dword [ebx + 0x21e8], eax
mov eax, dword [ebp - 8]
mov dword [ebx + 0x21ec], eax
mov eax, 0x51eb851f
xor ecx, ecx
imul esi
mov eax, dword [ebp + 0x10]
sar edx, 3
mov esi, edx
shr esi, 0x1f
add esi, edx
cmp edi, esi
mov dword [ebp - 0xbc], esi
setg cl
add eax, 0xfffffffd
add ecx, 2
cdq
idiv ecx
mov dword [ebp - 8], ecx
cmp eax, 0x4fc
cmovg eax, dword [ebp - 0x6c]
mov dword [ebp - 0x88], eax
imul eax, ecx
call fcn.00466990
mov eax, 0x12c
mov dword [ebp - 0x90], esp
call fcn.00466990
mov eax, esp
mov dword [ebp - 0x6c], eax
mov dword [eax + 4], 0
mov eax, dword [ebx + 0x7c]
mov ecx, dword [ebx + 0x40]
mov dword [ebp - 0x94], eax
mov eax, dword [ebx + 0x74]
mov dword [ebp - 0xa0], eax
mov eax, dword [ebx + 0x6c]
mov dword [ebp - 0xa8], eax
mov eax, dword [ebx + 0x37f0]
mov dword [ebx + 0x7c], eax
mov eax, dword [ebx + 0x3800]
mov dword [ebx + 0x74], eax
mov eax, dword [ebx + 0x37d0]
mov dword [ebx + 0x6c], eax
mov dword [ebp - 0xb8], ecx
test ecx, ecx
je 0x43704e
mov dword [ebx + 0x6c], 1
jmp 0x437054
mov dword [ebx + 0x37f8], eax
mov eax, dword [ebp - 0x88]
xor edi, edi
nop dword [eax]
cmp dword [ebp - 0xc0], 0
mov dword [ebx + 0x40], 0
je 0x43708a
xor eax, eax
cmp dword [ebp - 0x68], esi
setg al
inc eax
cmp edi, eax
mov eax, dword [ebp - 0x88]
jne 0x43708a
mov dword [ebx + 0x7c], 0x3ea
mov esi, dword [ebx + 0x84]
push 0
push fcn.00435a60
push dword [ebp + 0x28]
mov ecx, dword [ebx + 0x64]
push 0xfffffffffffffffe
push 0
push 0
push 0
push dword [ebp + 0x14]
imul ecx, esi
push eax
push dword [ebp - 0x90]
mov eax, 0x51eb851f
imul esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
mov eax, 0x51eb851f
imul ecx
mov ecx, dword [ebp - 0x9c]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, edi
lea edx, [ecx + eax*4]
mov ecx, ebx
call fcn.00436380
add esp, 0x2c
test eax, eax
js 0x438887
mov esi, dword [ebp - 0x90]
mov edx, esi
push ecx
mov ecx, dword [ebp - 0x6c]
push eax
call fcn.004410f0
add esp, 8
test eax, eax
js 0x438887
mov eax, dword [ebp - 0x88]
inc edi
mov ecx, dword [ebp - 8]
add esi, eax
mov dword [ebp - 0x90], esi
mov esi, dword [ebp - 0xbc]
cmp edi, ecx
jl 0x437060
mov edi, dword [ebx + 0x88]
test edi, edi
jne 0x437160
mov eax, dword [ebx + 0x94]
lea esi, [eax + eax*2]
mov eax, 0x4b0
cdq
idiv ecx
mov ecx, eax
mov eax, esi
cdq
idiv ecx
mov ecx, dword [ebp + 0x10]
cmp eax, ecx
cmovl ecx, eax
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp - 8]
xor eax, eax
test edi, edi
sete al
push eax
mov eax, dword [ebp - 0xac]
push ecx
push dword [ebp + 0x10]
push eax
push ecx
mov ecx, dword [ebp - 0x6c]
call fcn.004411b0
add esp, 0x14
test eax, eax
js 0x438887
mov ecx, dword [ebp - 0x94]
mov dword [ebx + 0x7c], ecx
mov ecx, dword [ebp - 0xa0]
mov dword [ebx + 0x74], ecx
mov ecx, dword [ebp - 0xa8]
mov dword [ebx + 0x6c], ecx
mov ecx, dword [ebp - 0xb8]
mov dword [ebx + 0x40], ecx
jmp 0x438941
mov eax, dword [ebx + 0x3800]
mov dword [ebp - 0x74], eax
cmp ecx, 0x3e8
jne 0x4371d7
cmp eax, 0x44f
jle 0x4371d7
mov dword [ebx + 0x37f0], 0x3e9
mov ecx, 0x3e9
cmp ecx, 0x3e9
jne 0x4371f0
cmp eax, 0x44f
jg 0x4371f0
mov dword [ebx + 0x37f0], 0x3e8
mov eax, dword [ebx + 0x94]
lea ecx, [esi*8]
imul eax, edi
mov esi, dword [ebx + 0x64]
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
cdq
idiv ecx
mov edx, dword [ebp - 0x7c]
mov ecx, edx
sub ecx, dword [ebp - 0x84]
cmp ecx, eax
mov dword [ebp - 0x28], 0x21
mov dword [ebp - 0x24], 0
cmovge ecx, eax
mov dword [ebp - 0x20], 0x80000000
mov eax, dword [ebp - 0xac]
dec ecx
inc eax
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0xac], eax
mov dword [ebp - 0x3c], eax
lea eax, [edx - 1]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0xc]
add eax, edi
mov dword [ebp - 0x14], 0xffffffff
imul eax, esi
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x10], 0
shl eax, 2
call fcn.00466990
mov eax, esi
mov edx, esp
imul eax, dword [ebp - 0xc]
mov dword [ebp - 0x70], edx
shl eax, 2
push eax
mov eax, dword [ebx + 0xa0]
sub eax, dword [ebp - 0xc]
imul eax, esi
add eax, 0xe09
lea eax, [ebx + eax*4]
push eax
push edx
call fcn.004674e0
add esp, 0xc
cmp dword [ebx + 0x37f0], 0x3ea
jne 0x437340
mov edx, 0x3c
mov edi, 0x1f
bsr eax, edx
sub edi, eax
mov eax, 0x18
sub eax, edi
mov esi, eax
neg esi
mov dword [ebp - 0x6c], esi
test eax, eax
jne 0x4372e8
mov esi, edx
jmp 0x437309
jns 0x4372fc
mov ecx, 0x20
sub ecx, esi
mov esi, edx
shr esi, cl
mov ecx, dword [ebp - 0x6c]
shl edx, cl
jmp 0x437307
lea ecx, [edi + 8]
mov esi, edx
shl esi, cl
mov ecx, eax
shr edx, cl
or esi, edx
and esi, 0x7f
mov edx, 0x80
sub edx, esi
imul edx, esi
movzx eax, dx
imul ecx, eax, 0xb3
sar edx, 0x10
imul eax, edx, 0xb3
sar ecx, 0x10
add eax, esi
mov esi, 0x1f
sub esi, edi
add eax, ecx
shl esi, 7
add esi, eax
shl esi, 8
jmp 0x437349
mov eax, dword [ebp - 0xb8]
mov esi, dword [eax + 8]
mov edx, dword [ebx + 0x37d8]
sub esi, edx
movzx eax, si
imul ecx, eax, 0x3d7
sar esi, 0x10
imul esi, esi, 0x3d7
sar ecx, 0x10
add ecx, edx
add esi, ecx
mov dword [ebx + 0x37d8], esi
sar esi, 8
test esi, esi
jns 0x43737b
xor edx, edx
jmp 0x4373de
cmp esi, 0xf7f
jl 0x43738a
mov edx, 0x7fffffff
jmp 0x4373de
mov ecx, esi
mov edx, 1
sar ecx, 7
mov eax, 0x80
shl edx, cl
mov ecx, esi
and ecx, 0x7f
sub eax, ecx
imul eax, ecx
mov dword [ebp - 0x6c], eax
movzx eax, ax
imul edi, eax, 0xffffff52
mov eax, dword [ebp - 0x6c]
sar eax, 0x10
imul eax, eax, 0xae
sar edi, 0x10
sub edi, eax
mov eax, edx
add edi, ecx
cmp esi, 0x800
jge 0x4373d6
imul eax, edi
sar eax, 7
jmp 0x4373dc
sar eax, 7
imul eax, edi
add edx, eax
cmp dword [ebx + 0x60], 0x800
lea esi, [ebx + 0x37e0]
mov edi, dword [ebx + 0x64]
mov ecx, dword [ebx + 0x84]
mov dword [ebp - 8], edi
jne 0x43741d
mov eax, dword [ebp - 0x70]
push ecx
mov ecx, dword [ebp - 0x9c]
push edi
imul edi, dword [ebp - 0xc]
push dword [ebp - 0x68]
push esi
lea eax, [eax + edi*4]
push eax
call fcn.00434d70
add esp, 0x14
jmp 0x4374df
mov edx, dword [ebp - 0x70]
mov eax, edi
imul eax, dword [ebp - 0xc]
movss xmm3, dword [0x4a7a68]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
lea edx, [edx + eax*4]
xor eax, eax
mov dword [ebp - 0x94], edx
divss xmm3, xmm0
test edi, edi
jle 0x4374df
movss xmm4, dword [0x4a75c8]
mov ebx, dword [ebp - 8]
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x6c], edx
nop dword [eax]
test ecx, ecx
jle 0x4374ce
mov edi, dword [ebp - 0x9c]
lea ecx, [ebx*4]
sub edi, dword [ebp - 0x94]
mov dword [ebp - 8], ecx
mov ecx, edx
mov edx, dword [ebp - 0x68]
nop
movss xmm2, dword [ecx + edi]
subss xmm2, dword [esi + eax*8]
movaps xmm0, xmm2
subss xmm2, dword [esi + eax*8 + 4]
mulss xmm0, xmm3
addss xmm0, dword [esi + eax*8]
addss xmm0, xmm4
movss dword [esi + eax*8], xmm0
movaps xmm0, xmm3
mulss xmm0, xmm2
addss xmm0, dword [esi + eax*8 + 4]
addss xmm0, xmm4
movss dword [esi + eax*8 + 4], xmm0
movss dword [ecx], xmm2
add ecx, dword [ebp - 8]
sub edx, 1
jne 0x437480
mov edx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x68]
inc eax
add edx, 4
mov dword [ebp - 0x6c], edx
cmp eax, ebx
jl 0x437460
mov ebx, dword [ebp - 0xa4]
movss xmm0, dword [0x4a77b4]
mov esi, dword [ebx + 0x37f0]
movss dword [ebp - 0x9c], xmm0
cmp esi, 0x3ea
je 0x437c1d
mov eax, dword [ebx + 0x64]
imul eax, dword [ebp - 0x68]
add eax, eax
call fcn.00466990
mov edi, dword [ebp - 0x78]
imul edi, dword [ebp - 0xb4]
mov dword [ebp - 0x94], esp
shl edi, 3
cmp esi, 0x3e9
jne 0x437618
imul eax, dword [ebp - 0x68], 0x64
mov ecx, 0x1388
mov esi, dword [ebx + 0x37d0]
mov dword [ebp - 0x6c], 0x1770
mov dword [ebp - 8], esi
cmp dword [ebx + 0x84], eax
mov eax, edi
cmove ecx, dword [ebp - 0x6c]
imul ecx, esi
sub eax, ecx
mov dword [ebp - 0x6c], ecx
cmp dword [ebp - 0x74], 0x450
mov dword [ebx + 0x24], ecx
jne 0x437573
lea ecx, [eax + eax]
mov eax, 0x55555556
imul ecx
jmp 0x43757f
lea ecx, [eax + eax*2]
mov eax, 0x66666667
imul ecx
sar edx, 1
mov esi, edx
lea eax, [ebx + 0x24]
shr esi, 0x1f
lea ecx, [edi*4]
add esi, edx
add esi, dword [ebp - 0x6c]
mov dword [eax], esi
mov eax, 0x66666667
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jle 0x4375ae
mov dword [ebx + 0x24], eax
mov esi, eax
cmp dword [ebx + 0x380c], 0
jne 0x43761b
sub edi, esi
movss xmm5, dword [0x4a77b4]
cmp dword [ebp - 0x74], 0x450
mov eax, 0xe10
mov ecx, 0xbb8
cmove eax, ecx
imul eax, dword [ebp - 8]
movd xmm1, edi
cvtdq2ps xmm1, xmm1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, xmm1
divss xmm1, xmm0
movss xmm0, dword [0x4a7780]
comiss xmm0, xmm1
jbe 0x43760e
addss xmm1, dword [0x4a76a8]
movss dword [ebp - 0x9c], xmm1
jmp 0x437623
movss dword [ebp - 0x9c], xmm5
jmp 0x437623
mov dword [ebx + 0x24], edi
movss xmm5, dword [0x4a77b4]
mov eax, dword [ebx + 0x380c]
xorps xmm4, xmm4
mov dword [ebp - 0x6c], eax
test eax, eax
je 0x437793
cmp dword [ebx + 0x88], 0
je 0x437793
cmp dword [ebx + 0xa4], 0
jne 0x437793
mov eax, dword [ebx + 0x3800]
xorps xmm2, xmm2
mov edi, 0x11
cmp eax, 0x44d
jne 0x437677
mov edi, 0xd
mov dword [ebp - 0x88], 0x1f40
jmp 0x437697
mov dword [ebp - 0x88], 0x3e80
cmp eax, 0x44e
jne 0x437697
mov edi, 0xf
mov dword [ebp - 0x88], 0x2ee0
mov eax, dword [ebx + 0x64]
test eax, eax
jle 0x4376f8
movss xmm1, dword [0x4a7ba8]
xor edx, edx
movss xmm3, dword [0x4a7714]
mov esi, eax
mov ebx, dword [ebp - 0x6c]
lea eax, [edx + ebx]
mov ecx, edi
nop word [eax + eax]
movss xmm0, dword [eax]
minss xmm0, xmm3
comiss xmm0, xmm1
jbe 0x4376d8
comiss xmm0, xmm4
jbe 0x4376db
mulss xmm0, xmm3
jmp 0x4376db
movaps xmm0, xmm1
add eax, 4
addss xmm2, xmm0
sub ecx, 1
jne 0x4376c0
add edx, 0x54
sub esi, 1
jne 0x4376b5
mov ebx, dword [ebp - 0xa4]
mov eax, dword [ebx + 0x64]
movd xmm0, edi
cvtdq2ps xmm0, xmm0
mov ecx, dword [ebx + 0x24]
neg ecx
add ecx, ecx
divss xmm2, xmm0
movd xmm0, eax
mov eax, 0x55555556
cvtdq2ps xmm0, xmm0
imul ecx
mulss xmm2, xmm0
movd xmm0, dword [ebp - 0x88]
cvtdq2ps xmm0, xmm0
mov eax, dword [ebx + 0x3800]
mov edi, edx
shr edi, 0x1f
add edi, edx
addss xmm2, dword [0x4a76b8]
mulss xmm2, xmm0
cvttss2si esi, xmm2
cmp esi, edi
cmovg edi, esi
cmp eax, 0x450
je 0x43775e
cmp eax, 0x451
je 0x43775e
mov eax, dword [ebx + 0x24]
add eax, edi
jmp 0x437774
lea ecx, [edi + edi*2]
mov eax, 0x66666667
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, dword [ebx + 0x24]
mov edx, 0x24
mov ecx, ebx
mov dword [ecx + edx], eax
mov eax, dword [ebp - 0x68]
mov ecx, dword [ebx + 0x84]
imul eax, edi
shl ecx, 3
cdq
idiv ecx
add dword [ebp - 0x78], eax
imul eax, dword [ebp - 0x68], 0x3e8
mov edi, dword [ebp - 0x74]
cdq
idiv dword [ebx + 0x84]
mov dword [ebx + 0x20], eax
mov eax, dword [ebx + 0x64]
mov dword [ebx + 8], eax
mov eax, dword [ebx + 0x37d0]
mov dword [ebx + 0xc], eax
cmp edi, 0x44d
jne 0x4377cc
mov dword [ebx + 0x1c], 0x1f40
mov esi, 0x1f40
jmp 0x4377ee
cmp edi, 0x44e
jne 0x4377e2
mov dword [ebx + 0x1c], 0x2ee0
mov esi, 0x2ee0
jmp 0x4377ee
mov dword [ebx + 0x1c], 0x3e80
mov esi, 0x3e80
mov ecx, dword [ebx + 0x37f0]
mov eax, 0x3e80
cmp ecx, 0x3e9
mov edx, 0x1f40
cmovne eax, edx
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x14], 0x3e80
cmp ecx, 0x3e8
jne 0x437877
cmp dword [ebp - 0xb4], 0x32
mov eax, dword [ebp - 0xa8]
jle 0x43783e
lea ecx, [eax + eax]
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, 0x1f40
cmp eax, 0x32c8
jge 0x43785d
cmp esi, 0x2ee0
mov dword [ebx + 0x14], 0x2ee0
mov ecx, 0x2ee0
cmova esi, ecx
mov dword [ebx + 0x1c], esi
cmp eax, 0x2580
jge 0x437877
cmp esi, 0x1f40
mov dword [ebx + 0x14], 0x1f40
cmova esi, edx
mov dword [ebx + 0x1c], esi
mov esi, dword [ebx + 0x88]
xor eax, eax
test esi, esi
mov ecx, 0x4fb
sete al
mov dword [ebx + 0x38], eax
mov eax, dword [ebp - 0x7c]
sub eax, dword [ebp - 0x84]
dec eax
cmp eax, ecx
cmovg eax, ecx
mov dword [ebp - 0x40], eax
shl eax, 3
cmp dword [ebx + 0x37f0], 0x3e9
mov dword [ebx + 0x3c], eax
jne 0x4378c7
lea ecx, [eax + eax*8]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebx + 0x3c], eax
test esi, esi
jne 0x4378fa
mov esi, dword [ebx + 0x24]
mov eax, dword [ebp - 0x68]
mov ecx, dword [ebx + 0x84]
imul eax, esi
shl ecx, 3
cdq
idiv ecx
mov ecx, 1
shl eax, 3
mov dword [ebx + 0x3c], eax
lea eax, [esi - 0x7d0]
cmp eax, 1
cmovl eax, ecx
mov dword [ebx + 0x24], eax
cmp dword [ebp - 0xa0], 0
movss xmm2, dword [0x4a7aec]
movss xmm3, dword [0x4a7be0]
movss xmm1, dword [0x4a7ae8]
je 0x437a63
mov ebx, dword [ebx + 0x84]
mov eax, 0x51eb851f
mov ecx, dword [ebp - 0xa4]
movaps xmm3, xmm5
imul ebx
movaps xmm2, xmm4
mov eax, dword [ecx + 0xa0]
sub eax, dword [ecx + 0x68]
sar edx, 7
mov esi, edx
mov dword [ebp - 8], 0
shr esi, 0x1f
add esi, edx
mov edx, dword [ecx + 0x64]
sub eax, esi
add ecx, 0x3824
imul eax, edx
push ebx
lea edi, [eax*4]
mov eax, dword [ebp - 0x64]
add ecx, edi
push dword [eax + 0x3c]
push edx
push esi
push dword [eax + 4]
mov edx, ecx
call fcn.00434f70
mov ebx, dword [ebp - 0xa4]
push edi
push 0
lea esi, [ebx + 0x3824]
push esi
call fcn.00467a60
mov eax, dword [ebx + 0x64]
add esp, 0x20
mov edx, dword [ebx + 0xa0]
xor ecx, ecx
imul eax, edx
test eax, eax
jle 0x437a25
movss xmm1, dword [0x4a7ae8]
movss xmm2, dword [0x4a7aec]
movss xmm3, dword [0x4a7be0]
mov edi, dword [ebp - 0x94]
nop dword [eax + eax]
movss xmm0, dword [esi]
mulss xmm0, xmm2
comiss xmm0, xmm3
movss dword [ebp - 0xa0], xmm0
ja 0x4379f1
mov dword [ebp - 0xa0], 0xc7000000
jmp 0x437a00
comiss xmm1, xmm0
ja 0x437a00
mov dword [ebp - 0xa0], 0x46fffe00
fld dword [ebp - 0xa0]
fistp dword [ebp - 0x6c]
mov ax, word [ebp - 0x6c]
add esi, 4
mov word [edi + ecx*2], ax
inc ecx
mov eax, dword [ebx + 0x64]
mov edx, dword [ebx + 0xa0]
imul eax, edx
cmp ecx, eax
jl 0x4379d0
mov esi, dword [ebp - 0x94]
lea eax, [ebp - 8]
mov ecx, dword [ebp - 0xb8]
push 1
push eax
push 0
push edx
push esi
lea edx, [ebx + 8]
call fcn.0043d870
movss xmm1, dword [0x4a7ae8]
add esp, 0x14
movss xmm2, dword [0x4a7aec]
movss xmm3, dword [0x4a7be0]
mov edi, dword [ebp - 0x74]
jmp 0x437a69
mov esi, dword [ebp - 0x94]
mov ecx, dword [ebx + 0x64]
xor edx, edx
mov eax, ecx
imul eax, dword [ebp - 0x68]
test eax, eax
jle 0x437adb
mov edi, dword [ebp - 0x68]
nop dword [eax + eax]
imul ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x70]
add ecx, edx
movss xmm0, dword [eax + ecx*4]
mulss xmm0, xmm2
comiss xmm0, xmm3
movss dword [ebp - 0x94], xmm0
ja 0x437aab
mov dword [ebp - 0x94], 0xc7000000
jmp 0x437aba
comiss xmm1, xmm0
ja 0x437aba
mov dword [ebp - 0x94], 0x46fffe00
fld dword [ebp - 0x94]
fistp dword [ebp - 0x6c]
mov ax, word [ebp - 0x6c]
mov word [esi + edx*2], ax
mov eax, edi
mov ecx, dword [ebx + 0x64]
inc edx
imul eax, ecx
cmp edx, eax
jl 0x437a80
mov edi, dword [ebp - 0x74]
mov ecx, dword [ebp - 0xb8]
lea eax, [ebp - 0x40]
push 0
push eax
lea eax, [ebp - 0x3c]
push eax
push dword [ebp - 0x68]
lea edx, [ebx + 8]
push esi
call fcn.0043d870
add esp, 0x14
mov dword [ebp - 0x88], eax
test eax, eax
jne 0x438887
mov esi, dword [ebx + 0x37f0]
cmp dword [ebp - 0x40], eax
jne 0x437bb7
mov dword [ebx + 0x4728], eax
mov eax, dword [ebx + 0x84]
cdq
idiv dword [ebp - 0x68]
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x40], eax
cmp ecx, 0x190
jge 0x437b44
add ecx, ecx
inc eax
cmp ecx, 0x190
jl 0x437b36
mov dword [ebp - 0x40], eax
cmp esi, 0x3e8
jne 0x437b5e
mov ecx, dword [ebp - 0x74]
sub al, 2
add cl, 3
shl al, 3
shl cl, 5
or cl, al
jmp 0x437b95
cmp esi, 0x3ea
jne 0x437b86
xor edx, edx
lea ecx, [edi - 0x44e]
test ecx, ecx
movzx eax, cl
cmovns edx, eax
or dl, 0xfc
shl dl, 2
or dl, byte [ebp - 0x40]
shl dl, 3
mov cl, dl
jmp 0x437b95
mov ecx, dword [ebp - 0x74]
sub al, 2
or cl, 6
add cl, cl
or cl, al
shl cl, 3
cmp dword [ebx + 0x37d0], 2
setne al
dec al
and al, 4
or al, cl
mov ecx, dword [ebp - 0xbc]
mov byte [ecx], al
mov eax, 1
jmp 0x438941
cmp esi, 0x3e8
jne 0x437bf5
mov eax, dword [ebx + 0x4c]
cmp eax, 0x1f40
jne 0x437bd2
mov dword [ebp - 0x74], 0x44d
jmp 0x437bf5
cmp eax, 0x2ee0
jne 0x437be2
mov dword [ebp - 0x74], 0x44e
jmp 0x437bf5
mov ecx, dword [ebp - 0x74]
cmp eax, 0x3e80
mov eax, 0x44f
cmove ecx, eax
mov dword [ebp - 0x74], ecx
mov eax, dword [ebx + 0x5c]
mov dword [ebx + 0x44], eax
test eax, eax
je 0x437c1d
mov dword [ebp - 0x8c], 1
mov dword [ebp - 0xb0], 0
mov dword [ebx + 0x3804], 1
mov ecx, dword [ebp - 0x74]
mov eax, 0x15
add ecx, 0xfffffbb3
cmp ecx, 4
ja case.0x437c30.1105
jmp dword [ecx*4 + 0x438958]
mov eax, 0xd
jmp case.0x437c30.1105
mov eax, 0x11
jmp case.0x437c30.1105
mov eax, 0x13
mov edi, dword [ebp - 0x80]
push eax
push 0x271c
push edi
call fcn.00446e10
push dword [ebx + 0x37d0]
push 0x2718
push edi
call fcn.00446e10
push 0xffffffffffffffff
push 0xfa2
push edi
call fcn.00446e10
mov esi, dword [ebx + 0x37f0]
add esp, 0x24
cmp esi, 0x3e8
je 0x437e02
push 0
push 0xfa6
push edi
call fcn.00446e10
add esp, 0xc
cmp dword [ebx + 0x48], 0
je 0x437ca7
xorps xmm0, xmm0
jmp 0x437caf
movss xmm0, dword [0x4a7960]
cvttss2si eax, xmm0
push eax
push 0x2712
push edi
call fcn.00446e10
mov esi, dword [ebx + 0x37f0]
add esp, 0xc
cmp esi, 0x3e9
jne 0x437d27
bsr eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
sub ecx, eax
add ecx, 6
sar ecx, 3
cmp dword [ebp - 0x8c], 0
lea edi, [ecx + 3]
cmove edi, ecx
cmp dword [ebx + 0x88], 0
je 0x437d17
mov eax, dword [ebx + 0x24]
imul eax, dword [ebp - 0x68]
mov ecx, dword [ebx + 0x84]
shl ecx, 3
cdq
idiv ecx
mov ecx, dword [ebp - 0x78]
sub ecx, eax
add ecx, edi
mov dword [ebp - 0x78], ecx
jmp 0x437e09
mov ecx, dword [ebp - 0x78]
cmp edi, ecx
cmovg ecx, edi
mov dword [ebp - 0x78], ecx
jmp 0x437e09
cmp dword [ebx + 0x88], 0
je 0x437dfa
xor esi, esi
cmp dword [ebx + 0x90], 0x1392
jne 0x437db0
mov edi, dword [ebx + 0x84]
mov eax, 0x51eb851f
imul edi
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp dword [ebp - 0x68], ecx
je 0x437dad
mov eax, edi
mov ecx, dword [ebx + 0x37d0]
cdq
idiv dword [ebp - 0x68]
mov edi, dword [ebp - 0x80]
mov edx, ecx
shl edx, 4
sub edx, ecx
lea esi, [eax - 0x32]
lea ecx, [edx*4 + 0x28]
imul esi, ecx
cmp dword [ebp - 0x60], 0
je 0x437db0
movss xmm1, dword [ebp - 0x5c]
mulss xmm1, dword [0x4a7714]
movd xmm0, esi
cvtdq2ps xmm0, xmm0
addss xmm1, dword [0x4a77b4]
mulss xmm1, xmm0
cvttss2si esi, xmm1
jmp 0x437db0
mov edi, dword [ebp - 0x80]
push 1
push 0xfa6
push edi
call fcn.00446e10
push dword [ebx + 0x8c]
push 0xfb4
push edi
call fcn.00446e10
mov eax, dword [ebx + 0x94]
add eax, esi
push eax
push 0xfa2
push edi
call fcn.00446e10
mov eax, dword [ebp - 0x7c]
add esp, 0x24
sub eax, dword [ebp - 0x84]
mov esi, dword [ebx + 0x37f0]
dec eax
mov dword [ebp - 0x78], eax
jmp 0x437e09
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x78], eax
jmp 0x437e09
mov dword [ebp - 0x78], 0
mov ecx, dword [ebx + 0x64]
mov eax, 0x51eb851f
imul ecx, dword [ebx + 0x84]
imul ecx
sar edx, 7
mov edi, edx
shr edi, 0x1f
add edi, edx
shl edi, 2
mov eax, edi
call fcn.00466990
mov dword [ebp - 8], esp
cmp esi, 0x3e8
je 0x437e81
mov eax, dword [ebx + 0x37f4]
cmp esi, eax
je 0x437e81
test eax, eax
jle 0x437e81
mov ecx, dword [ebx + 0xa0]
mov eax, 0x51eb851f
imul dword [ebx + 0x84]
push edi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
sub ecx, dword [ebp - 0xc]
imul ecx, dword [ebx + 0x64]
add ecx, 0xe09
lea eax, [ebx + ecx*4]
push eax
push dword [ebp - 8]
call fcn.004674e0
add esp, 0xc
mov edx, dword [ebx + 0xa0]
lea esi, [ebx + 0x3824]
mov edi, dword [ebp - 0x68]
mov eax, edx
mov ecx, dword [ebx + 0x64]
sub eax, edi
sub eax, dword [ebp - 0xc]
imul eax, ecx
test eax, eax
jle 0x437eeb
imul ecx, edi
shl eax, 2
push eax
add ecx, 0xe09
lea eax, [ebx + ecx*4]
push eax
push esi
call fcn.004674e0
mov edx, dword [ebp - 0xc]
mov esi, dword [ebp - 0x70]
lea eax, [edi + edx]
imul eax, dword [ebx + 0x64]
shl eax, 2
push eax
mov eax, dword [ebx + 0xa0]
sub eax, edi
sub eax, edx
imul eax, dword [ebx + 0x64]
push esi
add eax, 0xe09
lea eax, [ebx + eax*4]
push eax
call fcn.004674e0
add esp, 0x18
jmp 0x437f11
mov eax, ecx
imul eax, edx
shl eax, 2
push eax
mov eax, edi
sub eax, edx
add eax, dword [ebp - 0xc]
imul eax, ecx
mov ecx, dword [ebp - 0x70]
lea eax, [ecx + eax*4]
push eax
push esi
call fcn.004674e0
mov esi, dword [ebp - 0x70]
add esp, 0xc
movss xmm2, dword [ebx + 0x37dc]
movss xmm4, dword [0x4a77b4]
comiss xmm4, xmm2
movss xmm3, dword [ebp - 0x9c]
ja 0x437f33
comiss xmm4, xmm3
jbe 0x437f5a
push dword [ebx + 0x84]
mov eax, dword [ebp - 0x64]
mov edx, esi
mov ecx, esi
push dword [eax + 0x3c]
push dword [ebx + 0x64]
push edi
push dword [eax + 4]
call fcn.00434f70
movss xmm4, dword [0x4a77b4]
add esp, 0x14
cmp dword [ebx + 0x37f0], 0x3e9
movss dword [ebx + 0x37dc], xmm3
jne 0x437f77
cmp dword [ebx + 0x37d0], 1
jne 0x437fa4
mov ecx, dword [ebp - 0x90]
xor eax, eax
add ecx, 0xffff8ad0
cmovns eax, ecx
add eax, eax
cmp eax, 0x4000
jle 0x437f98
mov eax, 0x4000
jmp 0x437fa1
xor eax, eax
test ecx, ecx
cmovns eax, ecx
add eax, eax
mov dword [ebx + 0x58], eax
cmp dword [ebx + 0x380c], 0
jne 0x4380e9
cmp dword [ebx + 0x64], 2
jne 0x4380e9
movzx edi, word [ebx + 0x37d4]
mov eax, 0x4000
cmp di, ax
jl 0x437fd5
cmp dword [ebx + 0x58], eax
jge 0x4380e9
mov eax, 0xbb80
mov ecx, dword [ebp - 0x64]
cdq
movaps xmm6, xmm4
idiv dword [ebx + 0x84]
movss xmm7, dword [0x4a7714]
movaps xmm5, xmm4
mov dword [ebp - 0x6c], eax
mov eax, dword [ecx + 4]
mov esi, dword [ecx + 0x3c]
cdq
idiv dword [ebp - 0x6c]
movsx ecx, di
xor edi, edi
mov edx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x4a760c]
subss xmm6, xmm0
movd xmm0, dword [ebx + 0x58]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x4a760c]
subss xmm5, xmm0
test edx, edx
jle 0x438096
mov eax, dword [ebp - 0x6c]
mov edi, edx
lea ecx, [eax*4]
mov eax, dword [ebp - 0x70]
movss xmm1, dword [esi]
add esi, ecx
movss xmm0, dword [0x4a77b4]
movss xmm3, dword [eax]
movss xmm4, dword [eax + 4]
mulss xmm1, xmm1
subss xmm0, xmm1
movaps xmm2, xmm1
mulss xmm2, xmm5
mulss xmm0, xmm6
addss xmm2, xmm0
movaps xmm0, xmm3
subss xmm0, xmm4
mulss xmm0, xmm7
mulss xmm2, xmm0
subss xmm3, xmm2
addss xmm4, xmm2
movss dword [eax], xmm3
movss dword [eax + 4], xmm4
add eax, 8
sub edx, 1
jne 0x438040
mov ecx, dword [ebp - 0x68]
cmp edi, ecx
jge 0x4380de
mov eax, dword [ebp - 0x70]
sub ecx, edi
lea eax, [eax + edi*8]
nop word [eax + eax]
movss xmm2, dword [eax]
movaps xmm0, xmm2
subss xmm0, dword [eax + 4]
mulss xmm0, xmm7
mulss xmm0, xmm5
subss xmm2, xmm0
addss xmm0, dword [eax + 4]
movss dword [eax], xmm2
movss dword [eax + 4], xmm0
add eax, 8
sub ecx, 1
jne 0x4380b0
mov ax, word [ebx + 0x58]
mov word [ebx + 0x37d4], ax
mov edi, dword [ebx + 0x37f0]
cmp edi, 0x3ea
je 0x438487
mov esi, dword [ebp - 0x20]
xor ecx, ecx
bsr eax, esi
cmp edi, 0x3e9
mov edx, 0x14
cmove ecx, edx
mov edx, dword [ebp - 0x28]
sub ecx, eax
mov eax, dword [ebp - 0x7c]
add ecx, 0x10
add ecx, edx
lea eax, [eax*8 - 8]
cmp ecx, eax
jg 0x438487
cmp edi, 0x3e9
jne 0x438252
mov ecx, dword [ebp - 0x8c]
test ecx, ecx
jne 0x43815d
mov edi, dword [ebp - 0x78]
bsr eax, esi
sub edx, eax
lea eax, [edi*8]
add edx, 0x24
cmp edx, eax
jg 0x438412
mov esi, dword [ebp - 0x20]
mov eax, esi
shr eax, 0xc
sub esi, eax
test ecx, ecx
je 0x438170
add dword [ebp - 0x1c], esi
test ecx, ecx
mov ecx, dword [ebp - 0x18]
cmovne esi, eax
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x20], esi
cmp esi, 0x800000
ja 0x438258
mov ebx, dword [ebp - 0x14]
nop dword [eax + eax]
mov eax, dword [ebp - 0x1c]
shr eax, 0x17
mov dword [ebp - 0x94], eax
cmp eax, 0xff
je 0x43821f
sar eax, 8
mov dword [ebp - 0x6c], eax
test ebx, ebx
js 0x4381dd
mov eax, dword [ebp - 0x34]
add eax, edx
cmp eax, dword [ebp - 0x38]
jb 0x4381c0
or eax, 0xffffffff
jmp 0x4381d7
mov eax, dword [ebp - 0x3c]
mov cl, byte [ebp - 0x6c]
add cl, bl
mov byte [edx + eax], cl
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
inc edx
mov dword [ebp - 0x24], edx
xor eax, eax
or dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x6c]
test ecx, ecx
je 0x438211
dec eax
movzx ebx, al
mov eax, dword [ebp - 0x34]
add eax, edx
cmp eax, dword [ebp - 0x38]
jb 0x4381f4
or eax, 0xffffffff
jmp 0x438206
mov eax, dword [ebp - 0x3c]
mov byte [edx + eax], bl
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
inc edx
mov dword [ebp - 0x24], edx
xor eax, eax
or dword [ebp - 0x10], eax
sub ecx, 1
mov dword [ebp - 0x18], ecx
jne 0x4381e5
mov eax, dword [ebp - 0x94]
movzx ebx, al
mov dword [ebp - 0x14], ebx
jmp 0x438223
inc ecx
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x20]
and eax, 0x7fffff
add dword [ebp - 0x28], 8
shl esi, 8
shl eax, 8
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], esi
cmp esi, 0x800000
jbe 0x438190
mov ebx, dword [ebp - 0xa4]
jmp 0x438258
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x24]
cmp dword [ebp - 0x8c], 0
je 0x43840f
mov esi, dword [ebp - 0x20]
mov eax, esi
mov edi, dword [ebp - 0xb0]
shr eax, 1
sub esi, eax
test edi, edi
je 0x43827d
add dword [ebp - 0x1c], esi
test edi, edi
cmovne esi, eax
mov dword [ebp - 0x20], esi
cmp esi, 0x800000
ja 0x438352
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
shr eax, 0x17
mov dword [ebp - 0x94], eax
cmp eax, 0xff
je 0x438321
sar eax, 8
mov dword [ebp - 0x6c], eax
test ebx, ebx
js 0x4382df
mov eax, dword [ebp - 0x34]
add eax, edx
cmp eax, dword [ebp - 0x38]
jb 0x4382c2
or eax, 0xffffffff
jmp 0x4382d9
mov eax, dword [ebp - 0x3c]
mov cl, byte [ebp - 0x6c]
add cl, bl
mov byte [edx + eax], cl
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
inc edx
mov dword [ebp - 0x24], edx
xor eax, eax
or dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x6c]
test ecx, ecx
je 0x438313
dec eax
movzx ebx, al
mov eax, dword [ebp - 0x34]
add eax, edx
cmp eax, dword [ebp - 0x38]
jb 0x4382f6
or eax, 0xffffffff
jmp 0x438308
mov eax, dword [ebp - 0x3c]
mov byte [edx + eax], bl
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
inc edx
mov dword [ebp - 0x24], edx
xor eax, eax
or dword [ebp - 0x10], eax
sub ecx, 1
mov dword [ebp - 0x18], ecx
jne 0x4382e7
mov eax, dword [ebp - 0x94]
movzx ebx, al
mov dword [ebp - 0x14], ebx
jmp 0x438325
inc ecx
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x20]
and eax, 0x7fffff
add dword [ebp - 0x28], 8
shl esi, 8
shl eax, 8
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], esi
cmp esi, 0x800000
jbe 0x438292
mov ebx, dword [ebp - 0xa4]
mov edi, dword [ebx + 0x37f0]
cmp edi, 0x3e9
jne 0x438368
mov eax, dword [ebp - 0x7c]
sub eax, dword [ebp - 0x78]
jmp 0x43837b
mov ecx, dword [ebp - 0x28]
bsr eax, esi
sub ecx, eax
mov eax, dword [ebp - 0x7c]
add ecx, 6
sar ecx, 3
sub eax, ecx
lea ecx, [eax - 1]
mov eax, 0x51eb851f
imul dword [ebx + 0x94]
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ecx, eax
cmovge ecx, eax
mov eax, 2
cmp ecx, eax
cmovl ecx, eax
mov eax, 0x101
cmp ecx, 0x101
cmovg ecx, eax
mov dword [ebp - 0x84], ecx
cmp edi, 0x3e9
jne 0x438496
mov edi, 0xff
lea edx, [ecx - 2]
bsr esi, edi
inc esi
cmp esi, 8
jle 0x438471
sub esi, 8
mov ecx, esi
shr edx, cl
shr edi, cl
lea ecx, [ebp - 0x3c]
inc edi
push edi
lea eax, [edx + 1]
push eax
call fcn.00440e10
mov eax, dword [ebp - 0x84]
mov ecx, esi
mov edx, 1
add eax, 0xfffffffe
shl edx, cl
lea ecx, [ebp - 0x3c]
dec edx
push esi
and edx, eax
call fcn.00440f30
add esp, 0xc
mov edi, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x84]
cmp dword [ebp - 0x8c], 0
jne 0x438433
xor ecx, ecx
mov dword [ebx + 0x3804], 0
mov dword [ebp - 0x84], ecx
mov eax, dword [ebx + 0x37f0]
xor edx, edx
cmp eax, 0x3ea
mov esi, 0x11
cmove esi, edx
cmp eax, 0x3e8
jne 0x43849e
bsr eax, dword [ebp - 0x20]
mov edi, dword [ebp - 0x28]
lea ecx, [ebp - 0x3c]
sub edi, eax
add edi, 6
sar edi, 3
mov dword [ebp - 0x88], edi
call fcn.00440fa0
mov dword [ebp - 0x78], edi
jmp 0x4384cc
lea eax, [ecx - 1]
push 0x100
push eax
lea ecx, [ebp - 0x3c]
call fcn.00440e10
add esp, 8
jmp 0x43840f
mov dword [ebp - 0x8c], 0
jmp 0x43840f
mov edi, dword [ebp - 0x78]
jmp 0x438418
mov eax, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x34]
sub eax, ecx
dec eax
cmp eax, edi
push edx
cmovl edi, eax
mov eax, dword [ebp - 0x38]
sub eax, edx
mov dword [ebp - 0x78], edi
add eax, dword [ebp - 0x3c]
push eax
mov eax, edi
sub eax, edx
add eax, dword [ebp - 0x3c]
push eax
call fcn.004674e0
add esp, 0xc
mov dword [ebp - 0x38], edi
cmp dword [ebp - 0x8c], 0
jne 0x4384e5
cmp dword [ebx + 0x37f0], 0x3e8
je 0x43858f
lea eax, [ebp - 0x60]
push eax
push 0x2726
push dword [ebp - 0x80]
call fcn.00446e10
add esp, 0xc
cmp dword [ebp - 0x8c], 0
je 0x43858f
cmp dword [ebp - 0xb0], 0
je 0x43858f
push 0
push 0x271a
push dword [ebp - 0x80]
call fcn.00446e10
push 0
push 0xfa6
push dword [ebp - 0x80]
call fcn.00446e10
mov eax, dword [ebp - 0xac]
mov ecx, dword [ebp - 0x80]
add eax, edi
push 0
push dword [ebp - 0x84]
push eax
mov eax, 0x51eb851f
imul dword [ebx + 0x84]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x70]
push eax
call fcn.00444410
add esp, 0x28
test eax, eax
js 0x438887
lea eax, [ebp - 0x44]
push eax
push 0xfbf
push dword [ebp - 0x80]
call fcn.00446e10
push 0xfbc
push dword [ebp - 0x80]
call fcn.00446e10
add esp, 0x14
push esi
mov esi, dword [ebp - 0x80]
push 0x271a
push esi
call fcn.00446e10
mov ecx, dword [ebx + 0x37f0]
add esp, 0xc
cmp ecx, 0x3e8
je 0x438641
mov eax, dword [ebx + 0x37f4]
cmp ecx, eax
je 0x438604
test eax, eax
jle 0x438604
push 0xfbc
push esi
call fcn.00446e10
push 0
push 2
lea eax, [ebp - 0xc]
mov ecx, esi
push eax
mov eax, 0x51eb851f
imul dword [ebx + 0x84]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 8]
push eax
call fcn.00444410
push 0
push 0x2712
push esi
call fcn.00446e10
add esp, 0x24
mov esi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
bsr eax, esi
sub ecx, eax
lea eax, [edi*8]
dec ecx
cmp ecx, eax
jg 0x438644
mov edx, dword [ebp - 0x70]
lea eax, [ebp - 0x3c]
mov ecx, dword [ebp - 0x80]
push eax
push edi
push 0
push dword [ebp - 0x68]
call fcn.00444410
add esp, 0x10
mov dword [ebp - 0x88], eax
test eax, eax
js 0x438887
mov esi, dword [ebp - 0x20]
cmp dword [ebp - 0x8c], 0
je 0x43871c
cmp dword [ebp - 0xb0], 0
jne 0x43871c
mov ecx, dword [ebx + 0x84]
mov eax, 0x51eb851f
imul ecx
mov eax, 0x51eb851f
sar edx, 6
mov edi, edx
shr edi, 0x1f
add edi, edx
imul ecx
push 0xfbc
push dword [ebp - 0x80]
sar edx, 7
mov esi, edx
shr esi, 0x1f
add esi, edx
call fcn.00446e10
push 0
push 0x271a
push dword [ebp - 0x80]
call fcn.00446e10
push 0
push 0x2712
push dword [ebp - 0x80]
call fcn.00446e10
mov ecx, dword [ebp - 0x80]
lea eax, [ebp - 0xc]
push 0
push 2
push eax
mov eax, dword [ebp - 0x68]
sub eax, esi
sub eax, edi
imul eax, dword [ebx + 0x64]
push esi
mov esi, dword [ebp - 0x70]
lea edx, [esi + eax*4]
call fcn.00444410
mov eax, dword [ebp - 0xac]
add eax, dword [ebp - 0x78]
push 0
push dword [ebp - 0x84]
push eax
mov eax, dword [ebp - 0x68]
sub eax, edi
imul eax, dword [ebx + 0x64]
push edi
lea edx, [esi + eax*4]
mov esi, dword [ebp - 0x80]
mov ecx, esi
call fcn.00444410
add esp, 0x40
test eax, eax
js 0x438887
lea eax, [ebp - 0x44]
push eax
push 0xfbf
push esi
call fcn.00446e10
mov esi, dword [ebp - 0x20]
add esp, 0xc
mov eax, dword [ebx + 0x84]
xor ecx, ecx
mov edi, dword [ebp - 0x68]
cdq
idiv edi
mov edx, dword [ebx + 0x37f0]
mov dword [ebp - 0x6c], ecx
cmp eax, 0x190
jge 0x43874d
nop word [eax + eax]
add eax, eax
inc ecx
cmp eax, 0x190
jl 0x438740
mov dword [ebp - 0x6c], ecx
cmp edx, 0x3e8
jne 0x438767
mov eax, dword [ebp - 0x74]
sub cl, 2
add al, 3
shl cl, 3
shl al, 5
or cl, al
jmp 0x43879f
cmp edx, 0x3ea
jne 0x438790
mov ecx, dword [ebp - 0x74]
xor edx, edx
add ecx, 0xfffffbb2
movzx eax, cl
cmovns edx, eax
or dl, 0xfc
shl dl, 2
or dl, byte [ebp - 0x6c]
shl dl, 3
mov cl, dl
jmp 0x43879f
mov eax, dword [ebp - 0x74]
sub cl, 2
or al, 6
add al, al
or cl, al
shl cl, 3
cmp dword [ebx + 0x37d0], 2
mov edx, dword [ebp - 0xbc]
setne al
dec al
and al, 4
or al, cl
mov byte [edx], al
mov eax, esi
xor eax, dword [ebp - 0x44]
cmp dword [ebp - 0xc0], 0
mov dword [ebx + 0x4728], eax
mov eax, 0x3ea
jne 0x4387d6
mov eax, dword [ebx + 0x37f0]
mov dword [ebx + 0x37f4], eax
mov eax, dword [ebx + 0x37d0]
mov ecx, dword [ebp - 0x28]
mov dword [ebx + 0x37f8], eax
bsr eax, esi
mov esi, dword [ebp - 0x7c]
sub ecx, eax
mov dword [ebx + 0x37fc], edi
dec ecx
mov dword [ebx + 0x3808], 0
lea eax, [esi*8 - 8]
cmp ecx, eax
jle 0x438829
mov eax, dword [ebp - 0xac]
mov byte [eax], 0
mov eax, 1
mov dword [ebx + 0x4728], 0
jmp 0x43885c
cmp dword [ebx + 0x37f0], 0x3e8
mov eax, dword [ebp - 0x88]
jne 0x43885c
cmp dword [ebp - 0x8c], 0
jne 0x43885c
cmp eax, 2
jle 0x43885c
nop dword [eax]
cmp byte [edx + eax], 0
jne 0x43885c
dec eax
cmp eax, 2
jg 0x438850
mov ecx, dword [ebp - 0x84]
inc ecx
add eax, ecx
cmp dword [ebx + 0x88], 0
jne 0x438941
mov ecx, dword [ebp - 0xbc]
mov edx, eax
push esi
call fcn.004414d0
add esp, 4
test eax, eax
je 0x438891
mov eax, 0xfffffffd
jmp 0x438941
mov eax, esi
jmp 0x438941
mov eax, dword [ebx + 0x3800]
mov edi, 0x44d
mov ecx, dword [ebx + 0x37f0]
test eax, eax
cmove eax, edi
test ecx, ecx
mov edi, 0x3e8
cmove ecx, edi
cmp edx, 0x64
mov edi, 0x3ea
cmovg ecx, edi
cmp edx, 0x32
jge 0x4388cd
lea ecx, [edi - 2]
jmp 0x4388d5
cmp ecx, 0x3e8
jne 0x4388e3
cmp eax, 0x44f
jle 0x438907
mov eax, 0x44f
jmp 0x438907
cmp ecx, edi
jne 0x4388f5
cmp eax, 0x44e
jne 0x438907
mov eax, 0x44d
jmp 0x438907
cmp ecx, 0x3e9
jne 0x438907
mov edi, 0x450
cmp eax, edi
cmovle eax, edi
push dword [ebx + 0x37d0]
push eax
call fcn.00434ce0
mov ecx, dword [ebp - 0xac]
add esp, 8
mov byte [ecx], al
mov eax, 1
cmp dword [ebx + 0x88], 0
jne 0x438941
push esi
mov edx, eax
call fcn.004414d0
add esp, 4
test eax, eax
cmove eax, esi
jmp 0x438941
or eax, 0xffffffff
lea esp, [ebp - 0x144]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004661fb
mov esp, ebp
pop ebp
ret