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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x11c
mov esi, dword [esp + 0x144]
mov ebp, dword [esp + 0x140]
mov ebx, dword [esp + 0x130]
mov eax, dword [0x429004]
xor eax, esp
mov dword [esp + 0x118], eax
test esi, esi
je 0x407cd0
xor eax, eax
mov ecx, 0x2000000
cmp ecx, dword [ebx + 0x72c8]
sbb eax, dword [ebx + 0x72cc]
setb al
movzx eax, al
mov dword [esp + 0x50], eax
jmp 0x407cd8
mov dword [esp + 0x50], 1
mov edi, 0xffffffb8
cmp ebp, 0x1ffff
ja 0x40a7d1
mov edi, dword [esp + 0x13c]
push ebp
push edi
push ebx
call fcn.0040bdb0
add esp, 0xc
lea edx, [edi + eax]
xor ecx, ecx
cmp eax, 0xffffff89
cmovae edx, edi
mov edi, eax
cmovb ecx, eax
cmp eax, 0xffffff88
ja 0x40a7d1
sub ebp, ecx
mov ecx, ebx
mov ebx, dword [ebx + 0x7394]
lea eax, [esp + 0x8c]
push ebp
mov dword [esp + 8], edx
push edx
push eax
push ecx
call fcn.0040c180
add esp, 0x10
mov dword [esp], eax
cmp eax, 0xffffff88
ja 0x40a7ce
mov ecx, dword [esp + 0x134]
mov edi, dword [esp + 0x8c]
test ecx, ecx
jne 0x407d62
mov dword [esp], 0xffffffba
test edi, edi
jg 0x40a7ce
mov edx, dword [esp + 0x138]
add dword [esp + 4], eax
sub ebp, eax
test ebx, ebx
mov dword [esp + 0x40], edi
je 0x407ea7
mov ebx, dword [esp + 0x130]
mov dword [ebx + 0x7394], 0
add edx, ecx
mov eax, dword [ebx + 0x7368]
mov dword [esp + 0x90], eax
mov esi, ecx
mov ecx, edx
mov edx, edi
mov edi, dword [ebx + 0x7378]
add edi, eax
test edx, edx
je 0x40a793
mov dword [esp + 0x48], ecx
mov dword [esp + 0x54], edi
mov esi, dword [ebx + 0x72b0]
mov eax, dword [ebx + 0x72b4]
mov dword [esp + 0x60], eax
mov edi, dword [ebx + 0x72b8]
cmp edx, 4
mov dword [ebx + 0x72fc], 1
mov eax, dword [ebx + 0x6834]
mov dword [esp + 0xc8], eax
movsd xmm0, qword [ebx + 0x682c]
movsd qword [esp + 0xc0], xmm0
mov eax, 4
cmovl eax, edx
mov dword [esp + 0x64], eax
mov dword [esp + 0xcc], esi
mov ecx, dword [esp + 0x134]
mov eax, esi
mov dword [esp + 0x44], esi
sub ecx, esi
mov dword [esp + 0x58], ecx
mov dword [esp + 0xd4], ecx
mov dword [esp + 0x5c], edi
mov dword [esp + 0xd0], edi
test ebp, ebp
je 0x40a31a
mov ecx, dword [esp + 4]
mov dword [esp + 0xa0], ecx
lea eax, [ecx + 4]
mov dword [esp + 0xa4], eax
cmp ebp, 4
jb 0x408027
lea eax, [ecx + ebp]
add eax, 0xfffffffc
mov dword [esp + 0x9c], eax
mov esi, dword [ecx + ebp - 4]
mov dword [esp + 0x94], esi
movzx eax, byte [ebp + ecx - 1]
test eax, eax
mov ebx, dword [esp + 0x130]
je 0x40a31a
bsr ecx, eax
xor ecx, 0x1f
add ecx, 0xffffffe9
mov dword [esp + 0x98], ecx
cmp ebp, 0xffffff88
ja 0x40a31a
mov eax, ecx
add ebp, 0xfffffffc
jmp 0x408088
test esi, esi
mov ebx, dword [esp + 0x130]
je 0x407f3d
cmp edi, 5
jl 0x407f42
xor eax, eax
mov ecx, 0x1000000
cmp ecx, dword [ebx + 0x72c8]
mov ecx, dword [esp + 0x134]
sbb eax, dword [ebx + 0x72cc]
jae 0x407f42
mov eax, dword [ebx + 8]
mov ecx, dword [eax + 4]
xor edx, edx
mov esi, 1
nop dword [eax + eax]
xor ebx, ebx
cmp byte [eax + esi*8 + 2], 0x16
seta bl
mov edi, esi
shr edi, cl
add edx, ebx
add esi, 1
test edi, edi
je 0x407ef0
mov al, 8
sub al, cl
mov ecx, eax
shl edx, cl
mov ebx, dword [esp + 0x130]
mov dword [ebx + 0x7394], 0
cmp edx, 0x14
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x138]
mov edi, dword [esp + 0x40]
jae 0x407d8c
jmp 0x407f4c
cmp edi, 5
jge 0x407edb
mov dword [ebx + 0x7394], 0
add edx, ecx
mov eax, dword [ebx + 0x7368]
mov dword [esp + 0xd8], eax
mov esi, dword [ebx + 0x7378]
add esi, eax
mov dword [esp + 0x28], esi
test edi, edi
je 0x408107
mov ecx, dword [ebx + 0x72b0]
mov eax, dword [ebx + 0x72b4]
mov dword [esp + 0x38], eax
mov eax, dword [ebx + 0x72b8]
mov dword [esp + 0x54], eax
mov dword [ebx + 0x72fc], 1
mov eax, dword [ebx + 0x6834]
mov dword [esp + 0xc8], eax
movsd xmm0, qword [ebx + 0x682c]
movsd qword [esp + 0xc0], xmm0
test ebp, ebp
je 0x409001
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0xa0], ecx
lea eax, [ecx + 4]
mov dword [esp + 0xa4], eax
cmp ebp, 4
jb 0x408145
lea eax, [ecx + ebp]
add eax, 0xfffffffc
mov dword [esp + 0x9c], eax
mov edi, dword [ecx + ebp - 4]
mov dword [esp + 0x94], edi
movzx eax, byte [ebp + ecx - 1]
test eax, eax
je 0x409001
mov dword [esp + 0x1c], ebx
bsr ebx, eax
xor ebx, 0x1f
add ebx, 0xffffffe9
mov dword [esp + 0x98], ebx
cmp ebp, 0xffffff88
ja 0x409001
mov esi, edx
add ebp, 0xfffffffc
jmp 0x4083e3
mov dword [esp + 0x9c], ecx
movzx esi, byte [ecx]
mov dword [esp + 0x94], esi
cmp ebp, 2
mov ebx, dword [esp + 0x130]
je 0x408052
cmp ebp, 3
jne 0x408062
movzx eax, byte [ecx + 2]
shl eax, 0x10
or esi, eax
movzx eax, byte [ecx + 1]
shl eax, 8
add esi, eax
mov dword [esp + 0x94], esi
movzx eax, byte [ebp + ecx - 1]
test eax, eax
je 0x40a31a
bsr ecx, eax
xor ecx, 0x1f
shl ebp, 3
sub ecx, ebp
add ecx, 9
mov eax, ecx
mov dword [esp + 0x98], ecx
xor ebp, ebp
mov ecx, dword [ebx]
mov edi, ecx
mov edx, dword [ecx + 4]
add eax, edx
mov ecx, eax
neg cl
mov ebx, esi
shr esi, cl
and esi, dword [edx*4 + 0x421e74]
mov dword [esp + 0x98], eax
mov dword [esp + 0x24], esi
mov dword [esp + 0xa8], esi
mov esi, eax
cmp eax, 0x20
ja 0x4081a7
cmp ebp, 4
jge 0x40817a
test ebp, ebp
mov edx, dword [esp + 4]
je 0x40900d
lea ecx, [edx + ebp]
mov ebx, edx
mov eax, esi
mov edx, esi
shr edx, 3
sub ecx, edx
cmp ecx, ebx
cmovb edx, ebp
sub ebp, edx
lea ecx, [ebx + ebp]
mov dword [esp + 0x9c], ecx
shl edx, 3
sub eax, edx
mov esi, eax
mov dword [esp + 0x98], eax
mov ebx, dword [ebx + ebp]
jmp 0x4081a0
mov edi, ecx
mov ebx, dword [esp + 0x28]
sub ebx, eax
sub edx, edi
mov dword [esp], 0xffffffba
cmp ebx, edx
ja 0x40a7ce
test edi, edi
je 0x408393
mov esi, ebx
push ebx
push eax
push edi
call fcn.0040f900
mov ecx, dword [esp + 0x140]
add esp, 0xc
add edi, ebx
mov eax, edi
jmp 0x408395
mov dword [esp + 0x9c], ecx
movzx edi, byte [ecx]
mov dword [esp + 0x94], edi
cmp ebp, 2
je 0x40839f
cmp ebp, 3
jne 0x4083b5
mov ecx, dword [esp + 4]
movzx eax, byte [ecx + 2]
shl eax, 0x10
or edi, eax
jmp 0x4083a3
mov eax, esi
mov ecx, esi
shr ecx, 3
sub ebp, ecx
mov edx, dword [esp + 4]
lea ecx, [edx + ebp]
mov dword [esp + 0x9c], ecx
and eax, 7
mov esi, eax
mov dword [esp + 0x98], eax
mov ebx, dword [edx + ebp]
mov dword [esp + 0x94], ebx
add edi, 8
mov dword [esp + 0x78], edi
mov dword [esp + 0xac], edi
mov eax, dword [esp + 0x130]
mov ecx, dword [eax + 8]
mov edi, ecx
mov edx, dword [ecx + 4]
mov eax, esi
add eax, edx
mov ecx, eax
neg cl
mov esi, ebx
shr ebx, cl
and ebx, dword [edx*4 + 0x421e74]
mov dword [esp + 0x98], eax
mov dword [esp + 0xb0], ebx
mov dword [esp], eax
cmp eax, 0x20
ja 0x408261
cmp ebp, 4
jge 0x408232
test ebp, ebp
mov edx, dword [esp + 4]
je 0x409014
lea ecx, [edx + ebp]
mov esi, edx
mov eax, dword [esp]
mov edx, eax
shr edx, 3
sub ecx, edx
cmp ecx, esi
cmovb edx, ebp
sub ebp, edx
lea ecx, [esi + ebp]
mov dword [esp + 0x9c], ecx
shl edx, 3
sub eax, edx
mov dword [esp], eax
mov dword [esp + 0x98], eax
mov esi, dword [esi + ebp]
jmp 0x40825a
mov eax, dword [esp]
mov ecx, eax
shr ecx, 3
sub ebp, ecx
mov edx, dword [esp + 4]
lea ecx, [edx + ebp]
mov dword [esp + 0x9c], ecx
and eax, 7
mov dword [esp], eax
mov dword [esp + 0x98], eax
mov esi, dword [edx + ebp]
mov dword [esp + 0x94], esi
add edi, 8
mov dword [esp + 0x74], edi
mov dword [esp + 0xb4], edi
mov ecx, dword [esp + 0x130]
mov edi, dword [ecx + 4]
mov edx, dword [edi + 4]
mov eax, dword [esp]
add eax, edx
mov ecx, eax
neg cl
mov dword [esp + 0xc], esi
shr esi, cl
and esi, dword [edx*4 + 0x421e74]
mov dword [esp + 0x98], eax
mov dword [esp + 0xb8], esi
mov dword [esp], eax
cmp eax, 0x21
jb 0x4082da
add edi, 8
mov dword [esp + 0xbc], edi
mov dword [esp + 0x4c], 0
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
mov edi, esi
cmp esi, dword [esp + 0x64]
jge 0x40989b
jmp 0x40a31a
cmp ebp, 4
mov dword [esp + 0x70], edi
mov dword [esp + 0x34], esi
jge 0x40835b
test ebp, ebp
mov edx, dword [esp + 4]
je 0x40901b
lea ecx, [edx + ebp]
mov esi, edx
mov eax, dword [esp]
mov edx, eax
shr edx, 3
sub ecx, edx
cmp ecx, esi
cmovb edx, ebp
sub ebp, edx
lea ecx, [esi + ebp]
mov dword [esp + 0x9c], ecx
shl edx, 3
sub eax, edx
mov dword [esp + 0x98], eax
mov ecx, dword [esi + ebp]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x94], ecx
lea ecx, [edi + 8]
mov dword [esp + 0xbc], ecx
mov dword [esp + 0x4c], 0
mov dword [esp], eax
cmp eax, 0x20
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x48]
ja 0x4082c5
jmp 0x40902b
mov eax, dword [esp]
mov ecx, eax
shr ecx, 3
sub ebp, ecx
mov edx, dword [esp + 4]
lea ecx, [edx + ebp]
mov dword [esp + 0x9c], ecx
and eax, 7
mov dword [esp], eax
mov dword [esp + 0x98], eax
mov ecx, dword [edx + ebp]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x94], ecx
jmp 0x40901d
xor eax, eax
sub eax, ecx
mov dword [esp], eax
jmp 0x40a7ce
mov ecx, dword [esp + 4]
movzx eax, byte [ecx + 1]
shl eax, 8
add edi, eax
mov dword [esp + 0x94], edi
jmp 0x4083b9
mov ecx, dword [esp + 4]
movzx eax, byte [ebp + ecx - 1]
test eax, eax
je 0x409001
mov esi, edx
mov dword [esp + 0x1c], ebx
bsr ebx, eax
xor ebx, 0x1f
shl ebp, 3
sub ebx, ebp
add ebx, 9
mov dword [esp + 0x98], ebx
xor ebp, ebp
mov eax, dword [esp + 0x130]
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov eax, dword [eax + 4]
add ebx, eax
mov ecx, ebx
neg cl
mov edx, edi
shr edx, cl
and edx, dword [eax*4 + 0x421e74]
mov dword [esp + 0x98], ebx
mov dword [esp + 0xa8], edx
cmp ebx, 0x20
mov dword [esp + 0x48], esi
mov dword [esp + 0x24], edx
ja 0x408485
cmp ebp, 4
jge 0x40845c
test ebp, ebp
je 0x40a859
mov edx, dword [esp + 4]
lea eax, [edx + ebp]
mov ecx, ebx
shr ecx, 3
sub eax, ecx
cmp eax, edx
cmovb ecx, ebp
sub ebp, ecx
lea eax, [edx + ebp]
mov dword [esp + 0x9c], eax
shl ecx, 3
sub ebx, ecx
mov dword [esp + 0x98], ebx
mov edi, dword [edx + ebp]
jmp 0x40847e
mov eax, ebx
shr eax, 3
sub ebp, eax
mov ecx, dword [esp + 4]
lea eax, [ecx + ebp]
mov dword [esp + 0x9c], eax
and ebx, 7
mov dword [esp + 0x98], ebx
mov edi, dword [ecx + ebp]
mov dword [esp + 0x94], edi
mov esi, dword [esp + 0x10]
add esi, 8
mov dword [esp + 0x10], esi
mov dword [esp + 0xac], esi
mov eax, dword [esp + 0x130]
mov eax, dword [eax + 8]
mov dword [esp + 0x14], eax
mov esi, dword [eax + 4]
add ebx, esi
mov ecx, ebx
neg cl
mov eax, edi
shr edi, cl
and edi, dword [esi*4 + 0x421e74]
mov dword [esp + 0x98], ebx
mov dword [esp + 0xb0], edi
cmp ebx, 0x20
mov dword [esp + 0x34], edi
jbe 0x4084d4
mov edi, eax
jmp 0x40853a
cmp ebp, 4
jge 0x408511
test ebp, ebp
je 0x40a860
mov edi, dword [esp + 4]
lea ecx, [edi + ebp]
mov esi, ebx
shr esi, 3
sub ecx, esi
cmp ecx, edi
cmovb esi, ebp
sub ebp, esi
lea ecx, [edi + ebp]
mov dword [esp + 0x9c], ecx
shl esi, 3
sub ebx, esi
mov dword [esp + 0x98], ebx
mov edi, dword [edi + ebp]
jmp 0x408533
mov ecx, ebx
shr ecx, 3
sub ebp, ecx
mov esi, dword [esp + 4]
lea ecx, [esi + ebp]
mov dword [esp + 0x9c], ecx
and ebx, 7
mov dword [esp + 0x98], ebx
mov edi, dword [esi + ebp]
mov dword [esp + 0x94], edi
mov esi, dword [esp + 0x14]
add esi, 8
mov dword [esp + 0xb4], esi
mov ecx, dword [esp + 0x130]
mov eax, dword [ecx + 4]
mov edx, dword [eax + 4]
add ebx, edx
mov ecx, ebx
neg cl
shr edi, cl
and edi, dword [edx*4 + 0x421e74]
mov dword [esp + 0x98], ebx
mov dword [esp + 0xb8], edi
cmp ebx, 0x20
mov dword [esp + 0x20], edi
mov dword [esp + 0x14], esi
jbe 0x408585
mov dword [esp + 8], ebx
jmp 0x4085da
mov ecx, dword [esp + 4]
lea edx, [ecx + ebp]
cmp ebp, 4
jge 0x4085b5
test ebp, ebp
je 0x40857f
mov edi, ebx
shr edi, 3
mov ecx, edx
sub ecx, edi
cmp ecx, dword [esp + 4]
cmovb edi, ebp
sub edx, edi
mov dword [esp + 0x9c], edx
shl edi, 3
sub ebx, edi
jmp 0x4085c6
mov edi, ebx
shr edi, 3
sub edx, edi
mov dword [esp + 0x9c], edx
and ebx, 7
mov dword [esp + 8], ebx
mov dword [esp + 0x98], ebx
mov ecx, dword [edx]
mov dword [esp + 0x94], ecx
add dword [esp + 0x1c], 0x682c
add eax, 8
mov dword [esp + 0xbc], eax
mov ecx, dword [esp + 0x48]
add ecx, 0xffffffe0
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x30]
lea edi, [ecx + 0x10]
mov dword [esp + 0x5c], edi
mov edi, 0xfffffff7
sub edi, ecx
mov dword [esp + 0x58], edi
add ecx, 0x38
mov dword [esp + 0x4c], ecx
mov dword [esp], 0
mov ecx, dword [esp + 0x134]
mov dword [esp + 0xc], ecx
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
mov esi, eax
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x40], edi
mov edi, dword [ecx + eax*8]
mov ecx, dword [ecx + eax*8 + 4]
mov dword [esp + 0x24], ecx
shld ecx, edi, 0x10
mov dword [esp + 0x34], ecx
mov ecx, dword [esi + edx*8]
mov esi, dword [esi + edx*8 + 4]
mov dword [esp + 0x20], esi
shld esi, ecx, 0x10
mov dword [esp + 0x3c], esi
mov esi, dword [ebx + ebp*8]
mov ebp, dword [ebx + ebp*8 + 4]
mov dword [esp + 0x14], ecx
mov eax, ecx
shr eax, 0x10
mov ecx, esi
shr ecx, 0x10
cmp cl, 2
mov dword [esp + 4], edi
mov dword [esp + 0x44], esi
mov dword [esp + 0x10], eax
jb 0x408737
mov edx, ebp
shld edx, esi, 0x10
movzx eax, dl
cmp dword [esp + 0x50], 0
mov ebx, dword [esp + 8]
je 0x408787
cmp cl, 0x19
jb 0x408787
mov esi, ebp
mov edx, 0x20
sub edx, ebx
cmp edx, eax
cmova edx, eax
sub eax, edx
mov ebp, dword [esp + 0x94]
mov edi, ebp
mov ecx, ebx
shl edi, cl
mov ecx, edx
neg cl
shr edi, cl
add edx, ebx
mov ecx, eax
shl edi, cl
mov dword [esp + 0x18], edi
cmp edx, 0x20
ja 0x408890
mov ecx, dword [esp + 0x9c]
cmp ecx, dword [esp + 0xa4]
jae 0x40886f
mov edi, dword [esp + 0xa0]
mov ebx, ecx
sub ebx, edi
je 0x408890
mov dword [esp + 8], edi
mov edi, edx
shr edi, 3
mov ebp, ecx
sub ebp, edi
cmp ebp, dword [esp + 8]
cmovb edi, ebx
sub ecx, edi
mov dword [esp + 0x9c], ecx
shl edi, 3
sub edx, edi
jmp 0x408880
test cl, cl
mov ecx, dword [esp + 8]
je 0x4087fb
cmp dword [esp + 0x24], 1
adc ebp, 0
mov eax, dword [esp + 0x94]
shl eax, cl
shr eax, 0x1f
add ecx, 1
mov edx, ecx
mov dword [esp + 0x98], ecx
add eax, ebp
cmp eax, 3
jne 0x408810
mov edi, dword [esp + 0xc0]
add edi, 0xffffffff
cmp edi, 1
adc edi, 0
mov ebx, dword [esp + 0x3c]
jmp 0x408826
mov edi, dword [esp + 0x94]
mov ecx, ebx
shl edi, cl
neg dl
mov ecx, edx
shr edi, cl
add eax, ebx
add edi, ebp
cmp eax, 0x20
ja 0x4088d1
mov ecx, dword [esp + 0x9c]
cmp ecx, dword [esp + 0xa4]
jae 0x4088b0
mov ebp, edi
mov esi, dword [esp + 0xa0]
mov edx, ecx
sub edx, esi
je 0x4087f4
mov edi, eax
shr edi, 3
mov ebx, ecx
sub ebx, edi
cmp ebx, esi
cmovb edi, edx
sub ecx, edi
mov dword [esp + 0x9c], ecx
shl edi, 3
sub eax, edi
mov dword [esp + 0x98], eax
mov ecx, dword [ecx]
mov dword [esp + 0x94], ecx
mov edi, ebp
jmp 0x4088d1
mov edx, ecx
cmp dword [esp + 0x24], 0
je 0x40884e
mov edi, dword [esp + 0xc0]
jmp 0x4088f6
mov edi, dword [esp + eax*4 + 0xc0]
cmp edi, 1
adc edi, 0
cmp eax, 1
mov ebx, dword [esp + 0x3c]
je 0x408834
mov eax, dword [esp + 0xc4]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc0], edi
jmp 0x4088fa
mov eax, dword [esp + 0xc0]
mov edi, dword [esp + 0xc4]
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc0], edi
jmp 0x4088f6
mov edi, edx
shr edi, 3
sub ecx, edi
mov dword [esp + 0x9c], ecx
and edx, 7
mov dword [esp + 0x98], edx
mov ebp, dword [ecx]
mov dword [esp + 0x94], ebp
mov ecx, dword [esp + 0x18]
add ecx, esi
mov edi, ecx
test eax, eax
je 0x4088ac
mov ecx, edx
shl ebp, cl
mov ecx, eax
neg cl
shr ebp, cl
add eax, edx
add edi, ebp
jmp 0x4088d1
mov eax, edx
jmp 0x4088d1
mov edx, eax
shr edx, 3
sub ecx, edx
mov dword [esp + 0x9c], ecx
and eax, 7
mov dword [esp + 0x98], eax
mov ecx, dword [ecx]
mov dword [esp + 0x94], ecx
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0xc4]
mov dword [esp + 0xc8], edx
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc0], edi
mov edx, eax
mov ebx, dword [esp + 0x3c]
movzx ecx, byte [esp + 0x34]
movzx eax, bl
mov dword [esp + 8], ecx
lea ebp, [eax + ecx]
cmp byte [esp + 0x10], 0
je 0x408933
mov esi, edi
mov edi, dword [esp + 0x94]
mov ecx, edx
shl edi, cl
neg bl
mov ecx, ebx
mov ebx, edx
shr edi, cl
add ebx, eax
add edi, dword [esp + 0x20]
mov dword [esp + 0x10], edi
mov edi, esi
jmp 0x40893d
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], eax
mov ebx, edx
mov eax, dword [esp + 4]
shr eax, 0x10
cmp ebp, 0x14
mov dword [esp + 0x18], edi
mov edx, dword [esp + 0x24]
jb 0x4089b9
cmp ebx, 0x20
ja 0x4089b9
mov ebp, dword [esp + 0x9c]
cmp ebp, dword [esp + 0xa4]
jae 0x408997
mov edi, dword [esp + 0xa0]
mov esi, ebp
sub esi, edi
je 0x4089b9
mov edx, ebx
shr ebx, 3
mov ecx, ebp
sub ecx, ebx
cmp ecx, edi
cmovb ebx, esi
sub ebp, ebx
mov dword [esp + 0x9c], ebp
shl ebx, 3
sub edx, ebx
mov ebx, edx
mov edx, dword [esp + 0x24]
jmp 0x4089a8
mov edi, ebx
shr edi, 3
sub ebp, edi
mov dword [esp + 0x9c], ebp
and ebx, 7
mov dword [esp + 0x98], ebx
mov ecx, dword [ebp]
mov dword [esp + 0x94], ecx
test al, al
je 0x4089dc
mov eax, dword [esp + 0x94]
mov ecx, ebx
shl eax, cl
mov ecx, dword [esp + 0x34]
neg cl
shr eax, cl
add ebx, dword [esp + 8]
add eax, edx
mov dword [esp + 0x24], eax
jmp 0x4089e0
mov dword [esp + 0x24], edx
mov eax, dword [esp + 4]
shld edx, eax, 8
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
shld ecx, eax, 8
mov eax, ecx
cmp ebx, 0x20
ja 0x408a63
mov ebp, edx
mov ecx, dword [esp + 0x9c]
cmp ecx, dword [esp + 0xa4]
jae 0x408a40
mov edi, dword [esp + 0xa0]
mov edx, ecx
sub edx, edi
je 0x408a61
mov esi, ebx
shr esi, 3
mov dword [esp + 8], ebx
mov ebx, ecx
sub ebx, esi
cmp ebx, edi
mov ebx, dword [esp + 8]
cmovb esi, edx
sub ecx, esi
mov dword [esp + 0x9c], ecx
shl esi, 3
sub ebx, esi
jmp 0x408a51
mov edx, ebx
shr edx, 3
sub ecx, edx
mov dword [esp + 0x9c], ecx
and ebx, 7
mov dword [esp + 0x98], ebx
mov ecx, dword [ecx]
mov dword [esp + 0x94], ecx
mov edx, ebp
movzx esi, dl
add ebx, esi
mov edx, dword [esp + 0x94]
mov ecx, ebx
neg cl
mov edi, edx
shr edi, cl
and edi, dword [esi*4 + 0x421e74]
movzx esi, word [esp + 4]
movzx eax, al
add ebx, eax
mov ecx, ebx
neg cl
mov ebp, edx
shr ebp, cl
add esi, edi
mov dword [esp + 0xa8], esi
and ebp, dword [eax*4 + 0x421e74]
movzx ecx, word [esp + 0x14]
add ecx, ebp
mov dword [esp + 0xb8], ecx
cmp ebx, 0x20
ja 0x408b0f
mov ecx, dword [esp + 0x9c]
cmp ecx, dword [esp + 0xa4]
jae 0x408aee
mov edi, dword [esp + 0xa0]
mov ebp, ecx
sub ebp, edi
je 0x408b0f
mov edx, ebx
shr edx, 3
mov esi, ecx
sub esi, edx
cmp esi, edi
cmovb edx, ebp
sub ecx, edx
mov dword [esp + 0x9c], ecx
shl edx, 3
sub ebx, edx
jmp 0x408aff
mov edx, ebx
shr edx, 3
sub ecx, edx
mov dword [esp + 0x9c], ecx
and ebx, 7
mov dword [esp + 0x98], ebx
mov edx, dword [ecx]
mov dword [esp + 0x94], edx
mov ebp, dword [esp + 0xc]
mov eax, dword [esp + 0x44]
mov esi, eax
shr esi, 0x18
add ebx, esi
mov ecx, ebx
neg cl
shr edx, cl
and edx, dword [esi*4 + 0x421e74]
mov dword [esp + 0x98], ebx
movzx ecx, ax
add ecx, edx
mov dword [esp + 0xb0], ecx
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x24]
add eax, ebx
lea ecx, [eax + ebp]
cmp ecx, dword [esp + 0x2c]
ja 0x408b72
mov edx, dword [esp + 0xd8]
lea ecx, [edx + ebx]
cmp ecx, dword [esp + 0x28]
ja 0x408b72
mov esi, dword [esp + 0x48]
sub esi, ebp
lea edi, [eax + 0x20]
cmp esi, edi
jae 0x408c3a
mov ecx, ebp
mov edx, dword [esp + 0x48]
push dword [esp + 0x54]
push dword [esp + 0x3c]
push dword [esp + 0x38]
push dword [esp + 0x34]
lea esi, [esp + 0xe8]
push esi
push dword [esp + 0x2c]
push dword [esp + 0x28]
push ebx
call fcn.0040dc20
add esp, 0x20
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x98]
mov dword [esp + 8], ecx
cmp ecx, 0x20
jbe 0x408bc2
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0xc]
jmp 0x408d2b
mov ebx, edx
mov ecx, dword [esp + 0x9c]
cmp ecx, dword [esp + 0xa4]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0xc]
jae 0x408d00
mov esi, dword [esp + 0xa0]
mov edx, ecx
sub edx, esi
je 0x408d29
mov dword [esp + 4], esi
mov esi, dword [esp + 8]
mov ebp, esi
shr ebp, 3
mov ebx, ecx
sub ebx, ebp
cmp ebx, dword [esp + 4]
mov ebx, dword [esp + 0x1c]
cmovb ebp, edx
sub ecx, ebp
mov dword [esp + 0x9c], ecx
shl ebp, 3
sub esi, ebp
mov ebp, ebx
mov edx, dword [esp + 0x40]
mov dword [esp + 8], esi
mov dword [esp + 0x98], esi
mov ecx, dword [ecx]
mov dword [esp + 0x94], ecx
jmp 0x408d2b
mov dword [esp + 4], eax
mov eax, ebx
add ebx, ebp
movups xmm0, xmmword [edx]
movups xmmword [ebp], xmm0
cmp eax, 0x11
jb 0x408c8f
add eax, 0xfffffff0
movups xmm0, xmmword [edx + 0x10]
mov esi, dword [esp + 0xc]
movups xmmword [esi + 0x10], xmm0
cmp eax, 0x11
jl 0x408c8f
mov eax, dword [esp + 0xc]
add eax, 0x20
add edx, 0x30
xor ebp, ebp
nop
movups xmm0, xmmword [edx + ebp - 0x10]
movups xmmword [eax + ebp], xmm0
movups xmm0, xmmword [edx + ebp]
movups xmmword [eax + ebp + 0x10], xmm0
lea esi, [eax + ebp]
add esi, 0x20
add ebp, 0x20
cmp esi, ebx
jb 0x408c70
mov ebp, ebx
mov esi, dword [esp + 0x18]
sub ebp, esi
mov dword [esp + 0xd8], ecx
mov edi, ebx
sub edi, dword [esp + 0x30]
cmp edi, esi
mov edx, dword [esp + 0x40]
jae 0x408d85
mov ecx, ebx
sub ecx, dword [esp + 0x38]
mov eax, 0xffffffec
cmp ecx, esi
jb 0x408ba5
mov esi, dword [esp + 0x30]
sub ebp, esi
mov edx, dword [esp + 0x54]
lea eax, [edx + ebp]
mov ecx, dword [esp + 0x10]
add ecx, eax
cmp ecx, edx
jbe 0x408ee0
mov ecx, ebp
neg ecx
push ecx
push eax
push ebx
call fcn.0040f900
add esp, 0xc
sub ebx, ebp
mov edx, dword [esp + 0x10]
add edx, ebp
mov ebp, esi
mov esi, dword [esp + 0x18]
jmp 0x408d89
mov esi, dword [esp + 8]
mov edx, esi
shr edx, 3
sub ecx, edx
mov dword [esp + 0x9c], ecx
and esi, 7
mov dword [esp + 8], esi
mov dword [esp + 0x98], esi
mov ecx, dword [ecx]
mov dword [esp + 0x94], ecx
mov edx, ebx
add edi, eax
cmp eax, 0xffffff89
mov ecx, dword [esp]
cmovae ecx, eax
mov dword [esp], ecx
lea ecx, [edx - 1]
cmovb edx, ecx
test ecx, ecx
je 0x408fe8
cmp eax, 0xffffff88
ja 0x408fe8
mov dword [esp + 0xc], edi
mov edi, edx
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xac]
mov esi, dword [esp + 0xbc]
mov edx, dword [esp + 0xb8]
mov ebx, dword [esp + 0xb4]
mov ebp, dword [esp + 0xb0]
jmp 0x408640
mov edx, dword [esp + 0x10]
cmp esi, 0x10
jb 0x408dcd
movups xmm0, xmmword [ebp]
movups xmmword [ebx], xmm0
cmp edx, 0x11
jl 0x408fd0
add edx, ebx
add ebp, 0x10
mov eax, 0x10
movups xmm0, xmmword [ebp + eax - 0x10]
movups xmmword [ebx + eax], xmm0
movups xmm0, xmmword [ebp + eax]
movups xmmword [ebx + eax + 0x10], xmm0
lea ecx, [ebx + eax]
add ecx, 0x20
add eax, 0x20
cmp ecx, edx
jb 0x408da8
jmp 0x408fd0
cmp esi, 7
ja 0x408e02
mov al, byte [ebp]
mov byte [ebx], al
mov al, byte [ebp + 1]
mov byte [ebx + 1], al
mov al, byte [ebp + 2]
mov byte [ebx + 2], al
mov al, byte [ebp + 3]
mov byte [ebx + 3], al
mov eax, dword [esi*4 + 0x421f14]
mov ecx, dword [ebp + eax]
add ebp, eax
mov dword [ebx + 4], ecx
sub ebp, dword [esi*4 + str._b_b_b_a_b_t_n_v]
jmp 0x408e0b
movsd xmm0, qword [ebp]
movsd qword [ebx], xmm0
cmp edx, 9
jb 0x408fd0
mov dword [esp + 8], edi
lea ecx, [ebp + 8]
mov edi, edx
lea edx, [ebx + 8]
mov eax, edx
sub eax, ecx
mov dword [esp + 0x10], edi
add edi, ebx
cmp eax, 0xf
jg 0x408ef3
mov eax, dword [esp + 8]
cmp esi, eax
mov ebx, edi
mov edi, eax
cmova edi, esi
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x5c]
add esi, eax
mov dword [esp + 0x10], esi
mov esi, edi
mov dword [esp + 0xc], eax
sub esi, eax
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x10]
add esi, eax
cmp ebx, esi
mov dword [esp + 0x14], ebx
cmova esi, ebx
mov eax, dword [esp + 0x58]
add esi, eax
sub esi, edi
mov dword [esp + 0x20], esi
cmp esi, 0x18
jb 0x408ec1
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0x18]
cmp esi, ebx
cmova ebx, esi
mov edi, eax
mov eax, ebx
sub eax, dword [esp + 0xc]
add eax, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
cmp esi, eax
cmova eax, esi
add eax, edi
sub eax, ebx
and eax, 0xfffffff8
lea esi, [eax + ebp]
add esi, 0x10
cmp edx, esi
jae 0x408f3b
add ebx, eax
sub ebx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
add eax, ebx
cmp ecx, eax
jae 0x408f3b
mov eax, dword [esp + 4]
mov edi, dword [esp + 0x14]
movsd xmm0, qword [ecx]
movsd qword [edx], xmm0
add edx, 8
add ecx, 8
cmp edx, edi
jb 0x408ec9
jmp 0x408ba1
push dword [esp + 0x10]
push eax
push ebx
call fcn.0040f900
add esp, 0xc
jmp 0x408fd0
movups xmm0, xmmword [ecx]
movups xmmword [edx], xmm0
cmp dword [esp + 0x10], 0x19
jl 0x408fd0
add ebx, 0x18
add ebp, 0x28
xor eax, eax
mov edx, dword [esp + 0x40]
mov esi, edi
movups xmm0, xmmword [ebp + eax - 0x10]
movups xmmword [ebx + eax], xmm0
movups xmm0, xmmword [ebp + eax]
movups xmmword [ebx + eax + 0x10], xmm0
lea ecx, [ebx + eax]
add ecx, 0x20
add eax, 0x20
cmp ecx, esi
jb 0x408f12
mov eax, dword [esp + 4]
jmp 0x408ba5
mov edi, dword [esp + 0x20]
shr edi, 3
add edi, 1
mov eax, edi
and eax, 0xfffffffc
mov dword [esp + 8], eax
add eax, 0xfffffffc
mov ebx, eax
shr ebx, 2
add ebx, 1
test eax, eax
mov dword [esp + 0x10], ebx
je 0x408fa9
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x4c]
add esi, eax
add esi, dword [esp + 0x24]
mov eax, ebx
and eax, 0xfffffffe
neg eax
xor ebx, ebx
movups xmm0, xmmword [ebp + ebx*8 + 8]
movups xmm1, xmmword [ebp + ebx*8 + 0x18]
movups xmmword [esi + ebx*8 - 0x30], xmm0
movups xmmword [esi + ebx*8 - 0x20], xmm1
movups xmm0, xmmword [ebp + ebx*8 + 0x28]
movups xmm1, xmmword [ebp + ebx*8 + 0x38]
movups xmmword [esi + ebx*8 - 0x10], xmm0
movups xmmword [esi + ebx*8], xmm1
add ebx, 8
add eax, 2
jne 0x408f78
jmp 0x408fab
xor ebx, ebx
test byte [esp + 0x10], 1
je 0x408fc4
movups xmm0, xmmword [ecx + ebx*8]
movups xmm1, xmmword [ecx + ebx*8 + 0x10]
movups xmmword [edx + ebx*8], xmm0
movups xmmword [edx + ebx*8 + 0x10], xmm1
mov eax, dword [esp + 8]
cmp edi, eax
mov edi, dword [esp + 0x14]
jne 0x408fd9
mov eax, dword [esp + 4]
jmp 0x408ba1
lea edx, [edx + eax*8]
lea ecx, [ecx + eax*8]
mov eax, dword [esp + 4]
jmp 0x408ec9
cmp dword [esp], 0xffffff88
mov ecx, dword [esp + 0x134]
ja 0x40a7ce
test edx, edx
je 0x40a7f3
mov dword [esp], 0xffffffec
jmp 0x40a7ce
xor ebp, ebp
jmp 0x4081a7
xor ebp, ebp
jmp 0x408261
xor ebp, ebp
mov edx, dword [esp + 0x48]
lea ecx, [edi + 8]
mov dword [esp + 0xbc], ecx
mov dword [esp + 0x4c], 0
mov ecx, dword [esp + 0x64]
test ecx, ecx
mov edi, 0
cmovns edi, ecx
lea esi, [esp + 0xe4]
mov dword [esp + 0x10], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x38], ebp
mov dword [esp + 0x2c], ebp
mov dword [esp + 8], ebp
mov dword [esp + 0x20], edi
jmp 0x4090df
mov edi, dword [esp + 0xc]
mov ebp, esi
mov edx, dword [esp + 0x84]
mov esi, edx
shr esi, 0x18
add eax, esi
mov ecx, eax
neg cl
mov dword [esp + 0xc], edi
shr edi, cl
and edi, dword [esi*4 + 0x421e74]
movzx ebx, dx
add ebx, edi
mov esi, dword [esp + 0x88]
mov ecx, dword [esp + 0x28]
mov dword [esi - 0xc], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esi - 8], ecx
mov ecx, dword [esp + 0x14]
mov dword [esi - 4], ecx
mov dword [esi], ebp
mov dword [esp + 0x98], eax
mov dword [esp + 0xb0], ebx
add dword [esp + 0x4c], 1
add esi, 0x10
mov dword [esp], eax
cmp eax, 0x20
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x30]
ja 0x4082c5
mov ecx, dword [esp + 8]
cmp ecx, 4
mov dword [esp + 0x88], esi
jge 0x409132
test ecx, ecx
je 0x409345
mov esi, dword [esp + 4]
mov ecx, dword [esp + 8]
add ecx, esi
mov eax, dword [esp]
mov edx, eax
shr edx, 3
sub ecx, edx
cmp ecx, esi
cmovb edx, dword [esp + 8]
sub dword [esp + 8], edx
mov ecx, dword [esp + 8]
add ecx, esi
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 8]
shl edx, 3
sub eax, edx
mov edx, dword [esp + 0x48]
jmp 0x409156
mov eax, dword [esp]
mov ecx, eax
shr ecx, 3
sub dword [esp + 8], ecx
mov esi, dword [esp + 4]
mov ecx, dword [esp + 8]
add ecx, esi
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 8]
and eax, 7
mov dword [esp], eax
mov dword [esp + 0x98], eax
mov esi, dword [esi + ecx]
mov dword [esp + 0xc], esi
mov dword [esp + 0x94], esi
mov ebp, ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x2c], ecx
cmp edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
je 0x409894
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x78]
mov edi, dword [esp + 0x24]
mov edx, dword [ecx + edi*8]
mov ecx, dword [ecx + edi*8 + 4]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x24], edx
shld ecx, edx, 0x10
mov edi, dword [esp + 0x70]
mov edx, dword [edi + eax*8 + 8]
mov eax, dword [edi + eax*8 + 0xc]
mov dword [esp + 0x34], eax
shld eax, edx, 0x10
mov dword [esp + 0x3c], edx
shr edx, 0x10
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x74]
mov edi, dword [edx + ebx*8]
mov esi, dword [edx + ebx*8 + 4]
mov ebx, edi
shr ebx, 0x10
mov dword [esp + 0x80], ecx
movzx ecx, cl
mov dword [esp + 0x28], ecx
mov dword [esp + 0x7c], eax
movzx eax, al
mov dword [esp + 0x1c], eax
cmp bl, 2
mov dword [esp + 0x84], edi
jb 0x409265
mov dword [esp + 0x6c], esi
mov edx, esi
shld edx, edi, 0x10
movzx eax, dl
mov dword [esp + 0x14], eax
cmp dword [esp + 0x50], 0
je 0x4092b6
cmp bl, 0x19
jb 0x4092b6
mov edx, 0x20
mov eax, dword [esp]
sub edx, eax
mov ebx, dword [esp + 0x14]
cmp edx, ebx
cmova edx, ebx
sub ebx, edx
mov esi, dword [esp + 0xc]
mov ecx, eax
shl esi, cl
mov ecx, edx
neg cl
shr esi, cl
add edx, eax
mov ecx, ebx
shl esi, cl
mov dword [esp + 0x14], esi
cmp edx, 0x20
jbe 0x4093b4
mov eax, dword [esp + 0x18]
jmp 0x4094a9
test bl, bl
je 0x40934c
mov edx, dword [esp + 0xc]
mov ecx, dword [esp]
shl edx, cl
shr edx, 0x1f
add ecx, 1
mov dword [esp], ecx
mov dword [esp + 0x98], ecx
cmp dword [esp + 0x30], 1
adc edx, 0
add edx, esi
cmp edx, 3
mov eax, dword [esp + 0x68]
jne 0x40936c
mov edx, dword [esp + 0xc0]
add edx, 0xffffffff
cmp edx, 1
adc edx, 0
mov ebx, dword [esp + 0x10]
jmp 0x409384
mov esi, dword [esp + 0xc]
mov eax, dword [esp]
mov ecx, eax
shl esi, cl
neg dl
mov ecx, edx
shr esi, cl
mov ecx, dword [esp + 0x14]
add ecx, eax
add esi, dword [esp + 0x6c]
mov edx, ecx
cmp ecx, 0x20
ja 0x4094cd
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x2c]
cmp eax, 4
mov esi, dword [esp + 4]
mov ebx, dword [esp + 0x10]
jge 0x409427
test eax, eax
je 0x4094d3
mov edi, eax
add eax, esi
mov ecx, edx
shr ecx, 3
sub eax, ecx
cmp eax, esi
cmovb ecx, edi
sub edi, ecx
lea eax, [esi + edi]
mov dword [esp + 0x9c], eax
shl ecx, 3
sub edx, ecx
mov eax, dword [esi + edi]
mov dword [esp + 0xc], eax
mov dword [esp + 0x94], eax
mov ebp, edi
mov ebx, edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 8], edi
jmp 0x4094e3
xor ecx, ecx
jmp 0x409180
cmp dword [esp + 0x30], 0
mov eax, dword [esp + 0x68]
je 0x409401
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x10]
jmp 0x4093ab
mov ecx, dword [esp + edx*4 + 0xc0]
cmp ecx, 1
adc ecx, 0
cmp edx, 1
mov edx, ecx
mov ebx, dword [esp + 0x10]
je 0x409392
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xc8], ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0xc4], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0xc0], edx
mov edi, dword [esp + 0x1c]
jmp 0x409519
mov esi, dword [esp + 0x38]
cmp esi, 4
mov eax, dword [esp + 0x18]
jge 0x409468
test esi, esi
je 0x409877
mov ebp, dword [esp + 4]
lea eax, [esi + ebp]
mov ecx, edx
shr ecx, 3
sub eax, ecx
cmp eax, ebp
cmovb ecx, esi
sub esi, ecx
lea eax, [esi + ebp]
mov dword [esp + 0x9c], eax
shl ecx, 3
sub edx, ecx
mov dword [esp + 0x98], edx
mov eax, dword [ebp + esi]
jmp 0x40948a
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0xc4]
mov dword [esp + 0xc4], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0xc0], edx
mov ebx, dword [esp + 0x10]
jmp 0x4093ab
mov ecx, eax
mov eax, edx
shr eax, 3
sub ecx, eax
lea eax, [esi + ecx]
mov dword [esp + 0x9c], eax
and edx, 7
mov dword [esp + 0x98], edx
mov eax, dword [esi + ecx]
mov dword [esp + 0xc], eax
mov dword [esp + 0x94], eax
mov ebp, ecx
mov ebx, ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 8], ecx
jmp 0x4094e3
mov eax, edx
shr eax, 3
sub esi, eax
mov ecx, dword [esp + 4]
lea eax, [ecx + esi]
mov dword [esp + 0x9c], eax
and edx, 7
mov dword [esp + 0x98], edx
mov eax, dword [ecx + esi]
mov dword [esp + 0xc], eax
mov dword [esp + 0x94], eax
mov ebp, esi
mov dword [esp + 0x10], esi
mov eax, esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x38], esi
mov dword [esp + 8], esi
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x14]
add esi, dword [esp + 0x6c]
test ebx, ebx
je 0x4094cd
mov eax, dword [esp + 0xc]
mov ecx, edx
shl eax, cl
mov ecx, ebx
neg cl
shr eax, cl
add ebx, edx
add esi, eax
mov edx, ebx
mov ebx, dword [esp + 0x10]
jmp 0x4094e7
mov dword [esp + 0x2c], 0
mov dword [esp + 8], 0
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xc4], eax
mov dword [esp + 0x14], esi
mov dword [esp + 0xc0], esi
mov dword [esp], edx
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x28]
lea edx, [edi + ecx]
test al, al
je 0x40954e
mov dword [esp + 0x10], ebx
mov esi, dword [esp + 0xc]
mov eax, dword [esp]
mov ecx, eax
shl esi, cl
mov ecx, dword [esp + 0x7c]
neg cl
shr esi, cl
add eax, edi
mov dword [esp], eax
add esi, dword [esp + 0x34]
mov dword [esp + 0x1c], esi
mov ebx, dword [esp + 0x10]
jmp 0x409556
mov eax, dword [esp + 0x34]
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x24]
shr ecx, 0x10
cmp edx, 0x14
jb 0x4095b4
cmp dword [esp], 0x20
mov edx, dword [esp + 4]
ja 0x409610
mov edi, ebp
mov ebp, dword [esp + 0x18]
cmp ebp, 4
jge 0x4095c6
test ebp, ebp
je 0x4097de
mov edx, dword [esp + 4]
add edx, ebp
mov eax, dword [esp]
mov esi, eax
shr esi, 3
sub edx, esi
cmp edx, dword [esp + 4]
cmovb esi, ebp
sub ebp, esi
mov edx, dword [esp + 4]
add edx, ebp
mov dword [esp + 0x9c], edx
mov edx, dword [esp + 4]
shl esi, 3
sub eax, esi
jmp 0x4095e4
mov edx, dword [esp + 4]
test cl, cl
jne 0x409614
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], edi
jmp 0x40963b
mov eax, dword [esp]
mov edx, eax
shr edx, 3
sub ebp, edx
mov edx, dword [esp + 4]
add edx, ebp
mov dword [esp + 0x9c], edx
mov edx, dword [esp + 4]
and eax, 7
mov dword [esp], eax
mov dword [esp + 0x98], eax
mov esi, dword [edx + ebp]
mov dword [esp + 0xc], esi
mov dword [esp + 0x94], esi
mov edi, ebp
mov ebx, ebp
mov dword [esp + 0x38], ebp
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 8], ebp
test cl, cl
je 0x4095bc
mov esi, dword [esp + 0xc]
mov eax, dword [esp]
mov ecx, eax
shl esi, cl
mov ecx, dword [esp + 0x80]
neg cl
shr esi, cl
add eax, dword [esp + 0x28]
mov dword [esp], eax
mov edi, dword [esp + 0x30]
add esi, edi
mov dword [esp + 0x28], esi
mov ecx, dword [esp + 0x24]
shld edi, ecx, 8
mov ecx, dword [esp + 0x3c]
shld dword [esp + 0x34], ecx, 8
cmp dword [esp], 0x20
jbe 0x409664
mov dword [esp + 0x10], ebx
mov dword [esp + 0x30], ebp
mov eax, dword [esp]
mov ebx, dword [esp + 0xc]
jmp 0x4096d8
cmp ebx, 4
jge 0x40969d
test ebx, ebx
je 0x40980d
lea ecx, [edx + ebx]
mov esi, edx
mov eax, dword [esp]
mov edx, eax
shr edx, 3
sub ecx, edx
cmp ecx, esi
cmovb edx, ebx
sub ebx, edx
lea ecx, [esi + ebx]
mov dword [esp + 0x9c], ecx
shl edx, 3
sub eax, edx
mov ecx, ebx
mov ebx, dword [esi + ebx]
jmp 0x4096b9
mov eax, dword [esp]
mov ecx, eax
shr ecx, 3
sub ebx, ecx
lea ecx, [edx + ebx]
mov dword [esp + 0x9c], ecx
and eax, 7
mov ecx, ebx
mov ebx, dword [edx + ebx]
mov dword [esp + 0x94], ebx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x58]
add edx, dword [esp + 0x28]
cmp dword [esp + 0x14], edx
mov esi, dword [esp + 0x44]
cmova esi, dword [esp + 0x5c]
mov ecx, edi
movzx ebp, cl
add eax, ebp
mov ecx, eax
neg cl
mov edi, ebx
shr edi, cl
and edi, dword [ebp*4 + 0x421e74]
movzx ebp, word [esp + 0x24]
movzx ecx, byte [esp + 0x34]
mov dword [esp], ecx
add eax, ecx
mov ecx, eax
neg cl
mov dword [esp + 0xc], ebx
shr ebx, cl
add ebp, edi
mov ecx, dword [esp]
and ebx, dword [ecx*4 + 0x421e74]
movzx ecx, word [esp + 0x3c]
add ecx, ebx
add esi, edx
sub esi, dword [esp + 0x14]
add edx, dword [esp + 0x1c]
mov dword [esp + 0x58], edx
mov dword [esp + 0xd4], edx
mov dword [esp + 0x24], ebp
mov dword [esp + 0xa8], ebp
mov dword [esp + 0xb8], ecx
cmp eax, 0x20
mov dword [esp + 0x34], ecx
ja 0x409062
mov edx, dword [esp + 0x30]
cmp edx, 4
mov ebp, esi
jge 0x40979f
test edx, edx
je 0x40983e
mov edi, dword [esp + 4]
lea ecx, [edi + edx]
mov esi, eax
shr esi, 3
sub ecx, esi
cmp ecx, edi
cmovb esi, edx
sub edx, esi
lea ecx, [edi + edx]
mov dword [esp + 0x9c], ecx
shl esi, 3
sub eax, esi
mov edi, dword [edi + edx]
jmp 0x4097ba
mov ecx, eax
shr ecx, 3
sub edx, ecx
mov esi, dword [esp + 4]
lea ecx, [esi + edx]
mov dword [esp + 0x9c], ecx
and eax, 7
mov edi, dword [esi + edx]
mov dword [esp + 0x94], edi
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], edx
mov dword [esp + 8], edx
jmp 0x409068
mov dword [esp + 0x18], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 8], 0
mov ebp, edi
test cl, cl
jne 0x409614
jmp 0x4095bc
mov dword [esp + 0x30], ebp
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 8], 0
jmp 0x40965b
mov dword [esp + 0x30], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 8], 0
mov edi, dword [esp + 0xc]
jmp 0x409068
mov dword [esp + 0x38], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 8], 0
jmp 0x4094a9
mov ecx, dword [esp + 0x134]
mov ebx, dword [esp + 0x130]
add ebx, 0x682c
add edx, 0xffffffe0
mov dword [esp + 0x38], edx
mov esi, 0xfffffff7
mov edx, dword [esp + 0x44]
sub esi, edx
mov dword [esp + 0x58], esi
add edx, 0x38
mov dword [esp + 0x4c], edx
mov esi, ecx
mov dword [esp + 0x1c], ebx
cmp dword [esp], 0x21
jae 0x40a312
mov ebp, dword [esp + 0x9c]
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x24], ecx
cmp ebp, ecx
mov dword [esp + 0x20], edi
mov dword [esp + 4], esi
jae 0x409929
mov edx, dword [esp + 0xa0]
mov ecx, ebp
sub ecx, edx
je 0x409951
mov eax, dword [esp]
mov esi, eax
shr esi, 3
mov edi, ebp
sub edi, esi
cmp edi, edx
mov edi, dword [esp + 0x20]
cmovb esi, ecx
sub ebp, esi
mov dword [esp + 0x9c], ebp
shl esi, 3
sub eax, esi
mov esi, dword [esp + 4]
jmp 0x40993d
mov eax, dword [esp]
mov ecx, eax
shr ecx, 3
sub ebp, ecx
mov dword [esp + 0x9c], ebp
and eax, 7
mov dword [esp], eax
mov dword [esp + 0x98], eax
mov ecx, dword [ebp]
mov dword [esp + 0x94], ecx
mov ecx, dword [esp + 0x40]
cmp edi, ecx
jge 0x40a324
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0xac]
mov esi, dword [edx + ecx*8]
mov ecx, dword [edx + ecx*8 + 4]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x34], esi
shld ecx, esi, 0x10
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xb8]
mov ebx, dword [ecx + edx*8]
mov ecx, dword [ecx + edx*8 + 4]
mov dword [esp + 0xc], ecx
shld ecx, ebx, 0x10
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
mov edi, dword [ecx + edx*8]
mov esi, dword [ecx + edx*8 + 4]
mov dword [esp + 0x14], ebx
mov eax, ebx
shr eax, 0x10
mov ecx, edi
shr ecx, 0x10
cmp cl, 2
mov dword [esp + 8], ebp
mov dword [esp + 0x30], edi
jb 0x409a78
mov dword [esp + 0x2c], eax
mov edx, esi
shld edx, edi, 0x10
movzx ebx, dl
cmp dword [esp + 0x50], 0
je 0x409abd
cmp cl, 0x19
jb 0x409abd
mov edx, 0x20
mov eax, dword [esp]
sub edx, eax
cmp edx, ebx
cmova edx, ebx
sub ebx, edx
mov edi, dword [esp + 0x94]
mov ebp, edi
mov ecx, eax
shl ebp, cl
mov ecx, edx
neg cl
shr ebp, cl
add edx, eax
mov ecx, ebx
shl ebp, cl
cmp edx, 0x20
ja 0x409bcb
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0x24]
jae 0x409ba6
mov eax, dword [esp + 0xa0]
mov dword [esp], eax
mov eax, ecx
sub eax, dword [esp]
je 0x409bcb
mov edi, edx
shr edi, 3
mov dword [esp + 0x10], ebp
mov ebp, ecx
sub ebp, edi
cmp ebp, dword [esp]
mov ebp, dword [esp + 0x10]
cmovb edi, eax
sub ecx, edi
mov dword [esp + 0x9c], ecx
shl edi, 3
sub edx, edi
jmp 0x409bb7
test cl, cl
je 0x409ae3
cmp dword [esp + 0x3c], 1
adc esi, 0
mov edx, dword [esp + 0x94]
mov ecx, dword [esp]
shl edx, cl
shr edx, 0x1f
add ecx, 1
mov dword [esp], ecx
mov dword [esp + 0x98], ecx
add edx, esi
cmp edx, 3
jne 0x409afe
mov ebp, dword [esp + 0xc0]
add ebp, 0xffffffff
cmp ebp, 1
adc ebp, 0
mov edx, dword [esp + 0x28]
jmp 0x409b14
mov ebp, dword [esp + 0x94]
mov eax, dword [esp]
mov ecx, eax
shl ebp, cl
neg dl
mov ecx, edx
shr ebp, cl
add ebx, eax
add ebp, esi
cmp ebx, 0x20
jbe 0x409b3c
mov edx, dword [esp + 0x28]
jmp 0x409c12
cmp dword [esp + 0x3c], 0
je 0x409b81
mov ebp, dword [esp + 0xc0]
mov edx, dword [esp + 0x28]
jmp 0x409c3c
mov ebp, dword [esp + edx*4 + 0xc0]
cmp ebp, 1
adc ebp, 0
cmp edx, 1
mov edx, dword [esp + 0x28]
je 0x409b22
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xc8], ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc0], ebp
jmp 0x409c3c
mov edi, dword [esp + 8]
cmp edi, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
jae 0x409bed
mov ecx, dword [esp + 0xa0]
mov eax, edi
sub eax, ecx
je 0x409c12
mov edx, ebx
shr edx, 3
mov esi, edi
sub esi, edx
cmp esi, ecx
cmovb edx, eax
sub edi, edx
mov dword [esp + 0x9c], edi
shl edx, 3
sub ebx, edx
mov edx, dword [esp + 0x28]
jmp 0x409bfe
mov ecx, dword [esp + 0xc0]
mov ebp, dword [esp + 0xc4]
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc0], ebp
mov edx, dword [esp + 0x28]
jmp 0x409c3c
mov eax, edx
shr eax, 3
sub ecx, eax
mov dword [esp + 0x9c], ecx
and edx, 7
mov dword [esp + 0x98], edx
mov dword [esp + 8], ecx
mov edi, dword [ecx]
mov dword [esp + 0x94], edi
add ebp, esi
test ebx, ebx
je 0x409be5
mov ecx, edx
shl edi, cl
mov ecx, ebx
neg cl
shr edi, cl
add ebx, edx
add ebp, edi
mov edx, dword [esp + 0x28]
jmp 0x409c12
mov ebx, edx
mov edx, dword [esp + 0x28]
jmp 0x409c12
mov eax, ebx
shr eax, 3
sub edi, eax
mov dword [esp + 0x9c], edi
and ebx, 7
mov dword [esp + 0x98], ebx
mov dword [esp + 8], edi
mov eax, dword [edi]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc0], ebp
mov dword [esp], ebx
mov eax, dword [esp + 0x2c]
movzx ecx, byte [esp + 0x18]
movzx ebx, dl
mov dword [esp + 0x2c], ecx
lea esi, [ebx + ecx]
test al, al
je 0x409c6e
mov edi, dword [esp + 0x94]
mov eax, dword [esp]
mov ecx, eax
shl edi, cl
neg dl
mov ecx, edx
shr edi, cl
add eax, ebx
mov dword [esp], eax
add edi, dword [esp + 0xc]
jmp 0x409c72
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x34]
mov ecx, ebx
shr ecx, 0x10
cmp esi, 0x14
mov dword [esp + 0x10], ebp
mov dword [esp + 0x28], edi
jb 0x409d18
cmp dword [esp], 0x20
ja 0x409d18
mov edx, dword [esp + 8]
cmp edx, dword [esp + 0x24]
jae 0x409ced
mov ebx, dword [esp + 0xa0]
mov esi, edx
sub esi, ebx
je 0x409ce7
mov eax, dword [esp]
mov edi, eax
shr edi, 3
mov ebp, edx
sub ebp, edi
cmp ebp, ebx
cmovb edi, esi
sub edx, edi
mov dword [esp + 0x9c], edx
shl edi, 3
sub eax, edi
mov edi, dword [esp + 0x28]
mov dword [esp], eax
mov dword [esp + 0x98], eax
mov dword [esp + 8], edx
mov esi, dword [edx]
mov dword [esp + 0x94], esi
mov ebx, dword [esp + 0x34]
jmp 0x409d18
mov eax, dword [esp]
mov esi, eax
shr esi, 3
sub edx, esi
mov dword [esp + 0x9c], edx
and eax, 7
mov dword [esp], eax
mov dword [esp + 0x98], eax
mov dword [esp + 8], edx
mov esi, dword [edx]
mov dword [esp + 0x94], esi
test cl, cl
je 0x409d41
mov esi, dword [esp + 0x94]
mov eax, dword [esp]
mov ecx, eax
shl esi, cl
mov ecx, dword [esp + 0x18]
neg cl
shr esi, cl
add eax, dword [esp + 0x2c]
mov dword [esp], eax
mov ebp, dword [esp + 0x3c]
add esi, ebp
jmp 0x409d47
mov ebp, dword [esp + 0x3c]
mov esi, ebp
shld ebp, ebx, 8
mov ecx, dword [esp + 0x14]
shld dword [esp + 0xc], ecx, 8
cmp dword [esp], 0x20
mov dword [esp + 0x18], esi
ja 0x409dce
mov ebx, dword [esp + 8]
cmp ebx, dword [esp + 0x24]
jae 0x409d9f
mov edx, dword [esp + 0xa0]
mov ecx, ebx
sub ecx, edx
je 0x409dca
mov eax, dword [esp]
mov esi, eax
shr esi, 3
mov edi, ebx
sub edi, esi
cmp edi, edx
mov edi, dword [esp + 0x28]
cmovb esi, ecx
sub ebx, esi
mov dword [esp + 0x9c], ebx
shl esi, 3
sub eax, esi
mov esi, dword [esp + 0x18]
jmp 0x409db3
mov eax, dword [esp]
mov ecx, eax
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x9c], ebx
and eax, 7
mov dword [esp], eax
mov dword [esp + 0x98], eax
mov dword [esp + 8], ebx
mov ecx, dword [ebx]
mov dword [esp + 0x94], ecx
mov ebx, dword [esp + 0x34]
mov ecx, dword [esp + 0xd4]
add ecx, esi
cmp dword [esp + 0x10], ecx
lea edx, [esp + 0xcc]
lea esi, [esp + 0xd0]
cmova edx, esi
mov edx, dword [edx]
add edx, ecx
mov dword [esp + 0x34], edx
add ecx, edi
mov dword [esp + 0xd4], ecx
mov ecx, ebp
movzx esi, cl
mov eax, dword [esp]
add eax, esi
mov edx, dword [esp + 0x94]
mov ecx, eax
neg cl
mov edi, edx
shr edi, cl
and edi, dword [esi*4 + 0x421e74]
movzx esi, bx
movzx ebx, byte [esp + 0xc]
add eax, ebx
mov ecx, eax
neg cl
mov ebp, edx
shr ebp, cl
add esi, edi
mov dword [esp + 0xa8], esi
and ebp, dword [ebx*4 + 0x421e74]
movzx ecx, word [esp + 0x14]
add ecx, ebp
mov dword [esp + 0xb8], ecx
mov ebp, eax
cmp eax, 0x20
jbe 0x409e5a
mov edi, dword [esp + 0x20]
jmp 0x409ebe
mov ebx, dword [esp + 8]
cmp ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
jae 0x409e99
mov esi, dword [esp + 0xa0]
mov ecx, ebx
sub ecx, esi
je 0x409ebe
mov eax, ebp
mov edx, ebp
shr edx, 3
mov edi, ebx
sub edi, edx
cmp edi, esi
mov edi, dword [esp + 0x20]
cmovb edx, ecx
sub ebx, edx
mov dword [esp + 0x9c], ebx
shl edx, 3
sub eax, edx
jmp 0x409eac
mov eax, ebp
mov ecx, ebp
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x9c], ebx
and eax, 7
mov ebp, eax
mov dword [esp + 0x98], eax
mov edx, dword [ebx]
mov dword [esp + 0x94], edx
mov ebx, dword [esp + 0x30]
mov esi, ebx
shr esi, 0x18
mov eax, ebp
add eax, esi
mov ecx, eax
neg cl
shr edx, cl
and edx, dword [esi*4 + 0x421e74]
mov dword [esp + 0x98], eax
movzx eax, bx
add eax, edx
mov dword [esp + 0xb0], eax
and edi, 3
shl edi, 4
mov ebx, dword [esp + edi + 0xd8]
mov ebp, dword [esp + edi + 0xdc]
mov dword [esp + 0xc], edi
mov eax, dword [esp + edi + 0xe0]
mov dword [esp], eax
mov ecx, dword [esp + 0x90]
lea eax, [ecx + ebx]
cmp eax, dword [esp + 0x54]
mov esi, dword [esp + 4]
ja 0x409f42
lea edi, [ebx + ebp]
lea edx, [esi + edi]
cmp edx, dword [esp + 0x38]
ja 0x409f42
mov edx, dword [esp + 0x48]
sub edx, esi
lea esi, [edi + 0x20]
cmp edx, esi
mov esi, dword [esp + 4]
jae 0x409fcc
mov ecx, esi
mov edx, dword [esp + 0x48]
push dword [esp + 0x5c]
push dword [esp + 0x64]
push dword [esp + 0x4c]
push dword [esp + 0x60]
lea eax, [esp + 0xa0]
push eax
push dword [esp + 0x14]
push ebp
push ebx
call fcn.0040dc20
add esp, 0x20
mov edx, eax
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
cmp edx, 0xffffff88
ja 0x40a7ec
mov ebp, dword [esp + 0xc]
lea eax, [esp + ebp]
add eax, 0xd8
mov ecx, dword [esp + 0x18]
mov dword [eax], ecx
mov ecx, dword [esp + 0x28]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x10]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x34]
sub eax, ecx
mov dword [esp + ebp + 0xe4], eax
add esi, edx
add edi, 1
mov eax, dword [esp + 0x98]
mov dword [esp], eax
cmp dword [esp], 0x21
jb 0x4098d5
jmp 0x40a312
mov dword [esp + 8], ebp
mov dword [esp + 0x14], edi
mov edx, esi
add esi, ebx
movups xmm0, xmmword [ecx]
movups xmmword [edx], xmm0
cmp ebx, 0x11
jb 0x40a022
add ebx, 0xfffffff0
movups xmm0, xmmword [ecx + 0x10]
mov edx, dword [esp + 4]
movups xmmword [edx + 0x10], xmm0
cmp ebx, 0x11
jl 0x40a022
mov edx, dword [esp + 4]
add edx, 0x20
add ecx, 0x30
xor ebx, ebx
movups xmm0, xmmword [ecx + ebx - 0x10]
movups xmmword [edx + ebx], xmm0
movups xmm0, xmmword [ecx + ebx]
movups xmmword [edx + ebx + 0x10], xmm0
lea edi, [edx + ebx]
add edi, 0x20
add ebx, 0x20
cmp edi, esi
jb 0x40a003
mov ebx, esi
mov edi, dword [esp]
sub ebx, edi
mov dword [esp + 0x90], eax
mov eax, esi
sub eax, dword [esp + 0x44]
mov dword [esp + 0x24], eax
cmp eax, edi
jae 0x40a086
mov eax, esi
sub eax, dword [esp + 0x60]
cmp eax, edi
jb 0x40a31a
mov edi, dword [esp + 0x44]
sub ebx, edi
mov edx, dword [esp + 0x5c]
lea eax, [edx + ebx]
mov ebp, dword [esp + 8]
lea ecx, [eax + ebp]
cmp ecx, edx
jbe 0x40a0e2
mov ecx, ebx
neg ecx
push ecx
push eax
push esi
call fcn.0040f900
add esp, 0xc
sub esi, ebx
add ebp, ebx
mov dword [esp + 8], ebp
mov ebx, edi
mov edx, dword [esp + 0x14]
mov edi, dword [esp]
jmp 0x40a08a
mov edx, dword [esp + 0x14]
cmp edi, 0x10
jb 0x40a0ab
movups xmm0, xmmword [ebx]
movups xmmword [esi], xmm0
mov ebp, dword [esp + 8]
cmp ebp, 0x11
jge 0x40a102
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
jmp 0x40a252
cmp edi, 7
ja 0x40a134
mov al, byte [ebx]
mov byte [esi], al
mov al, byte [ebx + 1]
mov byte [esi + 1], al
mov al, byte [ebx + 2]
mov byte [esi + 2], al
mov al, byte [ebx + 3]
mov byte [esi + 3], al
mov eax, dword [edi*4 + 0x421f14]
mov ecx, dword [ebx + eax]
add ebx, eax
mov dword [esi + 4], ecx
sub ebx, dword [edi*4 + str._b_b_b_a_b_t_n_v]
jmp 0x40a13c
push ebp
push eax
push esi
call fcn.0040f900
add esp, 0xc
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 4]
mov edx, dword [esp + 0x14]
jmp 0x409f78
add ebp, esi
add ebx, 0x10
mov eax, 0x10
mov edi, dword [esp + 0x20]
movups xmm0, xmmword [ebx + eax - 0x10]
movups xmmword [esi + eax], xmm0
movups xmm0, xmmword [ebx + eax]
movups xmmword [esi + eax + 0x10], xmm0
lea ecx, [esi + eax]
add ecx, 0x20
add eax, 0x20
cmp ecx, ebp
jb 0x40a110
jmp 0x40a24e
movsd xmm0, qword [ebx]
movsd qword [esi], xmm0
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 8]
cmp ebp, 9
jb 0x40a24e
lea ecx, [ebx + 8]
lea edx, [esi + 8]
mov eax, ebp
mov ebp, edx
sub ebp, ecx
mov dword [esp + 8], eax
add eax, esi
mov dword [esp + 0x3c], eax
cmp ebp, 0xf
jg 0x40a209
mov eax, dword [esp]
mov edi, dword [esp + 0x24]
cmp eax, edi
cmova edi, eax
mov eax, dword [esp + 0x44]
add eax, edi
add eax, 0x10
mov esi, dword [esp + 0x3c]
cmp esi, eax
cmova eax, esi
mov ebp, dword [esp + 0x58]
mov dword [esp + 0x30], edi
sub ebp, edi
add ebp, eax
mov dword [esp + 8], ebp
cmp ebp, 0x18
mov ebp, esi
jb 0x40a1e2
mov edi, dword [esp + 0x24]
mov eax, dword [esp]
cmp eax, edi
cmova edi, eax
mov eax, dword [esp + 0x44]
lea esi, [edi + eax]
add esi, 0x10
cmp ebp, esi
cmova esi, ebp
mov eax, dword [esp + 0x58]
sub eax, edi
add eax, esi
and eax, 0xfffffff8
lea esi, [eax + ebx]
add esi, 0x10
cmp edx, esi
jae 0x40a25b
add edi, dword [esp + 0x44]
add eax, edi
add eax, 0x10
cmp ecx, eax
jae 0x40a25b
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 4]
movsd xmm0, qword [ecx]
movsd qword [edx], xmm0
add edx, 8
add ecx, 8
cmp edx, ebp
jb 0x40a1ee
mov edx, dword [esp + 0x14]
jmp 0x409f78
movups xmm0, xmmword [ecx]
movups xmmword [edx], xmm0
cmp dword [esp + 8], 0x19
jge 0x40a21f
mov ebx, dword [esp + 0x1c]
jmp 0x40a0f5
add esi, 0x18
add ebx, 0x28
xor eax, eax
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x3c]
movups xmm0, xmmword [ebx + eax - 0x10]
movups xmmword [esi + eax], xmm0
movups xmm0, xmmword [ebx + eax]
movups xmmword [esi + eax + 0x10], xmm0
lea ecx, [esi + eax]
add ecx, 0x20
add eax, 0x20
cmp ecx, ebp
jb 0x40a22f
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 4]
jmp 0x409f78
mov eax, dword [esp + 8]
shr eax, 3
add eax, 1
mov dword [esp + 8], eax
and eax, 0xfffffffc
mov dword [esp], eax
add eax, 0xfffffffc
mov edi, eax
shr edi, 2
add edi, 1
test eax, eax
mov dword [esp + 0x24], edi
je 0x40a2d3
mov esi, dword [esp + 4]
mov eax, dword [esp + 0x4c]
add eax, esi
mov ebp, dword [esp + 0x30]
sub ebp, esi
add ebp, eax
mov eax, edi
and eax, 0xfffffffe
neg eax
xor esi, esi
mov edi, dword [esp + 0x20]
movups xmm0, xmmword [ebx + esi*8 + 8]
movups xmm1, xmmword [ebx + esi*8 + 0x18]
movups xmmword [ebp + esi*8 - 0x30], xmm0
movups xmmword [ebp + esi*8 - 0x20], xmm1
movups xmm0, xmmword [ebx + esi*8 + 0x28]
movups xmm1, xmmword [ebx + esi*8 + 0x38]
movups xmmword [ebp + esi*8 - 0x10], xmm0
movups xmmword [ebp + esi*8], xmm1
add esi, 8
add eax, 2
jne 0x40a2a1
jmp 0x40a2d9
xor esi, esi
mov edi, dword [esp + 0x20]
test byte [esp + 0x24], 1
je 0x40a2f2
movups xmm0, xmmword [ecx + esi*8]
movups xmm1, xmmword [ecx + esi*8 + 0x10]
movups xmmword [edx + esi*8], xmm0
movups xmmword [edx + esi*8 + 0x10], xmm1
mov eax, dword [esp]
cmp dword [esp + 8], eax
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x3c]
je 0x40a0f5
lea edx, [edx + eax*8]
lea ecx, [ecx + eax*8]
jmp 0x40a1ea
mov ecx, dword [esp + 0x40]
cmp edi, ecx
jge 0x40a324
mov esi, 0xffffffec
jmp 0x40a7cb
sub edi, dword [esp + 0x64]
cmp edi, ecx
jge 0x40a76f
mov eax, dword [esp + 0x44]
lea ecx, [eax + 0x10]
mov dword [esp + 0x24], ecx
mov ecx, 0xfffffff7
sub ecx, eax
mov dword [esp + 0x10], ecx
mov ecx, edi
and ecx, 3
shl ecx, 4
mov eax, dword [esp + ecx + 0xd8]
mov edx, dword [esp + ecx + 0xdc]
mov ecx, dword [esp + ecx + 0xe0]
mov dword [esp], ecx
mov dword [esp + 0x50], edx
lea ebp, [edx + eax]
lea ecx, [esi + ebp]
cmp ecx, dword [esp + 0x38]
ja 0x40a3a5
mov edx, dword [esp + 0x90]
lea ecx, [edx + eax]
cmp ecx, dword [esp + 0x54]
ja 0x40a3a5
mov dword [esp + 4], esi
mov esi, dword [esp + 0x48]
sub esi, dword [esp + 4]
mov dword [esp + 0x20], edi
lea edi, [ebp + 0x20]
cmp esi, edi
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x20]
jae 0x40a3f3
mov ecx, esi
mov edx, dword [esp + 0x48]
push dword [esp + 0x5c]
push dword [esp + 0x64]
push dword [esp + 0x4c]
push dword [esp + 0x60]
lea ebp, [esp + 0xa0]
push ebp
push dword [esp + 0x14]
push dword [esp + 0x68]
push eax
call fcn.0040dc20
add esp, 0x20
mov ebp, eax
cmp ebp, 0xffffff88
ja 0x40a84f
add esi, ebp
add edi, 1
cmp edi, dword [esp + 0x40]
jne 0x40a346
jmp 0x40a76f
mov edi, esi
add esi, eax
movups xmm0, xmmword [edx]
movups xmmword [edi], xmm0
cmp eax, 0x11
jb 0x40a441
add eax, 0xfffffff0
movups xmm0, xmmword [edx + 0x10]
mov edi, dword [esp + 4]
movups xmmword [edi + 0x10], xmm0
cmp eax, 0x11
jl 0x40a441
mov eax, dword [esp + 4]
add eax, 0x20
add edx, 0x30
xor ebx, ebx
movups xmm0, xmmword [edx + ebx - 0x10]
movups xmmword [eax + ebx], xmm0
movups xmm0, xmmword [edx + ebx]
movups xmmword [eax + ebx + 0x10], xmm0
lea edi, [eax + ebx]
add edi, 0x20
add ebx, 0x20
cmp edi, esi
jb 0x40a422
mov ebx, esi
mov edx, dword [esp]
sub ebx, edx
mov dword [esp + 0x90], ecx
mov eax, esi
sub eax, dword [esp + 0x44]
cmp eax, edx
mov dword [esp + 8], eax
jae 0x40a4a5
mov eax, esi
sub eax, dword [esp + 0x60]
cmp eax, edx
jb 0x40a31a
mov edi, dword [esp + 0x44]
sub ebx, edi
mov edx, dword [esp + 0x5c]
lea eax, [edx + ebx]
mov edi, dword [esp + 0x50]
lea ecx, [eax + edi]
cmp ecx, edx
jbe 0x40a4fd
mov dword [esp + 0xc], ebp
mov ecx, ebx
neg ecx
push ecx
push eax
push esi
call fcn.0040f900
add esp, 0xc
sub esi, ebx
mov ebp, ebx
add ebp, edi
mov ebx, dword [esp + 0x44]
mov edx, dword [esp]
jmp 0x40a4ad
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 0x50]
cmp edx, 0x10
jb 0x40a4ca
movups xmm0, xmmword [ebx]
movups xmmword [esi], xmm0
cmp ebp, 0x11
jge 0x40a519
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
jmp 0x40a605
cmp edx, 7
ja 0x40a54b
mov al, byte [ebx]
mov byte [esi], al
mov al, byte [ebx + 1]
mov byte [esi + 1], al
mov al, byte [ebx + 2]
mov byte [esi + 2], al
mov al, byte [ebx + 3]
mov byte [esi + 3], al
mov eax, dword [edx*4 + 0x421f14]
mov ecx, dword [ebx + eax]
add ebx, eax
mov dword [esi + 4], ecx
sub ebx, dword [edx*4 + str._b_b_b_a_b_t_n_v]
jmp 0x40a553
push edi
push eax
push esi
call fcn.0040f900
add esp, 0xc
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 4]
jmp 0x40a3d6
add ebp, esi
add ebx, 0x10
mov eax, 0x10
mov edi, dword [esp + 0x20]
movups xmm0, xmmword [ebx + eax - 0x10]
movups xmmword [esi + eax], xmm0
movups xmm0, xmmword [ebx + eax]
movups xmmword [esi + eax + 0x10], xmm0
lea ecx, [esi + eax]
add ecx, 0x20
add eax, 0x20
cmp ecx, ebp
jb 0x40a527
jmp 0x40a601
movsd xmm0, qword [ebx]
movsd qword [esi], xmm0
mov edi, dword [esp + 0x20]
cmp ebp, 9
jb 0x40a601
lea ecx, [ebx + 8]
lea edx, [esi + 8]
mov eax, edx
sub eax, ecx
mov dword [esp + 0x14], eax
lea eax, [esi + ebp]
mov dword [esp + 0x34], eax
cmp dword [esp + 0x14], 0xf
jg 0x40a5f2
mov eax, dword [esp]
mov ebp, dword [esp + 8]
cmp eax, ebp
cmovb ebp, eax
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 4]
lea eax, [esi + eax]
mov dword [esp + 0x3c], eax
mov esi, dword [esp + 8]
mov eax, dword [esp]
cmova esi, eax
mov dword [esp + 0x14], esi
add ebp, dword [esp + 0x50]
add ebp, esi
sub ebp, eax
mov eax, dword [esp + 4]
sub ebp, eax
add ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x24]
add esi, eax
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x14]
sub esi, eax
mov dword [esp + 0x30], esi
mov eax, dword [esp + 0x18]
add esi, eax
cmp ebp, esi
cmovbe ebp, esi
mov esi, dword [esp + 0x10]
add ebp, esi
sub ebp, dword [esp + 0x14]
mov dword [esp + 0x14], ebp
cmp ebp, 0x18
jae 0x40a612
mov esi, dword [esp + 4]
jmp 0x40a677
movups xmm0, xmmword [ecx]
movups xmmword [edx], xmm0
cmp ebp, 0x19
jge 0x40a69a
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 4]
mov ebp, dword [esp + 0xc]
jmp 0x40a3d6
mov esi, dword [esp]
mov ebp, dword [esp + 8]
cmp esi, ebp
mov eax, ebp
cmova eax, esi
mov dword [esp + 0x28], eax
cmovb ebp, esi
mov eax, dword [esp + 0x50]
add eax, ebp
mov ebp, dword [esp + 0x28]
add eax, ebp
sub eax, esi
sub eax, dword [esp + 4]
mov esi, dword [esp + 0x3c]
add esi, eax
mov eax, ebp
sub eax, dword [esp + 4]
add eax, dword [esp + 0x18]
cmp esi, eax
cmova eax, esi
add eax, dword [esp + 0x10]
sub eax, ebp
and eax, 0xfffffff8
lea esi, [ebx + eax]
add esi, 0x10
cmp edx, esi
mov esi, dword [esp + 4]
jae 0x40a6d2
mov ebp, dword [esp + 0x28]
add ebp, eax
sub ebp, esi
mov eax, dword [esp + 0x18]
add eax, ebp
cmp ecx, eax
jae 0x40a6d2
mov ebp, dword [esp + 0xc]
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
movsd xmm0, qword [ecx]
movsd qword [edx], xmm0
add edx, 8
add ecx, 8
cmp edx, eax
jb 0x40a683
jmp 0x40a3d6
add esi, 0x18
add ebx, 0x28
xor eax, eax
mov ebp, dword [esp + 0xc]
mov edx, dword [esp + 0x34]
movups xmm0, xmmword [ebx + eax - 0x10]
movups xmmword [esi + eax], xmm0
movups xmm0, xmmword [ebx + eax]
movups xmmword [esi + eax + 0x10], xmm0
lea ecx, [esi + eax]
add ecx, 0x20
add eax, 0x20
cmp ecx, edx
jb 0x40a6aa
mov ebx, dword [esp + 0x1c]
jmp 0x40a510
mov eax, dword [esp + 0x14]
shr eax, 3
add eax, 1
mov dword [esp + 0x14], eax
and eax, 0xfffffffc
mov dword [esp], eax
add eax, 0xfffffffc
mov edi, eax
shr edi, 2
add edi, 1
test eax, eax
je 0x40a739
mov eax, dword [esp + 0x4c]
add esi, eax
add esi, dword [esp + 0x30]
mov eax, edi
and eax, 0xfffffffe
neg eax
xor ebp, ebp
movups xmm0, xmmword [ebx + ebp*8 + 8]
movups xmm1, xmmword [ebx + ebp*8 + 0x18]
movups xmmword [esi + ebp*8 - 0x30], xmm0
movups xmmword [esi + ebp*8 - 0x20], xmm1
movups xmm0, xmmword [ebx + ebp*8 + 0x28]
movups xmm1, xmmword [ebx + ebp*8 + 0x38]
movups xmmword [esi + ebp*8 - 0x10], xmm0
movups xmmword [esi + ebp*8], xmm1
add ebp, 8
add eax, 2
jne 0x40a708
jmp 0x40a73b
xor ebp, ebp
mov eax, edi
test al, 1
je 0x40a753
movups xmm0, xmmword [ecx + ebp*8]
movups xmm1, xmmword [ecx + ebp*8 + 0x10]
movups xmmword [edx + ebp*8], xmm0
movups xmmword [edx + ebp*8 + 0x10], xmm1
mov edi, dword [esp]
cmp dword [esp + 0x14], edi
je 0x40a4bd
lea edx, [edx + edi*8]
lea ecx, [ecx + edi*8]
mov edi, dword [esp + 0x20]
jmp 0x40a5e9
lea edx, [esp + 0xc0]
mov eax, dword [edx + 8]
mov dword [ebx + 8], eax
movsd xmm0, qword [edx]
movsd qword [ebx], xmm0
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x48]
mov edi, dword [esp + 0x54]
mov edx, dword [esp + 0x134]
sub edi, eax
sub ecx, esi
mov ebx, esi
mov esi, 0xffffffba
cmp edi, ecx
ja 0x40a7cb
test ebx, ebx
je 0x40a7c5
mov esi, ebx
push edi
push eax
push ebx
call fcn.0040f900
mov ecx, dword [esp + 0x140]
add esp, 0xc
add esi, edi
jmp 0x40a7c9
xor esi, esi
mov ecx, edx
sub esi, ecx
mov dword [esp], esi
mov edi, dword [esp]
mov ecx, dword [esp + 0x118]
xor ecx, esp
call fcn.0040eab1
mov eax, edi
add esp, 0x11c
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, edx
mov dword [esp], edx
jmp 0x40a7ce
cmp dword [esp + 8], 0x20
ja 0x40a829
cmp dword [esp + 8], 0x20
jne 0x409001
mov eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0xa4]
jae 0x409001
mov dword [esp], 0xffffffec
cmp eax, dword [esp + 0xa0]
jne 0x40a7ce
lea edx, [esp + 0xc0]
mov eax, dword [edx + 8]
mov dword [ebp + 8], eax
movsd xmm0, qword [edx]
movsd qword [ebp], xmm0
mov eax, dword [esp + 0xd8]
mov edx, dword [esp + 0x48]
jmp 0x408109
mov esi, ebp
mov dword [esp], ebp
jmp 0x40a7ce
xor ebp, ebp
jmp 0x408485
xor ebp, ebp
mov edi, eax
jmp 0x40853a