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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x108
mov edi, dword [esp + 0x12c]
mov ebx, dword [esp + 0x11c]
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x104], eax
cmp dword [esp + 0x130], 0
je 0x407a3f
xor eax, eax
mov ecx, 0x2000000
cmp ecx, dword [ebx + 0x72c8]
sbb eax, dword [ebx + 0x72cc]
setb al
movzx eax, al
mov dword [esp + 0x34], eax
jmp 0x407a47
mov dword [esp + 0x34], 1
mov ebp, 0xffffffb8
cmp edi, 0x1ffff
ja 0x4093c8
mov esi, dword [esp + 0x128]
push edi
push esi
push ebx
call fcn.0040a6e0
add esp, 0xc
mov ebp, eax
cmp eax, 0xffffff88
ja 0x4093c8
add esi, ebp
sub edi, ebp
mov ebp, dword [ebx + 0x7394]
lea eax, [esp + 0x78]
push edi
mov dword [esp + 0xc], esi
push esi
push eax
push ebx
call fcn.0040aa00
add esp, 0x10
mov dword [esp + 0x44], eax
cmp eax, 0xffffff88
ja 0x4093c4
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x120], 0
jne 0x407abe
mov dword [esp + 0x44], 0xffffffba
test ecx, ecx
jg 0x4093c4
add dword [esp + 8], eax
mov esi, edi
sub esi, eax
test ebp, ebp
mov dword [esp + 0x10], ecx
mov dword [esp], esi
je 0x407c0b
mov dword [ebx + 0x7394], 0
mov edx, dword [esp + 0x124]
mov esi, dword [esp + 0x120]
add edx, esi
mov ecx, dword [ebx + 0x7368]
mov dword [esp + 0x7c], ecx
mov ebp, dword [ebx + 0x7378]
add ebp, ecx
mov dword [esp + 4], esi
mov esi, dword [esp + 0x10]
test esi, esi
je 0x409383
mov dword [esp + 0x40], edx
mov dword [esp + 0x50], ebp
mov edx, dword [ebx + 0x72b0]
mov ecx, dword [ebx + 0x72b4]
mov dword [esp + 0x58], ecx
mov ebp, dword [ebx + 0x72b8]
mov dword [ebx + 0x72fc], 1
mov ecx, dword [ebx + 0x6834]
mov dword [esp + 0xb4], ecx
movsd xmm0, qword [ebx + 0x682c]
cmp esi, 4
mov ecx, 4
cmovl ecx, esi
mov dword [esp + 0x64], ecx
movsd qword [esp + 0xac], xmm0
mov dword [esp + 0xb8], edx
mov ebx, dword [esp + 0x120]
mov dword [esp + 0x18], edx
sub ebx, edx
mov dword [esp + 0xc0], ebx
mov dword [esp + 0x4c], ebp
mov dword [esp + 0xbc], ebp
mov dword [esp + 0x44], 0xffffffec
cmp edi, eax
je 0x4093c4
mov ebp, dword [esp + 8]
mov dword [esp + 0x8c], ebp
lea eax, [ebp + 4]
mov dword [esp + 0x90], eax
mov esi, dword [esp]
cmp esi, 4
jb 0x407cbb
lea eax, [esi + ebp]
add eax, 0xfffffffc
mov dword [esp + 0x88], eax
mov edi, dword [ebp + esi - 4]
mov dword [esp + 0x80], edi
cmp edi, 0x1000000
jb 0x4093c4
mov dword [esp + 0x14], ebx
mov eax, edi
shr eax, 0x18
bsr eax, eax
xor eax, 0x1f
add eax, 0xffffffe9
mov dword [esp + 0x84], eax
cmp esi, 0xffffff88
ja 0x4093c4
add esi, 0xfffffffc
jmp 0x407d1a
cmp dword [esp + 0x130], 0
je 0x407c7f
mov ecx, dword [ebx + 0x72cc]
cmp dword [ebx + 0x72c8], 0x1000001
sbb ecx, 0
jb 0x407c84
cmp dword [esp + 0x10], 4
jle 0x407c84
mov edx, dword [ebx + 8]
mov ecx, dword [edx + 4]
xor esi, esi
mov ebp, 1
nop
cmp byte [edx + ebp*8 + 2], 0x17
sbb esi, 0xffffffff
mov ebx, ebp
shr ebx, cl
inc ebp
test ebx, ebx
je 0x407c40
mov dl, 8
sub dl, cl
mov ecx, edx
shl esi, cl
mov ebx, dword [esp + 0x11c]
mov dword [ebx + 0x7394], 0
cmp esi, 0x14
mov edx, dword [esp + 0x124]
mov esi, dword [esp]
jae 0x407ae6
jmp 0x407c95
cmp ecx, 5
jge 0x407c31
mov dword [ebx + 0x7394], 0
mov edx, dword [esp + 0x124]
mov ecx, ebx
mov eax, edx
mov edx, dword [esp + 0x120]
push dword [esp + 0x34]
push dword [esp + 0x14]
push esi
push dword [esp + 0x14]
push eax
call fcn.0040ae90
add esp, 0x14
jmp 0x4093c0
mov dword [esp + 0x88], ebp
movzx eax, byte [ebp]
mov edi, eax
mov dword [esp + 0x80], eax
cmp esi, 2
mov dword [esp + 0x14], ebx
je 0x407ce6
cmp esi, 3
jne 0x407cf6
movzx eax, byte [ebp + 2]
shl eax, 0x10
or edi, eax
movzx eax, byte [ebp + 1]
shl eax, 8
add edi, eax
mov dword [esp + 0x80], edi
movzx eax, byte [esi + ebp - 1]
test eax, eax
je 0x4093c4
bsr eax, eax
xor eax, 0x1f
shl esi, 3
sub eax, esi
add eax, 9
mov dword [esp + 0x84], eax
xor esi, esi
mov ecx, dword [esp + 0x11c]
mov ecx, dword [ecx]
mov dword [esp + 0x6c], ecx
mov edx, dword [ecx + 4]
add eax, edx
mov ecx, eax
neg cl
mov ebx, edi
shr ebx, cl
and ebx, dword [edx*4 + 0x420e74]
mov dword [esp + 0x84], eax
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x94], ebx
cmp eax, 0x20
mov dword [esp + 8], ebp
jbe 0x407d5a
mov ebx, edi
jmp 0x407daf
cmp esi, 4
jge 0x407d89
test esi, esi
je 0x407f90
lea ecx, [esi + ebp]
mov edx, eax
shr edx, 3
sub ecx, edx
cmp ecx, ebp
cmovb edx, esi
sub esi, edx
lea ecx, [esi + ebp]
mov dword [esp + 0x88], ecx
shl edx, 3
sub eax, edx
jmp 0x407d9d
mov ecx, eax
shr ecx, 3
sub esi, ecx
lea ecx, [esi + ebp]
mov dword [esp + 0x88], ecx
and eax, 7
mov dword [esp + 0x84], eax
mov ebx, dword [ebp + esi]
mov dword [esp + 0x80], ebx
mov edi, dword [esp + 0x6c]
add edi, 8
mov dword [esp + 0x6c], edi
mov dword [esp + 0x98], edi
mov ecx, dword [esp + 0x11c]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x68], ecx
mov edx, dword [ecx + 4]
add eax, edx
mov ecx, eax
neg cl
mov ebp, ebx
mov edi, ebx
shr edi, cl
and edi, dword [edx*4 + 0x420e74]
mov dword [esp + 0x84], eax
mov dword [esp + 0x9c], edi
cmp eax, 0x20
mov dword [esp], edi
ja 0x407e57
cmp esi, 4
jge 0x407e2e
test esi, esi
je 0x407f99
mov ebx, dword [esp + 8]
lea ecx, [ebx + esi]
mov edx, eax
shr edx, 3
sub ecx, edx
cmp ecx, ebx
cmovb edx, esi
sub esi, edx
lea ecx, [ebx + esi]
mov dword [esp + 0x88], ecx
shl edx, 3
sub eax, edx
jmp 0x407e46
mov ecx, eax
shr ecx, 3
sub esi, ecx
mov ebx, dword [esp + 8]
lea ecx, [ebx + esi]
mov dword [esp + 0x88], ecx
and eax, 7
mov dword [esp + 0x84], eax
mov ebp, dword [ebx + esi]
mov dword [esp + 0x80], ebp
mov ebx, dword [esp + 0x68]
add ebx, 8
mov dword [esp + 0x68], ebx
mov dword [esp + 0xa0], ebx
mov ecx, dword [esp + 0x11c]
mov ebx, dword [ecx + 4]
mov edx, dword [ebx + 4]
add eax, edx
mov ecx, eax
neg cl
mov dword [esp + 4], ebp
mov edi, ebp
shr edi, cl
and edi, dword [edx*4 + 0x420e74]
mov dword [esp + 0x84], eax
mov dword [esp + 0xa4], edi
cmp eax, 0x21
jb 0x407ed6
add ebx, 8
mov dword [esp + 0xa8], ebx
mov dword [esp + 0x30], 0
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x11c]
mov ebx, ecx
mov ecx, dword [esp + 0x30]
mov esi, ecx
cmp ecx, dword [esp + 0x64]
mov ecx, dword [esp + 0x10]
jge 0x408631
jmp 0x4093c4
mov dword [esp + 0x54], ebx
cmp esi, 4
mov dword [esp + 0x38], edi
jge 0x407f53
test esi, esi
je 0x407fa0
mov ebx, dword [esp + 8]
lea ecx, [ebx + esi]
mov edx, eax
shr edx, 3
sub ecx, edx
cmp ecx, ebx
cmovb edx, esi
sub esi, edx
lea ecx, [ebx + esi]
mov dword [esp + 0x88], ecx
shl edx, 3
sub eax, edx
mov dword [esp + 0x84], eax
mov ecx, dword [ebx + esi]
mov dword [esp + 4], ecx
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x54]
add ecx, 8
mov dword [esp + 0xa8], ecx
mov dword [esp + 0x30], 0
cmp eax, 0x20
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x11c]
mov edi, dword [esp]
ja 0x407ebb
jmp 0x407fb7
mov ecx, eax
shr ecx, 3
sub esi, ecx
mov edx, dword [esp + 8]
lea ecx, [edx + esi]
mov dword [esp + 0x88], ecx
and eax, 7
mov dword [esp + 0x84], eax
mov ecx, dword [edx + esi]
mov dword [esp + 4], ecx
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x54]
add ecx, 8
mov dword [esp + 0xa8], ecx
jmp 0x407fb0
xor esi, esi
mov ebx, edi
jmp 0x407daf
xor esi, esi
jmp 0x407e57
mov ecx, dword [esp + 0x54]
add ecx, 8
mov dword [esp + 0xa8], ecx
xor esi, esi
mov edx, dword [esp + 0x40]
mov edi, dword [esp]
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x30], 0
mov ecx, dword [esp + 0x64]
test ecx, ecx
mov ebx, 0
cmovg ebx, ecx
lea ecx, [esp + 0xd0]
mov dword [esp + 0x60], ecx
mov ebp, ebx
mov dword [esp + 0x24], ebx
jmp 0x408092
mov ecx, eax
shr ecx, 3
sub esi, ecx
mov edi, dword [esp + 8]
lea ecx, [edi + esi]
mov dword [esp + 0x88], ecx
and eax, 7
mov dword [esp], esi
mov ebx, dword [edi + esi]
mov dword [esp + 0x80], ebx
mov edi, dword [esp + 0x5c]
mov esi, edi
shr esi, 0x18
add eax, esi
mov ecx, eax
neg cl
mov dword [esp + 4], ebx
shr ebx, cl
add edx, ebp
and ebx, dword [esi*4 + 0x420e74]
movzx edi, di
add edi, ebx
mov esi, dword [esp + 0x60]
mov ecx, dword [esp + 0x1c]
mov dword [esi - 0xc], ecx
mov ecx, dword [esp + 0xc]
mov dword [esi - 8], ecx
mov ecx, dword [esp + 0x2c]
sub edx, ecx
mov dword [esi - 4], ecx
mov dword [esi], edx
mov dword [esp + 0x84], eax
mov dword [esp + 0x9c], edi
inc dword [esp + 0x30]
add esi, 0x10
mov dword [esp + 0x60], esi
cmp eax, 0x20
mov ecx, dword [esp + 0x11c]
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x24]
mov esi, dword [esp]
ja 0x407ebb
mov ecx, dword [esp + 0x14]
cmp esi, 4
mov dword [esp + 0x70], ecx
jge 0x4080ef
mov dword [esp + 0x20], eax
test esi, esi
je 0x408256
mov eax, dword [esp + 8]
lea ecx, [eax + esi]
mov ebx, edx
mov dword [esp], edi
mov edi, dword [esp + 0x20]
mov edx, edi
shr edx, 3
sub ecx, edx
cmp ecx, eax
cmovb edx, esi
sub esi, edx
lea ecx, [eax + esi]
mov dword [esp + 0x88], ecx
shl edx, 3
sub edi, edx
mov edx, ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x84], edi
mov edi, dword [esp]
mov ebx, dword [eax + esi]
mov eax, esi
jmp 0x40811d
mov ecx, eax
shr ecx, 3
sub esi, ecx
mov ebx, edi
mov edi, eax
mov eax, esi
mov esi, dword [esp + 8]
lea ecx, [esi + eax]
mov dword [esp + 0x88], ecx
and edi, 7
mov dword [esp + 0x20], edi
mov dword [esp + 0x84], edi
mov edi, ebx
mov ebx, dword [esi + eax]
mov dword [esp + 0x80], ebx
cmp ebp, dword [esp + 0x30]
je 0x408620
mov dword [esp], eax
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x3c]
mov edx, dword [ecx + eax*8]
mov dword [esp + 0x28], edx
mov eax, dword [ecx + eax*8 + 4]
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x38]
mov edx, dword [ecx + eax*8 + 8]
mov dword [esp + 0x14], edx
mov edx, dword [ecx + eax*8 + 0xc]
mov ecx, dword [esp + 0x68]
mov ebp, dword [ecx + edi*8]
mov esi, dword [ecx + edi*8 + 4]
mov ecx, ebp
shr ecx, 0x10
cmp cl, 2
mov eax, dword [esp + 0x20]
mov dword [esp + 0x5c], ebp
jb 0x4081eb
mov edi, ebp
mov dword [esp + 0xc], edx
mov edx, dword [esp + 8]
mov ebp, dword [esp]
add ebp, edx
mov edx, esi
shld edx, edi, 0x10
movzx edi, dl
cmp dword [esp + 0x34], 0
mov dword [esp + 0x3c], esi
je 0x408229
cmp cl, 0x19
jb 0x408229
mov dword [esp + 0x74], ebp
mov esi, 0x20
sub esi, eax
cmp esi, edi
mov edx, edi
cmovb edx, esi
mov dword [esp + 0x38], edi
mov ebp, ebx
mov ebx, edi
sub ebx, edx
mov edi, ebp
mov ecx, eax
shl edi, cl
mov ecx, edx
add edx, eax
neg cl
shr edi, cl
mov dword [esp + 0x20], ebx
mov ecx, ebx
shl edi, cl
cmp edx, 0x20
jbe 0x4082a4
mov eax, ebp
jmp 0x40834e
test cl, cl
mov dword [esp + 4], ebx
je 0x40826b
mov ebp, edx
mov edx, ebx
mov ecx, eax
shl edx, cl
shr edx, 0x1f
inc eax
mov dword [esp + 0x84], eax
cmp dword [esp + 0x1c], 1
adc esi, edx
cmp esi, 3
jne 0x408284
mov edi, dword [esp + 0x2c]
lea ecx, [edi - 1]
cmp ecx, 1
adc edi, 0xffffffff
mov edx, ebp
mov esi, dword [esp]
jmp 0x4083b6
mov esi, edi
mov edi, ebx
mov ecx, eax
shl edi, cl
neg dl
mov ecx, edx
shr edi, cl
add eax, esi
add edi, dword [esp + 0x3c]
cmp eax, 0x20
jbe 0x4082db
mov dword [esp + 4], ebx
mov edx, dword [esp + 0xc]
mov esi, dword [esp]
jmp 0x4083b6
xor eax, eax
mov ebx, dword [esp + 4]
cmp ebp, dword [esp + 0x30]
jne 0x40812e
jmp 0x408620
mov edi, dword [esp + 0x48]
cmp dword [esp + 0x1c], 0
mov esi, dword [esp]
je 0x4083c1
mov ebx, esi
jmp 0x4083dd
mov edi, dword [esp + esi*4 + 0xac]
cmp edi, 1
adc edi, 0
cmp esi, 1
mov edx, ebp
mov esi, dword [esp]
jne 0x4083b6
jmp 0x4083c1
mov ebx, dword [esp]
cmp ebx, 4
jge 0x408321
test ebx, ebx
je 0x408607
mov eax, edx
shr eax, 3
mov ecx, dword [esp + 0x74]
sub ecx, eax
mov ebp, dword [esp + 8]
cmp ecx, ebp
cmovb eax, ebx
sub ebx, eax
lea ecx, [ebx + ebp]
mov dword [esp + 0x88], ecx
shl eax, 3
sub edx, eax
jmp 0x408339
mov esi, dword [esp]
cmp esi, 4
mov edx, dword [esp + 0xc]
jge 0x408381
test esi, esi
je 0x408615
mov ecx, eax
shr ecx, 3
sub ebp, ecx
mov ebx, eax
mov eax, esi
mov esi, dword [esp + 8]
cmp ebp, esi
cmovb ecx, eax
sub eax, ecx
lea edx, [esi + eax]
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0xc]
shl ecx, 3
sub ebx, ecx
jmp 0x4083a4
mov eax, edx
shr eax, 3
sub ebx, eax
mov ebp, dword [esp + 8]
lea eax, [ebx + ebp]
mov dword [esp + 0x88], eax
and edx, 7
mov dword [esp + 0x84], edx
mov dword [esp], ebx
mov eax, dword [ebp + ebx]
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0x3c]
add edi, ecx
cmp dword [esp + 0x38], esi
mov dword [esp + 4], eax
jbe 0x408376
mov ecx, edx
shl eax, cl
mov esi, edx
mov edx, dword [esp + 0x20]
mov ecx, edx
neg cl
shr eax, cl
add esi, edx
add edi, eax
mov eax, esi
jmp 0x408378
mov eax, edx
mov esi, dword [esp]
mov edx, dword [esp + 0xc]
jmp 0x4083b6
mov ecx, eax
shr ecx, 3
sub esi, ecx
mov ebx, eax
mov eax, esi
mov esi, dword [esp + 8]
lea ecx, [esi + eax]
mov dword [esp + 0x88], ecx
and ebx, 7
mov dword [esp + 0x84], ebx
mov ecx, dword [esi + eax]
mov esi, eax
mov eax, ebx
mov dword [esp + 4], ecx
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0xb4], ecx
mov ebx, esi
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xac], edi
mov dword [esp + 0x48], ecx
mov dword [esp + 0x2c], edi
mov ebp, edx
mov ecx, dword [esp + 0x14]
shld edx, ecx, 0x10
shr ecx, 0x10
movzx esi, dl
test cl, cl
je 0x40840a
mov edi, dword [esp + 4]
mov ecx, eax
shl edi, cl
neg dl
mov ecx, edx
shr edi, cl
add eax, esi
mov dword [esp + 0x84], eax
add ebp, edi
mov dword [esp + 0xc], ebp
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x28]
shld edx, ebp, 0x10
movzx edi, dl
add esi, edi
cmp esi, 0x14
jb 0x408463
cmp eax, 0x20
mov esi, ebx
ja 0x408465
cmp esi, 4
jge 0x40846b
test esi, esi
je 0x4085e7
mov dword [esp], edi
mov edi, dword [esp + 8]
lea ecx, [edi + esi]
mov esi, eax
shr esi, 3
sub ecx, esi
cmp ecx, edi
cmovb esi, ebx
sub ebx, esi
lea ecx, [edi + ebx]
mov dword [esp + 0x88], ecx
shl esi, 3
sub eax, esi
mov esi, ebx
jmp 0x408486
mov esi, ebx
mov ebx, dword [esp + 4]
jmp 0x408493
mov dword [esp], edi
mov ecx, eax
shr ecx, 3
sub esi, ecx
mov edi, dword [esp + 8]
lea ecx, [edi + esi]
mov dword [esp + 0x88], ecx
and eax, 7
mov ebx, dword [edi + esi]
mov dword [esp + 0x80], ebx
mov edi, dword [esp]
mov dword [esp], esi
mov ecx, ebp
shr ecx, 0x10
test cl, cl
je 0x4084b1
mov esi, ebx
mov ecx, eax
shl esi, cl
neg dl
mov ecx, edx
shr esi, cl
add eax, edi
add dword [esp + 0x1c], esi
mov esi, ebx
mov edi, ebp
shr edi, 0x18
mov ecx, dword [esp + 0x14]
shr ecx, 0x18
cmp eax, 0x20
mov dword [esp + 0x20], ecx
ja 0x408523
mov ebx, dword [esp]
cmp ebx, 4
jge 0x4084fe
test ebx, ebx
je 0x4085f2
mov esi, dword [esp + 8]
lea ecx, [esi + ebx]
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 + 0x88], ecx
shl edx, 3
sub eax, edx
jmp 0x408516
mov ecx, eax
shr ecx, 3
sub ebx, ecx
mov esi, dword [esp + 8]
lea ecx, [esi + ebx]
mov dword [esp + 0x88], ecx
and eax, 7
mov dword [esp], ebx
mov esi, dword [esi + ebx]
mov dword [esp + 0x80], esi
mov ebx, dword [esp + 0x70]
add ebx, dword [esp + 0x1c]
cmp dword [esp + 0x2c], ebx
mov edx, dword [esp + 0x18]
cmova edx, dword [esp + 0x4c]
add eax, edi
mov ecx, eax
neg cl
mov ebp, esi
shr ebp, cl
and ebp, dword [edi*4 + 0x420e74]
mov edi, dword [esp + 0x20]
add eax, edi
mov ecx, eax
neg cl
mov dword [esp + 4], esi
shr esi, cl
and esi, dword [edi*4 + 0x420e74]
movzx edi, word [esp + 0x28]
add edi, ebp
movzx ebp, word [esp + 0x14]
add ebp, esi
mov ecx, dword [esp + 0xc]
add ecx, ebx
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc0], ecx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x94], edi
mov dword [esp + 0xa4], ebp
cmp eax, 0x20
mov dword [esp + 0x38], ebp
jbe 0x4085a5
mov ebp, ebx
mov ebx, dword [esp + 4]
jmp 0x40801e
mov esi, dword [esp]
mov ebp, ebx
cmp esi, 4
jge 0x407ff9
test esi, esi
je 0x4085fe
mov edi, dword [esp + 8]
lea ecx, [edi + esi]
mov esi, eax
shr esi, 3
sub ecx, esi
cmp ecx, edi
cmovb esi, dword [esp]
sub dword [esp], esi
mov ecx, dword [esp]
add ecx, edi
mov dword [esp + 0x88], ecx
shl esi, 3
sub eax, esi
mov esi, dword [esp]
jmp 0x408011
xor esi, esi
mov ebx, dword [esp + 4]
jmp 0x408493
mov dword [esp], 0
jmp 0x408523
mov dword [esp], 0
jmp 0x40859c
mov dword [esp], 0
mov eax, ebp
jmp 0x40834e
mov dword [esp + 4], ebx
xor esi, esi
jmp 0x4083b6
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x11c]
mov esi, ebp
mov eax, dword [esp + 0x20]
add ebx, 0x682c
add edx, 0xffffffe0
mov dword [esp + 0x3c], edx
mov edi, dword [esp + 0x18]
lea edx, [edi + 0x18]
mov dword [esp + 0x5c], edx
mov ebp, dword [esp + 0x120]
mov dword [esp + 0x70], ebx
cmp eax, 0x21
jae 0x408fc7
mov ebx, dword [esp + 0x88]
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x28], ecx
cmp ebx, ecx
mov dword [esp + 4], ebp
mov dword [esp + 0x24], esi
jae 0x4086b6
mov edx, dword [esp + 0x8c]
mov ecx, ebx
sub ecx, edx
je 0x408862
mov esi, eax
shr esi, 3
mov ebp, edi
mov edi, ebx
sub edi, esi
cmp edi, edx
mov edi, ebp
mov ebp, dword [esp + 4]
cmovb esi, ecx
sub ebx, esi
mov dword [esp + 0x88], ebx
shl esi, 3
sub eax, esi
mov esi, dword [esp + 0x24]
jmp 0x4086c7
mov ecx, eax
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x88], ebx
and eax, 7
mov dword [esp + 0x84], eax
mov dword [esp + 0xc], ebx
mov ecx, dword [ebx]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x10]
cmp esi, ecx
jge 0x408fcf
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x98]
mov edi, dword [edx + ecx*8]
mov dword [esp + 0x1c], edi
mov ecx, dword [edx + ecx*8 + 4]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0xa4]
mov edi, dword [ecx + edx*8]
mov dword [esp], edi
mov ebp, dword [ecx + edx*8 + 4]
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x9c]
mov edi, dword [ecx + edx*8]
mov ebx, dword [ecx + edx*8 + 4]
mov ecx, edi
shr ecx, 0x10
cmp cl, 2
mov dword [esp + 0x20], edi
jb 0x4087ad
mov edx, ebx
shld edx, edi, 0x10
movzx edi, dl
cmp dword [esp + 0x34], 0
je 0x4087f6
cmp cl, 0x19
jb 0x4087f6
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], ebp
mov ecx, 0x20
sub ecx, eax
cmp ecx, edi
mov edx, edi
mov dword [esp + 0x38], ecx
cmovb edx, ecx
mov ebx, edi
sub ebx, edx
mov ebp, dword [esp + 0x80]
mov esi, ebp
mov ecx, eax
shl esi, cl
mov ecx, edx
add edx, eax
neg cl
shr esi, cl
mov dword [esp + 0x60], ebx
mov ecx, ebx
shl esi, cl
mov dword [esp + 0x14], esi
cmp edx, 0x20
jbe 0x4088bc
mov ebx, dword [esp + 0x30]
jmp 0x40895b
mov esi, ebx
test cl, cl
mov ebx, dword [esp + 0xc]
je 0x40886b
mov edx, dword [esp + 0x80]
mov ecx, eax
shl edx, cl
shr edx, 0x1f
cmp dword [esp + 8], 1
adc edx, esi
inc eax
mov dword [esp + 0x84], eax
cmp edx, 3
jne 0x408882
mov esi, dword [esp + 0xac]
lea ecx, [esi - 1]
cmp ecx, 1
adc esi, 0xffffffff
jmp 0x408894
mov esi, dword [esp + 0x80]
mov ecx, eax
shl esi, cl
neg dl
mov ecx, edx
shr esi, cl
add edi, eax
add esi, ebx
cmp edi, 0x20
mov ebx, dword [esp + 0xc]
ja 0x408985
cmp ebx, dword [esp + 0x28]
jae 0x40890f
mov ecx, dword [esp + 0x8c]
mov eax, ebx
sub eax, ecx
je 0x408985
mov edx, edi
shr edx, 3
mov ebx, ebp
mov ebp, esi
mov esi, dword [esp + 0xc]
sub esi, edx
cmp esi, ecx
mov esi, ebp
mov ebp, ebx
mov ebx, dword [esp + 0xc]
cmovb edx, eax
sub ebx, edx
mov dword [esp + 0x88], ebx
shl edx, 3
sub edi, edx
jmp 0x408920
mov dword [esp + 0xc], ebx
jmp 0x4086db
cmp dword [esp + 8], 0
je 0x4088ff
mov esi, dword [esp + 0xac]
jmp 0x4089a0
mov esi, dword [esp + edx*4 + 0xac]
cmp esi, 1
adc esi, 0
cmp edx, 1
je 0x4088a2
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0xb4], ecx
mov ecx, dword [esp + 0xac]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xac], esi
jmp 0x4089a0
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x28]
jae 0x408932
mov esi, dword [esp + 0x8c]
mov eax, ecx
sub eax, esi
mov ebx, dword [esp + 0x30]
je 0x40895b
mov dword [esp + 0x48], esi
mov esi, edx
shr esi, 3
mov ebp, ecx
sub ebp, esi
cmp ebp, dword [esp + 0x48]
cmovb esi, eax
sub ecx, esi
mov dword [esp + 0x88], ecx
shl esi, 3
sub edx, esi
jmp 0x408947
mov ecx, dword [esp + 0xac]
mov esi, dword [esp + 0xb0]
jmp 0x4088a9
mov eax, edi
shr eax, 3
sub ebx, eax
mov dword [esp + 0x88], ebx
and edi, 7
mov dword [esp + 0x84], edi
mov eax, dword [ebx]
mov dword [esp + 0x80], eax
jmp 0x408985
mov eax, edx
shr eax, 3
sub ecx, eax
mov dword [esp + 0x88], ecx
and edx, 7
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x84], edx
mov dword [esp + 0xc], ecx
mov ebp, dword [ecx]
mov dword [esp + 0x80], ebp
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x14]
add esi, ebx
cmp edi, eax
jbe 0x40897b
mov ecx, edx
shl ebp, cl
mov eax, dword [esp + 0x60]
mov ecx, eax
neg cl
shr ebp, cl
add edx, eax
add esi, ebp
mov edi, edx
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 0x2c]
movsd xmm0, qword [esp + 0xac]
movsd qword [esp + 0xb0], xmm0
mov dword [esp + 0xac], esi
mov eax, edi
mov dword [esp + 0x14], esi
mov edx, ebp
mov ecx, dword [esp]
shld edx, ecx, 0x10
shr ecx, 0x10
movzx edi, dl
test cl, cl
je 0x4089cc
mov esi, dword [esp + 0x80]
mov ecx, eax
shl esi, cl
neg dl
mov ecx, edx
shr esi, cl
add eax, edi
add ebp, esi
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0x1c]
shld edx, ecx, 0x10
movzx esi, dl
add edi, esi
cmp edi, 0x14
mov dword [esp + 0x2c], ebp
jb 0x408a49
cmp eax, 0x20
ja 0x408a49
cmp ebx, dword [esp + 0x28]
jae 0x408a28
mov edi, dword [esp + 0x8c]
mov ecx, ebx
sub ecx, edi
je 0x408a49
mov dword [esp + 0xc], edi
mov edi, ebx
mov ebp, eax
shr ebp, 3
sub ebx, ebp
cmp ebx, dword [esp + 0xc]
cmovb ebp, ecx
sub edi, ebp
mov dword [esp + 0x88], edi
shl ebp, 3
sub eax, ebp
mov ebx, edi
mov ebp, dword [esp + 0x2c]
jmp 0x408a39
mov ecx, eax
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x88], ebx
and eax, 7
mov dword [esp + 0x84], eax
mov ecx, dword [ebx]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x1c]
shr ecx, 0x10
test cl, cl
je 0x408a6b
mov edi, dword [esp + 0x80]
mov ecx, eax
shl edi, cl
neg dl
mov ecx, edx
shr edi, cl
add eax, esi
add dword [esp + 8], edi
cmp eax, 0x20
jbe 0x408a7a
mov edx, dword [esp + 8]
mov dword [esp + 0xc], ebx
jmp 0x408ae0
cmp ebx, dword [esp + 0x28]
jae 0x408ab7
mov ebp, dword [esp + 0x8c]
mov ecx, ebx
sub ecx, ebp
je 0x408dd7
mov edx, dword [esp + 8]
mov esi, eax
shr esi, 3
mov edi, ebx
sub edi, esi
cmp edi, ebp
cmovb esi, ecx
sub ebx, esi
mov dword [esp + 0x88], ebx
shl esi, 3
sub eax, esi
mov ebp, dword [esp + 0x2c]
jmp 0x408acc
mov edx, dword [esp + 8]
mov ecx, eax
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x88], ebx
and eax, 7
mov dword [esp + 0x84], eax
mov dword [esp + 0xc], ebx
mov ecx, dword [ebx]
mov dword [esp + 0x80], ecx
mov ebx, dword [esp + 0x1c]
mov edi, ebx
shr edi, 0x18
mov esi, dword [esp]
shr esi, 0x18
mov ecx, dword [esp + 0xc0]
mov dword [esp + 8], edx
add ecx, edx
xor edx, edx
cmp dword [esp + 0x14], ecx
seta dl
mov edx, dword [esp + edx*4 + 0xb8]
add edx, ecx
mov dword [esp + 0x30], edx
add ecx, ebp
mov dword [esp + 0xc0], ecx
add eax, edi
mov edx, dword [esp + 0x80]
mov ecx, eax
neg cl
mov ebp, edx
shr ebp, cl
and ebp, dword [edi*4 + 0x420e74]
movzx edi, bx
add eax, esi
mov ecx, eax
neg cl
mov ebx, edx
shr ebx, cl
add edi, ebp
mov dword [esp + 0x94], edi
and ebx, dword [esi*4 + 0x420e74]
movzx ecx, word [esp]
add ecx, ebx
mov dword [esp + 0xa4], ecx
cmp eax, 0x20
jbe 0x408b68
mov ebx, dword [esp + 0x24]
jmp 0x408bc7
mov ebp, dword [esp + 0xc]
cmp ebp, dword [esp + 0x28]
jae 0x408ba1
mov esi, dword [esp + 0x8c]
mov ecx, ebp
sub ecx, esi
mov ebx, dword [esp + 0x24]
je 0x408bc7
mov edx, eax
shr edx, 3
mov edi, ebp
sub edi, edx
cmp edi, esi
cmovb edx, ecx
sub ebp, edx
mov dword [esp + 0x88], ebp
shl edx, 3
sub eax, edx
jmp 0x408bb6
mov ecx, eax
shr ecx, 3
sub ebp, ecx
mov dword [esp + 0x88], ebp
and eax, 7
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x84], eax
mov edx, dword [ebp]
mov dword [esp + 0x80], edx
mov edi, dword [esp + 0x20]
mov esi, edi
shr esi, 0x18
add eax, esi
mov ecx, eax
neg cl
shr edx, cl
and edx, dword [esi*4 + 0x420e74]
mov dword [esp + 0x84], eax
movzx eax, di
add eax, edx
mov dword [esp + 0x9c], eax
and ebx, 3
shl ebx, 4
mov ebp, dword [esp + ebx + 0xc4]
mov eax, dword [esp + ebx + 0xc8]
mov dword [esp], eax
mov eax, dword [esp + ebx + 0xcc]
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x7c]
lea eax, [ecx + ebp]
mov dword [esp + 0xc], eax
cmp eax, dword [esp + 0x50]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x18]
ja 0x408c50
mov eax, dword [esp]
add eax, ebp
lea edx, [esi + eax]
cmp edx, dword [esp + 0x3c]
ja 0x408c50
mov edx, dword [esp + 0x40]
sub edx, esi
lea edi, [eax + 0x20]
cmp edx, edi
mov edi, dword [esp + 0x18]
jae 0x408cd2
mov ecx, esi
mov edx, dword [esp + 0x40]
push dword [esp + 0x4c]
push dword [esp + 0x5c]
push edi
push dword [esp + 0x5c]
lea eax, [esp + 0x8c]
push eax
push dword [esp + 0x30]
push dword [esp + 0x18]
push ebp
call fcn.0040cf60
add esp, 0x20
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
cmp eax, 0xffffff88
ja 0x4093c0
mov ebp, eax
lea eax, [esp + ebx]
add eax, 0xc4
mov edx, dword [esp + 8]
mov dword [eax], edx
mov edx, dword [esp + 0x2c]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x30]
sub edx, edi
mov dword [eax + 8], edi
mov dword [eax + 0xc], edx
add esi, ebp
mov ebp, esi
mov esi, dword [esp + 0x24]
inc esi
mov eax, dword [esp + 0x84]
mov edi, dword [esp + 0x18]
cmp eax, 0x21
jb 0x40865d
jmp 0x408fc7
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], ebx
lea ebx, [esi + ebp]
movups xmm0, xmmword [ecx]
movups xmmword [esi], xmm0
cmp ebp, 0x11
jb 0x408d27
add ebp, 0xfffffff0
movups xmm0, xmmword [ecx + 0x10]
mov eax, dword [esp + 4]
movups xmmword [eax + 0x10], xmm0
cmp ebp, 0x11
jl 0x408d27
mov eax, dword [esp + 4]
lea edx, [eax + 0x20]
add ecx, 0x30
xor esi, esi
movups xmm0, xmmword [ecx + esi - 0x10]
movups xmmword [edx + esi], xmm0
movups xmm0, xmmword [ecx + esi]
movups xmmword [edx + esi + 0x10], xmm0
lea edi, [edx + esi]
add edi, 0x20
add esi, 0x20
cmp edi, ebx
jb 0x408d08
mov edi, ebx
mov ecx, dword [esp + 0x1c]
sub edi, ecx
mov eax, dword [esp + 0xc]
mov dword [esp + 0x7c], eax
mov edx, ebx
sub edx, dword [esp + 0x18]
cmp edx, ecx
mov dword [esp + 0xc], edx
jae 0x408d89
mov eax, ebx
sub eax, dword [esp + 0x58]
cmp eax, ecx
mov esi, dword [esp]
jb 0x4093c4
mov ebp, dword [esp + 0x18]
sub edi, ebp
mov edx, dword [esp + 0x4c]
lea eax, [edx + edi]
lea ecx, [eax + esi]
cmp ecx, edx
jbe 0x408e27
mov ecx, edi
neg ecx
push ecx
push eax
push ebx
call fcn.0040e830
add esp, 0xc
sub ebx, edi
mov eax, esi
mov esi, edi
add esi, eax
mov edi, ebp
jmp 0x408d8c
mov esi, dword [esp]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
cmp edx, 0x10
mov eax, dword [esp + 0x28]
jb 0x408de8
movups xmm0, xmmword [edi]
movups xmmword [ebx], xmm0
cmp esi, 0x11
jl 0x408f25
add esi, ebx
add edi, 0x10
mov eax, 0x10
movups xmm0, xmmword [edi + eax - 0x10]
movups xmmword [ebx + eax], xmm0
movups xmm0, xmmword [edi + eax]
movups xmmword [ebx + eax + 0x10], xmm0
lea ecx, [ebx + eax]
add ecx, 0x20
add eax, 0x20
cmp ecx, esi
jb 0x408db6
jmp 0x408e32
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0xc], ebx
jmp 0x408ae0
cmp edx, 7
ja 0x408e4b
movzx eax, byte [edi]
mov byte [ebx], al
movzx eax, byte [edi + 1]
mov byte [ebx + 1], al
movzx eax, byte [edi + 2]
mov byte [ebx + 2], al
movzx eax, byte [edi + 3]
mov byte [ebx + 3], al
mov eax, dword [edx*4 + 0x420f14]
mov ecx, dword [edi + eax]
add edi, eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 4], ecx
mov ecx, dword [esp + 0x1c]
sub edi, dword [ecx*4 + str._b_b_b_a_b_t_n_v]
jmp 0x408e53
push esi
push eax
push ebx
call fcn.0040e830
add esp, 0xc
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 4]
jmp 0x408c84
movsd xmm0, qword [edi]
movsd qword [ebx], xmm0
cmp esi, 9
jb 0x408f21
lea edx, [edi + 8]
lea ecx, [ebx + 8]
mov ebp, ecx
sub ebp, edx
lea eax, [ebx + esi]
cmp ebp, 0xf
jg 0x408f36
mov dword [esp + 0x38], ebp
mov esi, dword [esp]
add esi, dword [esp + 0x18]
mov dword [esp], esi
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0xc]
cmp esi, ebx
mov ebp, ebx
cmovb ebp, esi
cmova ebx, esi
add ebp, dword [esp]
add ebp, ebx
sub ebp, esi
mov esi, dword [esp + 0x18]
add esi, ebx
add esi, 0x10
cmp ebp, esi
cmovbe ebp, esi
mov dword [esp + 0xc], ebx
mov esi, dword [esp + 0x18]
add ebx, esi
sub ebp, ebx
add ebp, 0xfffffff7
cmp ebp, 0x18
jb 0x408f5a
cmp dword [esp + 0x38], 0x20
jb 0x408f5a
shr ebp, 3
inc ebp
mov dword [esp], ebp
mov ebx, ebp
and ebx, 0xfffffffc
lea ecx, [ecx + ebx*8]
lea edx, [edx + ebx*8]
mov esi, dword [esp + 4]
mov ebp, dword [esp + 0x5c]
add ebp, esi
mov dword [esp + 0x1c], ebp
mov ebp, esi
mov esi, dword [esp + 0xc]
sub esi, ebp
add esi, dword [esp + 0x1c]
xor ebp, ebp
movups xmm0, xmmword [edi + ebp*8 + 8]
movups xmm1, xmmword [edi + ebp*8 + 0x18]
movups xmmword [esi + ebp*8 - 0x10], xmm0
movups xmmword [esi + ebp*8], xmm1
add ebp, 4
cmp ebx, ebp
jne 0x408ef8
cmp dword [esp], ebx
mov esi, dword [esp + 4]
jne 0x408f5e
mov ecx, dword [esp + 0x10]
jmp 0x408f49
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 4]
jmp 0x408c84
movups xmm0, xmmword [edx]
movups xmmword [ecx], xmm0
cmp esi, 0x19
jge 0x408f85
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
jmp 0x408c84
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, eax
jb 0x408f66
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
jmp 0x408c84
add ebx, 0x18
add edi, 0x28
xor ecx, ecx
mov ebp, dword [esp + 4]
movups xmm0, xmmword [edi + ecx - 0x10]
movups xmmword [ebx + ecx], xmm0
movups xmm0, xmmword [edi + ecx]
movups xmmword [ebx + ecx + 0x10], xmm0
lea edx, [ebx + ecx]
add edx, 0x20
add ecx, 0x20
cmp edx, eax
jb 0x408f91
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
mov esi, ebp
jmp 0x408c84
cmp esi, ecx
jl 0x4093c4
sub esi, dword [esp + 0x64]
cmp esi, ecx
jge 0x40935a
lea eax, [edi + 0x10]
mov dword [esp + 0xc], eax
jmp 0x40902d
mov edx, dword [esp + 0x40]
push dword [esp + 0x4c]
push dword [esp + 0x5c]
mov edi, ebx
push ebx
push dword [esp + 0x5c]
lea eax, [esp + 0x8c]
push eax
push dword [esp + 0x48]
push ebp
push esi
call fcn.0040cf60
add esp, 0x20
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x24]
cmp eax, 0xffffff88
ja 0x4093c0
mov ebp, dword [esp + 4]
add ebp, eax
inc esi
cmp esi, ecx
je 0x40935a
mov ebx, edi
mov dword [esp + 0x24], esi
mov eax, esi
and eax, 3
shl eax, 4
mov esi, dword [esp + eax + 0xc4]
mov ecx, ebp
mov ebp, dword [esp + eax + 0xc8]
mov eax, dword [esp + eax + 0xcc]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x7c]
lea edx, [eax + esi]
mov dword [esp + 8], edx
cmp edx, dword [esp + 0x50]
mov dword [esp + 4], ecx
ja 0x408fe4
lea edi, [esi + ebp]
lea edx, [ecx + edi]
cmp edx, dword [esp + 0x3c]
ja 0x408fe4
mov edx, dword [esp + 0x40]
sub edx, ecx
mov dword [esp], edi
mov edi, dword [esp]
add edi, 0x20
cmp edx, edi
mov ebx, dword [esp + 0x18]
jb 0x408fe4
mov dword [esp + 0x1c], ebp
lea edi, [ecx + esi]
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
cmp esi, 0x11
jb 0x4090e3
add esi, 0xfffffff0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x10], xmm0
cmp esi, 0x11
jl 0x4090e3
lea edx, [ecx + 0x20]
add eax, 0x30
xor esi, esi
movups xmm0, xmmword [eax + esi - 0x10]
movups xmmword [edx + esi], xmm0
movups xmm0, xmmword [eax + esi]
movups xmmword [edx + esi + 0x10], xmm0
lea ebx, [edx + esi]
add ebx, 0x20
add esi, 0x20
cmp ebx, edi
jb 0x4090c4
mov ebx, edi
mov ebp, dword [esp + 0x34]
sub ebx, ebp
mov eax, dword [esp + 8]
mov dword [esp + 0x7c], eax
mov eax, edi
sub eax, dword [esp + 0x18]
mov dword [esp + 8], eax
cmp eax, ebp
jae 0x40914e
mov eax, edi
sub eax, dword [esp + 0x58]
cmp eax, ebp
jb 0x4093c4
mov esi, dword [esp + 0x18]
sub ebx, esi
mov edx, dword [esp + 0x4c]
lea eax, [edx + ebx]
mov ebp, dword [esp + 0x1c]
lea ecx, [eax + ebp]
cmp ecx, edx
jbe 0x4091d3
mov ecx, ebx
neg ecx
push ecx
push eax
push edi
call fcn.0040e830
add esp, 0xc
sub edi, ebx
mov eax, esi
mov esi, ebx
add esi, ebp
mov ebx, eax
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x34]
jmp 0x409156
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
cmp ebp, 0x10
jb 0x409198
movups xmm0, xmmword [ebx]
movups xmmword [edi], xmm0
cmp esi, 0x11
jl 0x4092d5
add esi, edi
add ebx, 0x10
mov eax, 0x10
movups xmm0, xmmword [ebx + eax - 0x10]
movups xmmword [edi + eax], xmm0
movups xmm0, xmmword [ebx + eax]
movups xmmword [edi + eax + 0x10], xmm0
lea ecx, [edi + eax]
add ecx, 0x20
add eax, 0x20
cmp ecx, esi
jb 0x409174
jmp 0x4092d1
cmp ebp, 7
ja 0x4091e9
movzx eax, byte [ebx]
mov byte [edi], al
movzx eax, byte [ebx + 1]
mov byte [edi + 1], al
movzx eax, byte [ebx + 2]
mov byte [edi + 2], al
movzx eax, byte [ebx + 3]
mov byte [edi + 3], al
mov eax, dword [ebp*4 + 0x420f14]
mov ecx, dword [ebx + eax]
add ebx, eax
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x10]
sub ebx, dword [ebp*4 + str._b_b_b_a_b_t_n_v]
jmp 0x4091f1
push ebp
push eax
push edi
call fcn.0040e830
add esp, 0xc
mov ecx, dword [esp + 0x10]
mov edi, esi
jmp 0x4092d9
movsd xmm0, qword [ebx]
movsd qword [edi], xmm0
cmp esi, 9
jb 0x4092d5
lea edx, [ebx + 8]
lea ecx, [edi + 8]
mov eax, ecx
sub eax, edx
lea ebp, [edi + esi]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x2c], eax
cmp eax, 0xf
jg 0x4092c6
mov eax, dword [esp + 0x1c]
add eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 8]
cmp ebp, edi
mov esi, edi
cmovb esi, ebp
cmova edi, ebp
add esi, eax
mov eax, edi
add esi, edi
sub esi, ebp
mov edi, dword [esp + 0xc]
add edi, eax
cmp esi, edi
cmovbe esi, edi
mov edi, dword [esp + 0x18]
add edi, eax
sub esi, edi
add esi, 0xfffffff7
cmp esi, 0x18
jb 0x4092ee
cmp dword [esp + 0x2c], 0x20
jb 0x4092ee
shr esi, 3
inc esi
mov dword [esp + 0x34], esi
mov edi, esi
and edi, 0xfffffffc
lea ecx, [ecx + edi*8]
lea edx, [edx + edi*8]
mov ebp, dword [esp + 0x5c]
mov esi, dword [esp + 4]
add ebp, esi
sub eax, dword [esp + 4]
add eax, ebp
xor ebp, ebp
movups xmm0, xmmword [ebx + ebp*8 + 8]
movups xmm1, xmmword [ebx + ebp*8 + 0x18]
movups xmmword [eax + ebp*8 - 0x10], xmm0
movups xmmword [eax + ebp*8], xmm1
add ebp, 4
cmp edi, ebp
jne 0x409289
cmp dword [esp + 0x34], edi
mov esi, dword [esp + 0x24]
mov eax, dword [esp]
jne 0x4092f5
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
cmp eax, 0xffffff88
jbe 0x40901e
jmp 0x4093c0
movups xmm0, xmmword [edx]
movups xmmword [ecx], xmm0
cmp esi, 0x19
jge 0x409321
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x24]
mov eax, dword [esp]
cmp eax, 0xffffff88
jbe 0x40901e
jmp 0x4093c0
mov esi, dword [esp + 0x24]
mov eax, dword [esp]
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x14]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, ebp
jb 0x4092fd
mov ecx, dword [esp + 0x10]
cmp eax, 0xffffff88
jbe 0x40901e
jmp 0x4093c0
add edi, 0x18
add ebx, 0x28
xor ecx, ecx
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
movups xmm0, xmmword [ebx + ecx - 0x10]
movups xmmword [edi + ecx], xmm0
movups xmm0, xmmword [ebx + ecx]
movups xmmword [edi + ecx + 0x10], xmm0
lea edx, [edi + ecx]
add edx, 0x20
add ecx, 0x20
cmp edx, eax
jb 0x409331
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
jmp 0x4092dd
mov dword [esp + 4], ebp
lea ecx, [esp + 0xac]
mov eax, dword [ecx + 8]
mov edx, dword [esp + 0x70]
mov dword [edx + 8], eax
movsd xmm0, qword [ecx]
movsd qword [edx], xmm0
mov ecx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x50]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x120]
sub ebp, ecx
mov edi, dword [esp + 4]
sub edx, edi
mov dword [esp + 0x44], 0xffffffba
cmp ebp, edx
ja 0x4093c4
test edi, edi
je 0x4093ba
push ebp
push ecx
push edi
call fcn.0040e830
mov edx, dword [esp + 0x12c]
add esp, 0xc
add edi, ebp
mov eax, edi
jmp 0x4093be
xor eax, eax
mov edx, esi
sub eax, edx
mov dword [esp + 0x44], eax
mov ebp, dword [esp + 0x44]
mov ecx, dword [esp + 0x104]
xor ecx, esp
call fcn.0040d9a4
mov eax, ebp
add esp, 0x108
pop esi
pop edi
pop ebx
pop ebp
ret